18.08.2021 17:07, Thierry Reding пишет:
> On Tue, Aug 17, 2021 at 04:27:27AM +0300, Dmitry Osipenko wrote:
> [...]
>> +struct clk *tegra_clk_register(struct clk_hw *hw)
>> +{
>> +    struct platform_device *pdev;
>> +    struct device *dev = NULL;
>> +    struct device_node *np;
>> +    const char *dev_name;
>> +
>> +    np = tegra_clk_get_of_node(hw);
>> +
>> +    if (!of_device_is_available(np))
>> +            goto put_node;
>> +
>> +    dev_name = kasprintf(GFP_KERNEL, "tegra_clk_%s", hw->init->name);
>> +    if (!dev_name)
>> +            goto put_node;
>> +
>> +    pdev = of_platform_device_create(np, dev_name, NULL);
>> +    if (!pdev) {
>> +            pr_err("%s: failed to create device for %pOF\n", __func__, np);
>> +            kfree(dev_name);
>> +            goto put_node;
>> +    }
>> +
>> +    dev = &pdev->dev;
>> +    pm_runtime_enable(dev);
>> +put_node:
>> +    of_node_put(np);
>> +
>> +    return clk_register(dev, hw);
>> +}
> 
> This looks wrong. Why do we need struct platform_device objects for each
> of these clocks? That's going to be a massive amount of platform devices
> and they will completely mess up sysfs.

RPM works with a device. It's not a massive amount of devices, it's one
device for T20 and four devices for T30.

Reply via email to