Re: [PATCH v2 2/2] phy dp83867: Make rgmii parameters optional

2016-05-17 Thread Alexander Graf


> Am 17.05.2016 um 22:40 schrieb Dan Murphy :
> 
>> On 05/17/2016 03:37 PM, Alexander Graf wrote:
>> Hi David,
>> 
>>> Am 17.05.2016 um 20:48 schrieb David Miller :
>>> 
>>> From: Dan Murphy 
>>> Date: Tue, 17 May 2016 13:34:34 -0500
>>> 
 David
 
> On 05/17/2016 01:22 PM, David Miller wrote:
> From: Alexander Graf 
> Date: Mon, 16 May 2016 20:52:43 +0200
> 
>> If you compile without OF_MDIO support in an RGMII configuration, we fail
>> to configure the dp83867 phy today by writing garbage into its 
>> configuration
>> registers.
>> 
>> On the other hand if you do compile with OF_MDIO and the phy gets loaded 
>> via
>> device tree, you have to have the properties set in the device tree, 
>> otherwise
>> we fail to load the driver and don't even attach the generic phy driver 
>> to
>> the interface anymore.
>> 
>> To make things slightly more consistent, make the rgmii configuration 
>> properties
>> optional and allow a user to omit them in their device tree.
>> 
>> Signed-off-by: Alexander Graf 
> Applied.
 This patch should not have been applied.
 
 I did not believe the implementation was proper for that driver.
 
 It seems my objection to the code was not seen.  Nor was Andrew's point 
 about the DT bindings document
 
 https://patchwork.kernel.org/patch/9105371/
>>> The discussions around the recent phy patches have been a labrynth that I've
>>> found hard to follow, sorry.
>>> 
>>> I'll revert these two, sigh
>> The first patch is an obvious and correct fix. Discussions were only about 
>> the second one (which I'm happy to drop given the rat hole this turned out 
>> to be).
> 
> So are you going to abandon the second patch all together?
> If you do, let me know I can submit a patch.

I'm fairly sure you'll be done with it much quicker than me and the real bug I 
wanted to fix is that the driver broke with OF_MDIO=m ;)

So yes, please take over from here.


Alex




Re: [PATCH v2 2/2] phy dp83867: Make rgmii parameters optional

2016-05-17 Thread Alexander Graf


> Am 17.05.2016 um 22:40 schrieb Dan Murphy :
> 
>> On 05/17/2016 03:37 PM, Alexander Graf wrote:
>> Hi David,
>> 
>>> Am 17.05.2016 um 20:48 schrieb David Miller :
>>> 
>>> From: Dan Murphy 
>>> Date: Tue, 17 May 2016 13:34:34 -0500
>>> 
 David
 
> On 05/17/2016 01:22 PM, David Miller wrote:
> From: Alexander Graf 
> Date: Mon, 16 May 2016 20:52:43 +0200
> 
>> If you compile without OF_MDIO support in an RGMII configuration, we fail
>> to configure the dp83867 phy today by writing garbage into its 
>> configuration
>> registers.
>> 
>> On the other hand if you do compile with OF_MDIO and the phy gets loaded 
>> via
>> device tree, you have to have the properties set in the device tree, 
>> otherwise
>> we fail to load the driver and don't even attach the generic phy driver 
>> to
>> the interface anymore.
>> 
>> To make things slightly more consistent, make the rgmii configuration 
>> properties
>> optional and allow a user to omit them in their device tree.
>> 
>> Signed-off-by: Alexander Graf 
> Applied.
 This patch should not have been applied.
 
 I did not believe the implementation was proper for that driver.
 
 It seems my objection to the code was not seen.  Nor was Andrew's point 
 about the DT bindings document
 
 https://patchwork.kernel.org/patch/9105371/
>>> The discussions around the recent phy patches have been a labrynth that I've
>>> found hard to follow, sorry.
>>> 
>>> I'll revert these two, sigh
>> The first patch is an obvious and correct fix. Discussions were only about 
>> the second one (which I'm happy to drop given the rat hole this turned out 
>> to be).
> 
> So are you going to abandon the second patch all together?
> If you do, let me know I can submit a patch.

I'm fairly sure you'll be done with it much quicker than me and the real bug I 
wanted to fix is that the driver broke with OF_MDIO=m ;)

So yes, please take over from here.


Alex




Re: [PATCH v2 2/2] phy dp83867: Make rgmii parameters optional

2016-05-17 Thread Dan Murphy
On 05/17/2016 03:37 PM, Alexander Graf wrote:
> Hi David,
>
>> Am 17.05.2016 um 20:48 schrieb David Miller :
>>
>> From: Dan Murphy 
>> Date: Tue, 17 May 2016 13:34:34 -0500
>>
>>> David
>>>
 On 05/17/2016 01:22 PM, David Miller wrote:
 From: Alexander Graf 
 Date: Mon, 16 May 2016 20:52:43 +0200

> If you compile without OF_MDIO support in an RGMII configuration, we fail
> to configure the dp83867 phy today by writing garbage into its 
> configuration
> registers.
>
> On the other hand if you do compile with OF_MDIO and the phy gets loaded 
> via
> device tree, you have to have the properties set in the device tree, 
> otherwise
> we fail to load the driver and don't even attach the generic phy driver to
> the interface anymore.
>
> To make things slightly more consistent, make the rgmii configuration 
> properties
> optional and allow a user to omit them in their device tree.
>
> Signed-off-by: Alexander Graf 
 Applied.
>>> This patch should not have been applied.
>>>
>>> I did not believe the implementation was proper for that driver.
>>>
>>> It seems my objection to the code was not seen.  Nor was Andrew's point 
>>> about the DT bindings document
>>>
>>> https://patchwork.kernel.org/patch/9105371/
>> The discussions around the recent phy patches have been a labrynth that I've
>> found hard to follow, sorry.
>>
>> I'll revert these two, sigh
> The first patch is an obvious and correct fix. Discussions were only about 
> the second one (which I'm happy to drop given the rat hole this turned out to 
> be).

So are you going to abandon the second patch all together?
If you do, let me know I can submit a patch.

Dan
>
> Alex
>
>


-- 
--
Dan Murphy



Re: [PATCH v2 2/2] phy dp83867: Make rgmii parameters optional

2016-05-17 Thread Dan Murphy
On 05/17/2016 03:37 PM, Alexander Graf wrote:
> Hi David,
>
>> Am 17.05.2016 um 20:48 schrieb David Miller :
>>
>> From: Dan Murphy 
>> Date: Tue, 17 May 2016 13:34:34 -0500
>>
>>> David
>>>
 On 05/17/2016 01:22 PM, David Miller wrote:
 From: Alexander Graf 
 Date: Mon, 16 May 2016 20:52:43 +0200

> If you compile without OF_MDIO support in an RGMII configuration, we fail
> to configure the dp83867 phy today by writing garbage into its 
> configuration
> registers.
>
> On the other hand if you do compile with OF_MDIO and the phy gets loaded 
> via
> device tree, you have to have the properties set in the device tree, 
> otherwise
> we fail to load the driver and don't even attach the generic phy driver to
> the interface anymore.
>
> To make things slightly more consistent, make the rgmii configuration 
> properties
> optional and allow a user to omit them in their device tree.
>
> Signed-off-by: Alexander Graf 
 Applied.
>>> This patch should not have been applied.
>>>
>>> I did not believe the implementation was proper for that driver.
>>>
>>> It seems my objection to the code was not seen.  Nor was Andrew's point 
>>> about the DT bindings document
>>>
>>> https://patchwork.kernel.org/patch/9105371/
>> The discussions around the recent phy patches have been a labrynth that I've
>> found hard to follow, sorry.
>>
>> I'll revert these two, sigh
> The first patch is an obvious and correct fix. Discussions were only about 
> the second one (which I'm happy to drop given the rat hole this turned out to 
> be).

So are you going to abandon the second patch all together?
If you do, let me know I can submit a patch.

Dan
>
> Alex
>
>


-- 
--
Dan Murphy



Re: [PATCH v2 2/2] phy dp83867: Make rgmii parameters optional

2016-05-17 Thread Alexander Graf
Hi David,

> Am 17.05.2016 um 20:48 schrieb David Miller :
> 
> From: Dan Murphy 
> Date: Tue, 17 May 2016 13:34:34 -0500
> 
>> David
>> 
>>> On 05/17/2016 01:22 PM, David Miller wrote:
>>> From: Alexander Graf 
>>> Date: Mon, 16 May 2016 20:52:43 +0200
>>> 
 If you compile without OF_MDIO support in an RGMII configuration, we fail
 to configure the dp83867 phy today by writing garbage into its 
 configuration
 registers.
 
 On the other hand if you do compile with OF_MDIO and the phy gets loaded 
 via
 device tree, you have to have the properties set in the device tree, 
 otherwise
 we fail to load the driver and don't even attach the generic phy driver to
 the interface anymore.
 
 To make things slightly more consistent, make the rgmii configuration 
 properties
 optional and allow a user to omit them in their device tree.
 
 Signed-off-by: Alexander Graf 
>>> Applied.
>> 
>> This patch should not have been applied.
>> 
>> I did not believe the implementation was proper for that driver.
>> 
>> It seems my objection to the code was not seen.  Nor was Andrew's point 
>> about the DT bindings document
>> 
>> https://patchwork.kernel.org/patch/9105371/
> 
> The discussions around the recent phy patches have been a labrynth that I've
> found hard to follow, sorry.
> 
> I'll revert these two, sigh

The first patch is an obvious and correct fix. Discussions were only about the 
second one (which I'm happy to drop given the rat hole this turned out to be).

Alex




Re: [PATCH v2 2/2] phy dp83867: Make rgmii parameters optional

2016-05-17 Thread Alexander Graf
Hi David,

> Am 17.05.2016 um 20:48 schrieb David Miller :
> 
> From: Dan Murphy 
> Date: Tue, 17 May 2016 13:34:34 -0500
> 
>> David
>> 
>>> On 05/17/2016 01:22 PM, David Miller wrote:
>>> From: Alexander Graf 
>>> Date: Mon, 16 May 2016 20:52:43 +0200
>>> 
 If you compile without OF_MDIO support in an RGMII configuration, we fail
 to configure the dp83867 phy today by writing garbage into its 
 configuration
 registers.
 
 On the other hand if you do compile with OF_MDIO and the phy gets loaded 
 via
 device tree, you have to have the properties set in the device tree, 
 otherwise
 we fail to load the driver and don't even attach the generic phy driver to
 the interface anymore.
 
 To make things slightly more consistent, make the rgmii configuration 
 properties
 optional and allow a user to omit them in their device tree.
 
 Signed-off-by: Alexander Graf 
>>> Applied.
>> 
>> This patch should not have been applied.
>> 
>> I did not believe the implementation was proper for that driver.
>> 
>> It seems my objection to the code was not seen.  Nor was Andrew's point 
>> about the DT bindings document
>> 
>> https://patchwork.kernel.org/patch/9105371/
> 
> The discussions around the recent phy patches have been a labrynth that I've
> found hard to follow, sorry.
> 
> I'll revert these two, sigh

The first patch is an obvious and correct fix. Discussions were only about the 
second one (which I'm happy to drop given the rat hole this turned out to be).

Alex




Re: [PATCH v2 2/2] phy dp83867: Make rgmii parameters optional

2016-05-17 Thread David Miller
From: Dan Murphy 
Date: Tue, 17 May 2016 13:34:34 -0500

> David
> 
> On 05/17/2016 01:22 PM, David Miller wrote:
>> From: Alexander Graf 
>> Date: Mon, 16 May 2016 20:52:43 +0200
>>
>>> If you compile without OF_MDIO support in an RGMII configuration, we fail
>>> to configure the dp83867 phy today by writing garbage into its configuration
>>> registers.
>>>
>>> On the other hand if you do compile with OF_MDIO and the phy gets loaded via
>>> device tree, you have to have the properties set in the device tree, 
>>> otherwise
>>> we fail to load the driver and don't even attach the generic phy driver to
>>> the interface anymore.
>>>
>>> To make things slightly more consistent, make the rgmii configuration 
>>> properties
>>> optional and allow a user to omit them in their device tree.
>>>
>>> Signed-off-by: Alexander Graf 
>> Applied.
> 
> This patch should not have been applied.
> 
> I did not believe the implementation was proper for that driver.
> 
> It seems my objection to the code was not seen.  Nor was Andrew's point about 
> the DT bindings document
> 
> https://patchwork.kernel.org/patch/9105371/

The discussions around the recent phy patches have been a labrynth that I've
found hard to follow, sorry.

I'll revert these two, sigh



Re: [PATCH v2 2/2] phy dp83867: Make rgmii parameters optional

2016-05-17 Thread David Miller
From: Dan Murphy 
Date: Tue, 17 May 2016 13:34:34 -0500

> David
> 
> On 05/17/2016 01:22 PM, David Miller wrote:
>> From: Alexander Graf 
>> Date: Mon, 16 May 2016 20:52:43 +0200
>>
>>> If you compile without OF_MDIO support in an RGMII configuration, we fail
>>> to configure the dp83867 phy today by writing garbage into its configuration
>>> registers.
>>>
>>> On the other hand if you do compile with OF_MDIO and the phy gets loaded via
>>> device tree, you have to have the properties set in the device tree, 
>>> otherwise
>>> we fail to load the driver and don't even attach the generic phy driver to
>>> the interface anymore.
>>>
>>> To make things slightly more consistent, make the rgmii configuration 
>>> properties
>>> optional and allow a user to omit them in their device tree.
>>>
>>> Signed-off-by: Alexander Graf 
>> Applied.
> 
> This patch should not have been applied.
> 
> I did not believe the implementation was proper for that driver.
> 
> It seems my objection to the code was not seen.  Nor was Andrew's point about 
> the DT bindings document
> 
> https://patchwork.kernel.org/patch/9105371/

The discussions around the recent phy patches have been a labrynth that I've
found hard to follow, sorry.

I'll revert these two, sigh



Re: [PATCH v2 2/2] phy dp83867: Make rgmii parameters optional

2016-05-17 Thread Dan Murphy
David

On 05/17/2016 01:22 PM, David Miller wrote:
> From: Alexander Graf 
> Date: Mon, 16 May 2016 20:52:43 +0200
>
>> If you compile without OF_MDIO support in an RGMII configuration, we fail
>> to configure the dp83867 phy today by writing garbage into its configuration
>> registers.
>>
>> On the other hand if you do compile with OF_MDIO and the phy gets loaded via
>> device tree, you have to have the properties set in the device tree, 
>> otherwise
>> we fail to load the driver and don't even attach the generic phy driver to
>> the interface anymore.
>>
>> To make things slightly more consistent, make the rgmii configuration 
>> properties
>> optional and allow a user to omit them in their device tree.
>>
>> Signed-off-by: Alexander Graf 
> Applied.

This patch should not have been applied.

I did not believe the implementation was proper for that driver.

It seems my objection to the code was not seen.  Nor was Andrew's point about 
the DT bindings document

https://patchwork.kernel.org/patch/9105371/

Dan

-- 
--
Dan Murphy



Re: [PATCH v2 2/2] phy dp83867: Make rgmii parameters optional

2016-05-17 Thread Dan Murphy
David

On 05/17/2016 01:22 PM, David Miller wrote:
> From: Alexander Graf 
> Date: Mon, 16 May 2016 20:52:43 +0200
>
>> If you compile without OF_MDIO support in an RGMII configuration, we fail
>> to configure the dp83867 phy today by writing garbage into its configuration
>> registers.
>>
>> On the other hand if you do compile with OF_MDIO and the phy gets loaded via
>> device tree, you have to have the properties set in the device tree, 
>> otherwise
>> we fail to load the driver and don't even attach the generic phy driver to
>> the interface anymore.
>>
>> To make things slightly more consistent, make the rgmii configuration 
>> properties
>> optional and allow a user to omit them in their device tree.
>>
>> Signed-off-by: Alexander Graf 
> Applied.

This patch should not have been applied.

I did not believe the implementation was proper for that driver.

It seems my objection to the code was not seen.  Nor was Andrew's point about 
the DT bindings document

https://patchwork.kernel.org/patch/9105371/

Dan

-- 
--
Dan Murphy



Re: [PATCH v2 2/2] phy dp83867: Make rgmii parameters optional

2016-05-17 Thread David Miller
From: Alexander Graf 
Date: Mon, 16 May 2016 20:52:43 +0200

> If you compile without OF_MDIO support in an RGMII configuration, we fail
> to configure the dp83867 phy today by writing garbage into its configuration
> registers.
> 
> On the other hand if you do compile with OF_MDIO and the phy gets loaded via
> device tree, you have to have the properties set in the device tree, otherwise
> we fail to load the driver and don't even attach the generic phy driver to
> the interface anymore.
> 
> To make things slightly more consistent, make the rgmii configuration 
> properties
> optional and allow a user to omit them in their device tree.
> 
> Signed-off-by: Alexander Graf 

Applied.


Re: [PATCH v2 2/2] phy dp83867: Make rgmii parameters optional

2016-05-17 Thread David Miller
From: Alexander Graf 
Date: Mon, 16 May 2016 20:52:43 +0200

> If you compile without OF_MDIO support in an RGMII configuration, we fail
> to configure the dp83867 phy today by writing garbage into its configuration
> registers.
> 
> On the other hand if you do compile with OF_MDIO and the phy gets loaded via
> device tree, you have to have the properties set in the device tree, otherwise
> we fail to load the driver and don't even attach the generic phy driver to
> the interface anymore.
> 
> To make things slightly more consistent, make the rgmii configuration 
> properties
> optional and allow a user to omit them in their device tree.
> 
> Signed-off-by: Alexander Graf 

Applied.


Re: [PATCH v2 2/2] phy dp83867: Make rgmii parameters optional

2016-05-16 Thread Dan Murphy
On 05/16/2016 01:52 PM, Alexander Graf wrote:
> If you compile without OF_MDIO support in an RGMII configuration, we fail
> to configure the dp83867 phy today by writing garbage into its configuration
> registers.
>
> On the other hand if you do compile with OF_MDIO and the phy gets loaded via
> device tree, you have to have the properties set in the device tree, otherwise
> we fail to load the driver and don't even attach the generic phy driver to
> the interface anymore.
>
> To make things slightly more consistent, make the rgmii configuration 
> properties
> optional and allow a user to omit them in their device tree.
>
> Signed-off-by: Alexander Graf 
> ---
>  drivers/net/phy/dp83867.c | 31 ---
>  1 file changed, 28 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/net/phy/dp83867.c b/drivers/net/phy/dp83867.c
> index 94cc278..1b01680 100644
> --- a/drivers/net/phy/dp83867.c
> +++ b/drivers/net/phy/dp83867.c
> @@ -65,6 +65,7 @@ struct dp83867_private {
>   int rx_id_delay;
>   int tx_id_delay;
>   int fifo_depth;
> + int values_are_sane;
>  };
>  
>  static int dp83867_ack_interrupt(struct phy_device *phydev)
> @@ -113,15 +114,30 @@ static int dp83867_of_init(struct phy_device *phydev)
>   ret = of_property_read_u32(of_node, "ti,rx-internal-delay",
>  >rx_id_delay);
>   if (ret)
> - return ret;
> + goto invalid_dt;
>  
>   ret = of_property_read_u32(of_node, "ti,tx-internal-delay",
>  >tx_id_delay);
>   if (ret)
> - return ret;
> + goto invalid_dt;

Optional means you may or may not have the entries

I would prefer to wrap the DT reading with the interface type check.

if (phydev->interface == PHY_INTERFACE_MODE_RGMII_TXID ||
phydev->interface == PHY_INTERFACE_MODE_RGMII_ID  )

ret = of_property_read_u32(of_node, "ti,tx-internal-delay",
   >tx_id_delay);
if (ret)

goto invalid_dt;

Otherwise this continues to mandate that you need to declare all the DT entries
when in fact you may only have to declare 1.

And if the other interfaces are declared then DT entries are ignored.  And 
configuring
internal delay is not required per section 8.9 footnote 3 of the data sheet.

Dan



>  
> - return of_property_read_u32(of_node, "ti,fifo-depth",
> + ret = of_property_read_u32(of_node, "ti,fifo-depth",
>  >fifo_depth);
> + if (ret)
> + goto invalid_dt;
> +
> + dp83867->values_are_sane = 1;
> +
> + return 0;
> +
> +invalid_dt:
> + phydev_err(phydev, "missing properties in device tree");
> +
> + /*
> +  * We can still run with a broken dt by not using any of the optional
> +  * parameters, so just don't set dp83867->values_are_sane.
> +  */
> + return 0;
>  }
>  #else
>  static int dp83867_of_init(struct phy_device *phydev)
> @@ -150,6 +166,15 @@ static int dp83867_config_init(struct phy_device *phydev)
>   dp83867 = (struct dp83867_private *)phydev->priv;
>   }
>  
> + /*
> +  * With no or broken device tree, we don't have the values that we would
> +  * want to configure the phy with. In that case, cross our fingers and
> +  * assume that firmware did everything correctly for us or that we don't
> +  * need them.
> +  */
> + if (!dp83867->values_are_sane)
> + return 0;
> +
>   if (phy_interface_is_rgmii(phydev)) {
>   ret = phy_write(phydev, MII_DP83867_PHYCTRL,
>   (dp83867->fifo_depth << 
> DP83867_PHYCR_FIFO_DEPTH_SHIFT));


-- 
--
Dan Murphy



Re: [PATCH v2 2/2] phy dp83867: Make rgmii parameters optional

2016-05-16 Thread Dan Murphy
On 05/16/2016 01:52 PM, Alexander Graf wrote:
> If you compile without OF_MDIO support in an RGMII configuration, we fail
> to configure the dp83867 phy today by writing garbage into its configuration
> registers.
>
> On the other hand if you do compile with OF_MDIO and the phy gets loaded via
> device tree, you have to have the properties set in the device tree, otherwise
> we fail to load the driver and don't even attach the generic phy driver to
> the interface anymore.
>
> To make things slightly more consistent, make the rgmii configuration 
> properties
> optional and allow a user to omit them in their device tree.
>
> Signed-off-by: Alexander Graf 
> ---
>  drivers/net/phy/dp83867.c | 31 ---
>  1 file changed, 28 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/net/phy/dp83867.c b/drivers/net/phy/dp83867.c
> index 94cc278..1b01680 100644
> --- a/drivers/net/phy/dp83867.c
> +++ b/drivers/net/phy/dp83867.c
> @@ -65,6 +65,7 @@ struct dp83867_private {
>   int rx_id_delay;
>   int tx_id_delay;
>   int fifo_depth;
> + int values_are_sane;
>  };
>  
>  static int dp83867_ack_interrupt(struct phy_device *phydev)
> @@ -113,15 +114,30 @@ static int dp83867_of_init(struct phy_device *phydev)
>   ret = of_property_read_u32(of_node, "ti,rx-internal-delay",
>  >rx_id_delay);
>   if (ret)
> - return ret;
> + goto invalid_dt;
>  
>   ret = of_property_read_u32(of_node, "ti,tx-internal-delay",
>  >tx_id_delay);
>   if (ret)
> - return ret;
> + goto invalid_dt;

Optional means you may or may not have the entries

I would prefer to wrap the DT reading with the interface type check.

if (phydev->interface == PHY_INTERFACE_MODE_RGMII_TXID ||
phydev->interface == PHY_INTERFACE_MODE_RGMII_ID  )

ret = of_property_read_u32(of_node, "ti,tx-internal-delay",
   >tx_id_delay);
if (ret)

goto invalid_dt;

Otherwise this continues to mandate that you need to declare all the DT entries
when in fact you may only have to declare 1.

And if the other interfaces are declared then DT entries are ignored.  And 
configuring
internal delay is not required per section 8.9 footnote 3 of the data sheet.

Dan



>  
> - return of_property_read_u32(of_node, "ti,fifo-depth",
> + ret = of_property_read_u32(of_node, "ti,fifo-depth",
>  >fifo_depth);
> + if (ret)
> + goto invalid_dt;
> +
> + dp83867->values_are_sane = 1;
> +
> + return 0;
> +
> +invalid_dt:
> + phydev_err(phydev, "missing properties in device tree");
> +
> + /*
> +  * We can still run with a broken dt by not using any of the optional
> +  * parameters, so just don't set dp83867->values_are_sane.
> +  */
> + return 0;
>  }
>  #else
>  static int dp83867_of_init(struct phy_device *phydev)
> @@ -150,6 +166,15 @@ static int dp83867_config_init(struct phy_device *phydev)
>   dp83867 = (struct dp83867_private *)phydev->priv;
>   }
>  
> + /*
> +  * With no or broken device tree, we don't have the values that we would
> +  * want to configure the phy with. In that case, cross our fingers and
> +  * assume that firmware did everything correctly for us or that we don't
> +  * need them.
> +  */
> + if (!dp83867->values_are_sane)
> + return 0;
> +
>   if (phy_interface_is_rgmii(phydev)) {
>   ret = phy_write(phydev, MII_DP83867_PHYCTRL,
>   (dp83867->fifo_depth << 
> DP83867_PHYCR_FIFO_DEPTH_SHIFT));


-- 
--
Dan Murphy



Re: [PATCH v2 2/2] phy dp83867: Make rgmii parameters optional

2016-05-16 Thread Andrew Lunn
On Mon, May 16, 2016 at 08:52:43PM +0200, Alexander Graf wrote:
> If you compile without OF_MDIO support in an RGMII configuration, we fail
> to configure the dp83867 phy today by writing garbage into its configuration
> registers.
> 
> On the other hand if you do compile with OF_MDIO and the phy gets loaded via
> device tree, you have to have the properties set in the device tree, otherwise
> we fail to load the driver and don't even attach the generic phy driver to
> the interface anymore.
> 
> To make things slightly more consistent, make the rgmii configuration 
> properties
> optional and allow a user to omit them in their device tree.

The binding document actually says they are required. It would be good
to make the binding documentation and the code consistent.

   Andrew


Re: [PATCH v2 2/2] phy dp83867: Make rgmii parameters optional

2016-05-16 Thread Andrew Lunn
On Mon, May 16, 2016 at 08:52:43PM +0200, Alexander Graf wrote:
> If you compile without OF_MDIO support in an RGMII configuration, we fail
> to configure the dp83867 phy today by writing garbage into its configuration
> registers.
> 
> On the other hand if you do compile with OF_MDIO and the phy gets loaded via
> device tree, you have to have the properties set in the device tree, otherwise
> we fail to load the driver and don't even attach the generic phy driver to
> the interface anymore.
> 
> To make things slightly more consistent, make the rgmii configuration 
> properties
> optional and allow a user to omit them in their device tree.

The binding document actually says they are required. It would be good
to make the binding documentation and the code consistent.

   Andrew


Re: [PATCH v2 2/2] phy dp83867: Make rgmii parameters optional

2016-05-16 Thread Florian Fainelli
On 05/16/2016 11:52 AM, Alexander Graf wrote:
> If you compile without OF_MDIO support in an RGMII configuration, we fail
> to configure the dp83867 phy today by writing garbage into its configuration
> registers.
> 
> On the other hand if you do compile with OF_MDIO and the phy gets loaded via
> device tree, you have to have the properties set in the device tree, otherwise
> we fail to load the driver and don't even attach the generic phy driver to
> the interface anymore.
> 
> To make things slightly more consistent, make the rgmii configuration 
> properties
> optional and allow a user to omit them in their device tree.
> 
> Signed-off-by: Alexander Graf 
> ---
>  drivers/net/phy/dp83867.c | 31 ---
>  1 file changed, 28 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/net/phy/dp83867.c b/drivers/net/phy/dp83867.c
> index 94cc278..1b01680 100644
> --- a/drivers/net/phy/dp83867.c
> +++ b/drivers/net/phy/dp83867.c
> @@ -65,6 +65,7 @@ struct dp83867_private {
>   int rx_id_delay;
>   int tx_id_delay;
>   int fifo_depth;
> + int values_are_sane;

This could be a boolean type.

>  };
>  
>  static int dp83867_ack_interrupt(struct phy_device *phydev)
> @@ -113,15 +114,30 @@ static int dp83867_of_init(struct phy_device *phydev)
>   ret = of_property_read_u32(of_node, "ti,rx-internal-delay",
>  >rx_id_delay);
>   if (ret)
> - return ret;
> + goto invalid_dt;
>  
>   ret = of_property_read_u32(of_node, "ti,tx-internal-delay",
>  >tx_id_delay);
>   if (ret)
> - return ret;
> + goto invalid_dt;
>  
> - return of_property_read_u32(of_node, "ti,fifo-depth",
> + ret = of_property_read_u32(of_node, "ti,fifo-depth",
>  >fifo_depth);
> + if (ret)
> + goto invalid_dt;
> +
> + dp83867->values_are_sane = 1;
> +
> + return 0;
> +
> +invalid_dt:
> + phydev_err(phydev, "missing properties in device tree");

phydev_warn() maybe?

Other than that, this looks okay to me.
-- 
Florian


Re: [PATCH v2 2/2] phy dp83867: Make rgmii parameters optional

2016-05-16 Thread Florian Fainelli
On 05/16/2016 11:52 AM, Alexander Graf wrote:
> If you compile without OF_MDIO support in an RGMII configuration, we fail
> to configure the dp83867 phy today by writing garbage into its configuration
> registers.
> 
> On the other hand if you do compile with OF_MDIO and the phy gets loaded via
> device tree, you have to have the properties set in the device tree, otherwise
> we fail to load the driver and don't even attach the generic phy driver to
> the interface anymore.
> 
> To make things slightly more consistent, make the rgmii configuration 
> properties
> optional and allow a user to omit them in their device tree.
> 
> Signed-off-by: Alexander Graf 
> ---
>  drivers/net/phy/dp83867.c | 31 ---
>  1 file changed, 28 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/net/phy/dp83867.c b/drivers/net/phy/dp83867.c
> index 94cc278..1b01680 100644
> --- a/drivers/net/phy/dp83867.c
> +++ b/drivers/net/phy/dp83867.c
> @@ -65,6 +65,7 @@ struct dp83867_private {
>   int rx_id_delay;
>   int tx_id_delay;
>   int fifo_depth;
> + int values_are_sane;

This could be a boolean type.

>  };
>  
>  static int dp83867_ack_interrupt(struct phy_device *phydev)
> @@ -113,15 +114,30 @@ static int dp83867_of_init(struct phy_device *phydev)
>   ret = of_property_read_u32(of_node, "ti,rx-internal-delay",
>  >rx_id_delay);
>   if (ret)
> - return ret;
> + goto invalid_dt;
>  
>   ret = of_property_read_u32(of_node, "ti,tx-internal-delay",
>  >tx_id_delay);
>   if (ret)
> - return ret;
> + goto invalid_dt;
>  
> - return of_property_read_u32(of_node, "ti,fifo-depth",
> + ret = of_property_read_u32(of_node, "ti,fifo-depth",
>  >fifo_depth);
> + if (ret)
> + goto invalid_dt;
> +
> + dp83867->values_are_sane = 1;
> +
> + return 0;
> +
> +invalid_dt:
> + phydev_err(phydev, "missing properties in device tree");

phydev_warn() maybe?

Other than that, this looks okay to me.
-- 
Florian


[PATCH v2 2/2] phy dp83867: Make rgmii parameters optional

2016-05-16 Thread Alexander Graf
If you compile without OF_MDIO support in an RGMII configuration, we fail
to configure the dp83867 phy today by writing garbage into its configuration
registers.

On the other hand if you do compile with OF_MDIO and the phy gets loaded via
device tree, you have to have the properties set in the device tree, otherwise
we fail to load the driver and don't even attach the generic phy driver to
the interface anymore.

To make things slightly more consistent, make the rgmii configuration properties
optional and allow a user to omit them in their device tree.

Signed-off-by: Alexander Graf 
---
 drivers/net/phy/dp83867.c | 31 ---
 1 file changed, 28 insertions(+), 3 deletions(-)

diff --git a/drivers/net/phy/dp83867.c b/drivers/net/phy/dp83867.c
index 94cc278..1b01680 100644
--- a/drivers/net/phy/dp83867.c
+++ b/drivers/net/phy/dp83867.c
@@ -65,6 +65,7 @@ struct dp83867_private {
int rx_id_delay;
int tx_id_delay;
int fifo_depth;
+   int values_are_sane;
 };
 
 static int dp83867_ack_interrupt(struct phy_device *phydev)
@@ -113,15 +114,30 @@ static int dp83867_of_init(struct phy_device *phydev)
ret = of_property_read_u32(of_node, "ti,rx-internal-delay",
   >rx_id_delay);
if (ret)
-   return ret;
+   goto invalid_dt;
 
ret = of_property_read_u32(of_node, "ti,tx-internal-delay",
   >tx_id_delay);
if (ret)
-   return ret;
+   goto invalid_dt;
 
-   return of_property_read_u32(of_node, "ti,fifo-depth",
+   ret = of_property_read_u32(of_node, "ti,fifo-depth",
   >fifo_depth);
+   if (ret)
+   goto invalid_dt;
+
+   dp83867->values_are_sane = 1;
+
+   return 0;
+
+invalid_dt:
+   phydev_err(phydev, "missing properties in device tree");
+
+   /*
+* We can still run with a broken dt by not using any of the optional
+* parameters, so just don't set dp83867->values_are_sane.
+*/
+   return 0;
 }
 #else
 static int dp83867_of_init(struct phy_device *phydev)
@@ -150,6 +166,15 @@ static int dp83867_config_init(struct phy_device *phydev)
dp83867 = (struct dp83867_private *)phydev->priv;
}
 
+   /*
+* With no or broken device tree, we don't have the values that we would
+* want to configure the phy with. In that case, cross our fingers and
+* assume that firmware did everything correctly for us or that we don't
+* need them.
+*/
+   if (!dp83867->values_are_sane)
+   return 0;
+
if (phy_interface_is_rgmii(phydev)) {
ret = phy_write(phydev, MII_DP83867_PHYCTRL,
(dp83867->fifo_depth << 
DP83867_PHYCR_FIFO_DEPTH_SHIFT));
-- 
1.8.5.6



[PATCH v2 2/2] phy dp83867: Make rgmii parameters optional

2016-05-16 Thread Alexander Graf
If you compile without OF_MDIO support in an RGMII configuration, we fail
to configure the dp83867 phy today by writing garbage into its configuration
registers.

On the other hand if you do compile with OF_MDIO and the phy gets loaded via
device tree, you have to have the properties set in the device tree, otherwise
we fail to load the driver and don't even attach the generic phy driver to
the interface anymore.

To make things slightly more consistent, make the rgmii configuration properties
optional and allow a user to omit them in their device tree.

Signed-off-by: Alexander Graf 
---
 drivers/net/phy/dp83867.c | 31 ---
 1 file changed, 28 insertions(+), 3 deletions(-)

diff --git a/drivers/net/phy/dp83867.c b/drivers/net/phy/dp83867.c
index 94cc278..1b01680 100644
--- a/drivers/net/phy/dp83867.c
+++ b/drivers/net/phy/dp83867.c
@@ -65,6 +65,7 @@ struct dp83867_private {
int rx_id_delay;
int tx_id_delay;
int fifo_depth;
+   int values_are_sane;
 };
 
 static int dp83867_ack_interrupt(struct phy_device *phydev)
@@ -113,15 +114,30 @@ static int dp83867_of_init(struct phy_device *phydev)
ret = of_property_read_u32(of_node, "ti,rx-internal-delay",
   >rx_id_delay);
if (ret)
-   return ret;
+   goto invalid_dt;
 
ret = of_property_read_u32(of_node, "ti,tx-internal-delay",
   >tx_id_delay);
if (ret)
-   return ret;
+   goto invalid_dt;
 
-   return of_property_read_u32(of_node, "ti,fifo-depth",
+   ret = of_property_read_u32(of_node, "ti,fifo-depth",
   >fifo_depth);
+   if (ret)
+   goto invalid_dt;
+
+   dp83867->values_are_sane = 1;
+
+   return 0;
+
+invalid_dt:
+   phydev_err(phydev, "missing properties in device tree");
+
+   /*
+* We can still run with a broken dt by not using any of the optional
+* parameters, so just don't set dp83867->values_are_sane.
+*/
+   return 0;
 }
 #else
 static int dp83867_of_init(struct phy_device *phydev)
@@ -150,6 +166,15 @@ static int dp83867_config_init(struct phy_device *phydev)
dp83867 = (struct dp83867_private *)phydev->priv;
}
 
+   /*
+* With no or broken device tree, we don't have the values that we would
+* want to configure the phy with. In that case, cross our fingers and
+* assume that firmware did everything correctly for us or that we don't
+* need them.
+*/
+   if (!dp83867->values_are_sane)
+   return 0;
+
if (phy_interface_is_rgmii(phydev)) {
ret = phy_write(phydev, MII_DP83867_PHYCTRL,
(dp83867->fifo_depth << 
DP83867_PHYCR_FIFO_DEPTH_SHIFT));
-- 
1.8.5.6