On Mon, 21 Oct 2024 at 18:11, Krzysztof Kozlowski <krzk@xxxxxxxxxx> wrote: > > On 21/10/2024 12:56, Dmitry Baryshkov wrote: > >>> { } > >>> }; > >>> @@ -596,6 +635,14 @@ static int gpu_cc_sa8775p_probe(struct platform_device *pdev) > >>> if (IS_ERR(regmap)) > >>> return PTR_ERR(regmap); > >>> > >>> + if (of_device_is_compatible(pdev->dev.of_node, "qcom,qcs8300-gpucc")) { > >> > >> Why we cannot use match data? Seeing compatibles in the code is > >> unexpected and does not scale. > > > > Because using match data doesn't scale in such cases. We have been using > > I don't understand how it could not scale. That's the entire point of > match data - scaling. > > > compatibles to patch clock trees for the platforms for quite a while. > > You can see that each of the "tunings" is slightly different. From my > > > You have one driver, where are these tunings which are supposed to be > different? You need here only enum or define, in the simplest choice. I think adding enum / define just for the sake of the match data is an overkill. The driver checks for the compatible, tunes clock tree, registers it and then it's done. There is no scalability issue - IOW there are not so many compatible strings being handled by the driver, the is_compatible check is limited to a single point, etc. > > > point of view, this approach provides a nice balance between having a > > completely duplicate driver and having a driver which self-patches the > > tree. > > How duplicate driver got into this? I don't think we talk about the > same. I meant ID table match data. > > > > Best regards, > Krzysztof > -- With best wishes Dmitry