Re: [RFC PATCH v8 01/10] dpll: documentation on DPLL subsystem interface

From: Jiri Pirko
Date: Wed Jun 14 2023 - 05:27:44 EST


Tue, Jun 13, 2023 at 06:38:01PM CEST, kuba@xxxxxxxxxx wrote:
>On Tue, 13 Jun 2023 11:55:11 +0200 Jiri Pirko wrote:
>> >> +``'pin': [{
>> >> + {'clock-id': 282574471561216,
>> >> + 'module-name': 'ice',
>> >> + 'pin-dpll-caps': 4,
>> >> + 'pin-id': 13,
>> >> + 'pin-parent': [{'pin-id': 2, 'pin-state': 'connected'},
>> >> + {'pin-id': 3, 'pin-state': 'disconnected'},
>> >> + {'id': 0, 'pin-direction': 'input'},
>> >> + {'id': 1, 'pin-direction': 'input'}],
>> >> + 'pin-type': 'synce-eth-port'}
>> >> +}]``
>> >
>> >It seems like pin-parent is overloaded, can we split it into two
>> >different nests?
>>
>> Yeah, we had it as two and converged to this one. The thing is, the rest
>> of the attrs are the same for both parent pin and parent device. I link
>> it this way a bit better. No strong feeling.
>
>Do you mean the same attribute enum / "space" / "set"?

Yeah, that is my understanding. Arkadiusz, could you please clarify?


>In the example above the attributes present don't seem to overlap.
>For user space its an extra if to sift thru the objects under
>pin-parent.
>
>> >Also sounds like setting pin attrs and pin-parent attrs should be
>> >different commands.
>>
>> Could be, but what't the benefit? Also, you are not configuring
>> pin-parent. You are configuring pin:pin-parent tuple. Basically the pin
>> configuration as a child. So this is mainly config of the pin itsest
>> Therefore does not really make sense to me to split to two comments.
>
>Clarity of the API. If muxing everything thru few calls was the goal
>we should also have very few members in struct dpll_pin_ops, and we
>don't.

How the the internal kernel api related to the uapi? I mean, it's quite
common to have 1:N relationsip between cmd and op. I have to be missing
your point. Could you be more specific please?

Current code presents PIN_SET command with accepts structured set of
attribute to be set. The core-driver api is pretty clear. Squashing to
a single op would be disaster. Having one command per attr looks like an
overkill without any real benefit. How exactly do you propose to change
this?