Subject: Re: [PATCH net-next 1/3] dt-bindings: net: dp83822: support configuring RMII master/slave mode

From: Jérémie Dautheribes<[email-masked]>
Date: Thu, 29 Feb 2024 21:46:12 +0100

Hi Andrew,

On 26/02/2024 16:28, Andrew Lunn wrote:
> On Thu, Feb 22, 2024 at 11:31:15AM +0100, Jérémie Dautheribes wrote:
>> Add property ti,rmii-mode to support selecting the RMII operation mode
>> between:
>> 	- master mode (PHY operates from a 25MHz clock reference)
>> 	- slave mode (PHY operates from a 50MHz clock reference)
>>
>> If not set, the operation mode is configured by hardware straps.
>>
>> Signed-off-by: Jérémie Dautheribes <[email-masked]>
>> ---
>>   .../devicetree/bindings/net/ti,dp83822.yaml      | 16 ++++++++++++++++
>>   1 file changed, 16 insertions(+)
>>
>> diff --git a/Documentation/devicetree/bindings/net/ti,dp83822.yaml b/Documentation/devicetree/bindings/net/ti,dp83822.yaml
>> index 8f4350be689c..8f23254c0458 100644
>> --- a/Documentation/devicetree/bindings/net/ti,dp83822.yaml
>> +++ b/Documentation/devicetree/bindings/net/ti,dp83822.yaml
>> @@ -80,6 +80,22 @@ properties:
>>              10625, 11250, 11875, 12500, 13125, 13750, 14375, 15000]
>>       default: 10000
>>   
>> +  ti,rmii-mode:
>> +    description: |
>> +       If present, select the RMII operation mode. Two modes are
>> +       available:
>> +         - RMII master, where the PHY operates from a 25MHz clock reference,
>> +         provided by a crystal or a CMOS-level oscillator
>> +         - RMII slave, where the PHY operates from a 50MHz clock reference,
>> +         provided by a CMOS-level oscillator
> 
> What has master and slave got to do with this?
> 
> Sometimes, the MAC provides a clock to the PHY, and all data transfer
> over the RMII bus is timed by that.
> 
> Sometimes, the PHY provides a clock to the MAC, and all data transfer
> over the RMII bus is timed by that.
> 
> Here there is a clear master/slave relationship, who is providing the
> clock, who is consuming the clock. However, what you describe does not
> fit that. Maybe look at other PHY bindings, and copy what they do for
> clocks.

In fact, I hesitated a lot before choosing this master/slave designation 
because of the same reasoning as you. But the TI DP83826 datasheet [1] 
uses this name for two orthogonal yet connected meanings, here's a copy 
of the corresponding § (in section 9.3.10):

"The DP83826 offers two types of RMII operations: RMII Slave and RMII 
Master. In RMII Master operation, the DP83826 operates from either a 
25-MHz CMOS-level oscillator connected to XI pin, a 25-MHz crystal 
connected across XI and XO pins. A 50-MHz output clock referenced from 
DP83826 can be connected to the MAC. In RMII Slave operation, the 
DP83826 operates from a 50-MHz CMOS-level oscillator connected to the XI 
pin and shares the same clock as the MAC. Alternatively, in RMII slave 
mode, the PHY can operate from a 50-MHz clock provided by the Host MAC."

So it seems that in some cases this also fits the master/slave 
relationship you describe.

That said, would you like me to include this description (or some parts) 
in the binding in addition to what I've already written? Or would you 
prefer me to use a more meaningful property name?

BTW, this series has already been merged into the net-next tree, I'm not 
sure what procedure to follow in such cases.

Best regards,

Jérémie

[1] 
https://www.ti.com/lit/ds/symlink/dp83826i.pdf?ts=1708075771406&ref_url=https%253A%252F%252Fwww.ti.com%252Fproduct%252FDP83826I