On 22/10/2024 08:34, Imran Shaik wrote: > > > On 10/21/2024 8:41 PM, Krzysztof Kozlowski 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. >> >>> 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. >>> > > I agree with Dmitry. If I understand correctly, to add match data > support, we need to define the gpu_cc_qcs8300_clocks struct by > duplicating the entries from gpu_cc_sa8775p_clocks and then adding the > additional qcs8300 clocks. The compatible approach is simpler and used > across most existing platforms. > You don't have to define any structs. You pass enum and retrieve it... Best regards, Krzysztof