RE: [PATCH] phy: Change the configuration interface param to void* to make it more general

From: Zengtao (B)
Date: Fri Jul 19 2019 - 23:03:37 EST


Hi maxime:

>-----Original Message-----
>From: Maxime Ripard [mailto:maxime.ripard@xxxxxxxxxxx]
>Sent: Thursday, July 18, 2019 12:38 AM
>To: Zengtao (B) <prime.zeng@xxxxxxxxxxxxx>
>Cc: kishon@xxxxxx; Chen-Yu Tsai <wens@xxxxxxxx>; Paul Kocialkowski
><paul.kocialkowski@xxxxxxxxxxx>; Sakari Ailus <sakari.ailus@xxxxxxxxxxxxxxx>;
>linux-kernel@xxxxxxxxxxxxxxx; linux-arm-kernel@xxxxxxxxxxxxxxxxxxx
>Subject: Re: [PATCH] phy: Change the configuration interface param to void*
>to make it more general
>
>Hi,
>
>On Wed, Jul 17, 2019 at 06:36:09AM +0000, Zengtao (B) wrote:
>> Hi Maxime:
>>
>> Thanks for your reply.
>>
>> >-----Original Message-----
>> >From: Maxime Ripard [mailto:maxime.ripard@xxxxxxxxxxx]
>> >Sent: Thursday, July 11, 2019 7:21 PM
>> >To: Zengtao (B) <prime.zeng@xxxxxxxxxxxxx>
>> >Cc: kishon@xxxxxx; Chen-Yu Tsai <wens@xxxxxxxx>; Paul Kocialkowski
>> ><paul.kocialkowski@xxxxxxxxxxx>; Sakari Ailus
>> ><sakari.ailus@xxxxxxxxxxxxxxx>; linux-kernel@xxxxxxxxxxxxxxx;
>> >linux-arm-kernel@xxxxxxxxxxxxxxxxxxx
>> >Subject: Re: [PATCH] phy: Change the configuration interface param to
>> >void* to make it more general
>> >
>> >* PGP Signed by an unknown key
>> >
>> >On Fri, Jul 12, 2019 at 02:04:08AM +0800, Zeng Tao wrote:
>> >> The phy framework now allows runtime configurations, but only
>> >> limited to mipi now, and it's not reasonable to introduce user
>> >> specified configurations into the union phy_configure_opts
>> >> structure. An simple way is to replace with a void *.
>> >
>> >I'm not sure why it's unreasonable?
>> >
>>
>> The phy.h will need to include vendor specific phy headers
>
>I'm not sure this is an issue.
>
>> and the union phy_configure_opts will become more complex.
>
>And this was the plan all along.
>
>> I don't think this is a good solution to include all vendor specific
>> phy configs into a single union structure.
>
>The thing is, as Sakari have stated, this interface was meant as a generic way
>to negotiate a configuration between a PHY consumer and a PHY provider (ie,
>whatever sends data to the phy and the phy itself).
>
>If you remove the explicit type check, then you need to have prior knowledge
>(and agreement) on both sides, which breaks the initial intent.

I get your point, so if we follow your design, it will look this:

union phy_configure_opts {
struct xxxx1_phy phy1_opts;
struct xxxx1_phy phy2_opts;
struct xxxx1_phy phy3_opts;
.....
}

And the general phy framework needn't to know about the type but just pass through,
the caller and the phy driver definitely need to know what they are doing.
So I suggest a more general type void *, otherwise the general phy will need to see a lot
of details which is not that general.

Zengtao

>
>Maxime
>
>--
>Maxime Ripard, Bootlin
>Embedded Linux and Kernel engineering
>https://bootlin.com