mbox series

[TEGRA194_CPUFREQ,v4,0/4] Add cpufreq driver for Tegra194

Message ID 1593186236-12760-1-git-send-email-sumitg@nvidia.com
Headers show
Series Add cpufreq driver for Tegra194 | expand

Message

Sumit Gupta June 26, 2020, 3:43 p.m. UTC
The patch series adds cpufreq driver for Tegra194 SOC.
Incorporated the feedback on previous version patchset.
Please consider this patch series for merging in 5.9.

v3[3] -> v4
- Open code LOOP_FOR_EACH_CPU_OF_CLUSTER macro[Viresh]
- Delete unused funciton map_freq_to_ndiv[Viresh, kernel test bot]
- Remove flush_workqueue from free_resources[Viresh]

v2[2] -> v3
- Set same policy for all cpus in a cluster[Viresh].
- Add compatible string for CPU Complex under cpus node[Thierry].
- Add reference to bpmp node under cpus node[Thierry].
- Bind cpufreq driver to CPU Complex compatible string[Thierry].
- Remove patch to get bpmp data as now using cpus node to get that[Thierry].

v1[1] -> v2:
- Remove cpufreq_lock mutex from tegra194_cpufreq_set_target [Viresh].
- Remove CPUFREQ_ASYNC_NOTIFICATION flag [Viresh].
- Remove redundant _begin|end() call from tegra194_cpufreq_set_target.
- Rename opp_table to freq_table [Viresh].

Sumit Gupta (4):
  dt-bindings: arm: Add t194 ccplex compatible and bpmp property
  arm64: tegra: Add t194 ccplex compatible and bpmp property
  cpufreq: Add Tegra194 cpufreq driver
  arm64: defconfig: Enable CONFIG_ARM_TEGRA194_CPUFREQ

 Documentation/devicetree/bindings/arm/cpus.yaml |   9 +
 arch/arm64/boot/dts/nvidia/tegra194.dtsi        |   2 +
 arch/arm64/configs/defconfig                    |   1 +
 drivers/cpufreq/Kconfig.arm                     |   6 +
 drivers/cpufreq/Makefile                        |   1 +
 drivers/cpufreq/tegra194-cpufreq.c              | 396 ++++++++++++++++++++++++
 6 files changed, 415 insertions(+)
 create mode 100644 drivers/cpufreq/tegra194-cpufreq.c

[1] https://marc.info/?t=157539452300001&r=1&w=2
[2] https://marc.info/?l=linux-tegra&m=158602857106213&w=2
[3] https://marc.info/?l=linux-pm&m=159283376010084&w=2

Comments

Sumit Gupta July 13, 2020, 2:29 p.m. UTC | #1
> 

> On 26-06-20, 21:13, Sumit Gupta wrote:

>> +static int tegra194_cpufreq_probe(struct platform_device *pdev)

>> +{

>> +     struct tegra194_cpufreq_data *data;

>> +     struct tegra_bpmp *bpmp;

>> +     int err, i;

>> +

>> +     data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL);

>> +     if (!data)

>> +             return -ENOMEM;

>> +

>> +     data->num_clusters = MAX_CLUSTERS;

>> +     data->tables = devm_kcalloc(&pdev->dev, data->num_clusters,

>> +                                 sizeof(*data->tables), GFP_KERNEL);

>> +     if (!data->tables)

>> +             return -ENOMEM;

>> +

>> +     platform_set_drvdata(pdev, data);

>> +

>> +     bpmp = tegra_bpmp_get(&pdev->dev);

>> +     if (IS_ERR(bpmp))

>> +             return PTR_ERR(bpmp);

>> +

>> +     read_counters_wq = alloc_workqueue("read_counters_wq", __WQ_LEGACY, 1);

>> +     if (!read_counters_wq) {

>> +             dev_err(&pdev->dev, "fail to create_workqueue\n");

>> +             err = -EINVAL;

>> +             goto put_bpmp;

> 

> This will call destroy_workqueue() eventually and it will crash your

> kernel.

> 

> Apart from this, this stuff looks okay. Don't resend the patch just

> yet (and if required, send only this patch using --in-reply-to flag

> for git send email). Lets wait for an Ack from Rob for the first two

> patches.

> 

Sorry for the delayed response as i was on PTO.
Thank you for the feedback.

Have posted a v5 based on v4 patch set.

>> +     }

>> +

> 

> --

> viresh

>