[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <761936e8-1626-47f8-b3f5-ebc62f4a409b@linaro.org>
Date: Mon, 1 Sep 2025 07:56:50 +0100
From: Tudor Ambarus <tudor.ambarus@...aro.org>
To: Krzysztof Kozlowski <krzk@...nel.org>, Rob Herring <robh@...nel.org>,
Krzysztof Kozlowski <krzk+dt@...nel.org>, Conor Dooley
<conor+dt@...nel.org>, Peter Griffin <peter.griffin@...aro.org>,
André Draszik <andre.draszik@...aro.org>,
Michael Turquette <mturquette@...libre.com>, Stephen Boyd
<sboyd@...nel.org>, Alim Akhtar <alim.akhtar@...sung.com>,
Sylwester Nawrocki <s.nawrocki@...sung.com>,
Chanwoo Choi <cw00.choi@...sung.com>,
Catalin Marinas <catalin.marinas@....com>, Will Deacon <will@...nel.org>
Cc: linux-kernel@...r.kernel.org, linux-samsung-soc@...r.kernel.org,
devicetree@...r.kernel.org, linux-arm-kernel@...ts.infradead.org,
linux-clk@...r.kernel.org, willmcvicker@...gle.com, kernel-team@...roid.com
Subject: Re: [PATCH v2 4/5] firmware: exynos-acpm: register ACPM clocks dev
On 8/31/25 11:50 AM, Krzysztof Kozlowski wrote:
> On 27/08/2025 14:42, Tudor Ambarus wrote:
>> +
>> +static const struct acpm_clk_variant gs101_acpm_clks[] = {
>> + ACPM_CLK(CLK_ACPM_DVFS_MIF, "mif"),
>> + ACPM_CLK(CLK_ACPM_DVFS_INT, "int"),
>> + ACPM_CLK(CLK_ACPM_DVFS_CPUCL0, "cpucl0"),
>> + ACPM_CLK(CLK_ACPM_DVFS_CPUCL1, "cpucl1"),
>> + ACPM_CLK(CLK_ACPM_DVFS_CPUCL2, "cpucl2"),
>> + ACPM_CLK(CLK_ACPM_DVFS_G3D, "g3d"),
>> + ACPM_CLK(CLK_ACPM_DVFS_G3DL2, "g3dl2"),
>> + ACPM_CLK(CLK_ACPM_DVFS_TPU, "tpu"),
>> + ACPM_CLK(CLK_ACPM_DVFS_INTCAM, "intcam"),
>> + ACPM_CLK(CLK_ACPM_DVFS_TNR, "tnr"),
>> + ACPM_CLK(CLK_ACPM_DVFS_CAM, "cam"),
>> + ACPM_CLK(CLK_ACPM_DVFS_MFC, "mfc"),
>> + ACPM_CLK(CLK_ACPM_DVFS_DISP, "disp"),
>> + ACPM_CLK(CLK_ACPM_DVFS_BO, "b0"),
>> +};
>
> I don't understand why clocks are defined in the firmware driver, not in
> the clock driver.
I chose to define the clocks in the firmware driver and pass them as
platform data to the clock platform device for extensibility. In case
other SoCs have different clock IDs, they'll be able to pass the
clock data without needing to modify the clock driver. GS201 defines
the same ACPM clocks as GS101, but I don't have access to other newer
SoCs to tell if the ACPM clocks differ or not.
The alternative is to define the clocks in the clock driver and
use platform_device_register_simple() to register the clock platform
device. The clock driver will be rigid in what clocks it supports.
I'm fine either way for now. What do you prefer?
>
> This creates dependency of this patch on the clock patch, so basically
> there is no way I will take it in one cycle.
Would it work to have an immutable tag for the clock and samsung-soc
subsytems to use?
>
>> +
>> /**
>> * acpm_get_saved_rx() - get the response if it was already saved.
>> * @achan: ACPM channel info.
>> @@ -606,6 +636,7 @@ static void acpm_setup_ops(struct acpm_info *acpm)
>>
>> static int acpm_probe(struct platform_device *pdev)
>> {
>> + const struct acpm_clk_platform_data *acpm_clk_pdata;
>> const struct acpm_match_data *match_data;
>> struct device *dev = &pdev->dev;
>> struct device_node *shmem;
>> @@ -647,7 +678,30 @@ static int acpm_probe(struct platform_device *pdev)
>>
>> platform_set_drvdata(pdev, acpm);
>>
>> - return devm_of_platform_populate(dev);
>> + acpm_clk_pdata = match_data->acpm_clk_pdata;
>> + acpm->clk_pdev = platform_device_register_data(dev, "acpm-clocks",
>> + PLATFORM_DEVID_NONE,
>> + acpm_clk_pdata,
>> + sizeof(*acpm_clk_pdata));
>> + if (IS_ERR(acpm->clk_pdev))
>> + return dev_err_probe(dev, PTR_ERR(acpm->clk_pdev),
>> + "Failed to register ACPM clocks device.\n");
>> +
>> + ret = devm_of_platform_populate(dev);
>> + if (ret) {
>> + platform_device_unregister(acpm->clk_pdev);
>
> I think this should stick to devm-interfaces everywhere, not mix them,
> to have exactly expected cleanup sequence. Now your remove() first
> unregisters and then de-populates, which is different order than it was
> done in probe(). Use devm-action handler for device unregistering.
>
Right, I will take a look. Thanks!
ta
Powered by blists - more mailing lists