mirror of
git://nv-tegra.nvidia.com/linux-nv-oot.git
synced 2025-12-24 10:11:26 +03:00
drm/tegra: Update to Linux v6.12
Update Tegra DRM to align with Linux v6.12. The output.c driver was updated to use the 'drm_edid_connector_add_modes()' function that was first added in Linux v6.3. Use conftest to detect the presence of the drm_edid_connector_add_modes() function and make the necessary changes to the driver. JIRA LINQPJ14-47 Change-Id: I0ff45ef0ada2f2c2353c1ba579c06ae06122727c Signed-off-by: Jon Hunter <jonathanh@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3333835 Reviewed-by: Mikko Perttunen <mperttunen@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com> Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> GVS: buildbot_gerritrpt <buildbot_gerritrpt@nvidia.com>
This commit is contained in:
@@ -1551,9 +1551,11 @@ static int tegra_dsi_ganged_probe(struct tegra_dsi *dsi)
|
||||
np = of_parse_phandle(dsi->dev->of_node, "nvidia,ganged-mode", 0);
|
||||
if (np) {
|
||||
struct platform_device *gangster = of_find_device_by_node(np);
|
||||
of_node_put(np);
|
||||
if (!gangster)
|
||||
return -EPROBE_DEFER;
|
||||
|
||||
dsi->slave = platform_get_drvdata(gangster);
|
||||
of_node_put(np);
|
||||
|
||||
if (!dsi->slave) {
|
||||
put_device(&gangster->dev);
|
||||
@@ -1601,44 +1603,58 @@ static int tegra_dsi_probe(struct platform_device *pdev)
|
||||
|
||||
if (!pdev->dev.pm_domain) {
|
||||
dsi->rst = devm_reset_control_get(&pdev->dev, "dsi");
|
||||
if (IS_ERR(dsi->rst))
|
||||
return PTR_ERR(dsi->rst);
|
||||
if (IS_ERR(dsi->rst)) {
|
||||
err = PTR_ERR(dsi->rst);
|
||||
goto remove;
|
||||
}
|
||||
}
|
||||
|
||||
dsi->clk = devm_clk_get(&pdev->dev, NULL);
|
||||
if (IS_ERR(dsi->clk))
|
||||
return dev_err_probe(&pdev->dev, PTR_ERR(dsi->clk),
|
||||
"cannot get DSI clock\n");
|
||||
if (IS_ERR(dsi->clk)) {
|
||||
err = dev_err_probe(&pdev->dev, PTR_ERR(dsi->clk),
|
||||
"cannot get DSI clock\n");
|
||||
goto remove;
|
||||
}
|
||||
|
||||
dsi->clk_lp = devm_clk_get(&pdev->dev, "lp");
|
||||
if (IS_ERR(dsi->clk_lp))
|
||||
return dev_err_probe(&pdev->dev, PTR_ERR(dsi->clk_lp),
|
||||
"cannot get low-power clock\n");
|
||||
if (IS_ERR(dsi->clk_lp)) {
|
||||
err = dev_err_probe(&pdev->dev, PTR_ERR(dsi->clk_lp),
|
||||
"cannot get low-power clock\n");
|
||||
goto remove;
|
||||
}
|
||||
|
||||
dsi->clk_parent = devm_clk_get(&pdev->dev, "parent");
|
||||
if (IS_ERR(dsi->clk_parent))
|
||||
return dev_err_probe(&pdev->dev, PTR_ERR(dsi->clk_parent),
|
||||
"cannot get parent clock\n");
|
||||
if (IS_ERR(dsi->clk_parent)) {
|
||||
err = dev_err_probe(&pdev->dev, PTR_ERR(dsi->clk_parent),
|
||||
"cannot get parent clock\n");
|
||||
goto remove;
|
||||
}
|
||||
|
||||
dsi->vdd = devm_regulator_get(&pdev->dev, "avdd-dsi-csi");
|
||||
if (IS_ERR(dsi->vdd))
|
||||
return dev_err_probe(&pdev->dev, PTR_ERR(dsi->vdd),
|
||||
"cannot get VDD supply\n");
|
||||
if (IS_ERR(dsi->vdd)) {
|
||||
err = dev_err_probe(&pdev->dev, PTR_ERR(dsi->vdd),
|
||||
"cannot get VDD supply\n");
|
||||
goto remove;
|
||||
}
|
||||
|
||||
err = tegra_dsi_setup_clocks(dsi);
|
||||
if (err < 0) {
|
||||
dev_err(&pdev->dev, "cannot setup clocks\n");
|
||||
return err;
|
||||
goto remove;
|
||||
}
|
||||
|
||||
regs = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
||||
dsi->regs = devm_ioremap_resource(&pdev->dev, regs);
|
||||
if (IS_ERR(dsi->regs))
|
||||
return PTR_ERR(dsi->regs);
|
||||
if (IS_ERR(dsi->regs)) {
|
||||
err = PTR_ERR(dsi->regs);
|
||||
goto remove;
|
||||
}
|
||||
|
||||
dsi->mipi = tegra_mipi_request(&pdev->dev, pdev->dev.of_node);
|
||||
if (IS_ERR(dsi->mipi))
|
||||
return PTR_ERR(dsi->mipi);
|
||||
if (IS_ERR(dsi->mipi)) {
|
||||
err = PTR_ERR(dsi->mipi);
|
||||
goto remove;
|
||||
}
|
||||
|
||||
dsi->host.ops = &tegra_dsi_host_ops;
|
||||
dsi->host.dev = &pdev->dev;
|
||||
@@ -1666,9 +1682,12 @@ static int tegra_dsi_probe(struct platform_device *pdev)
|
||||
return 0;
|
||||
|
||||
unregister:
|
||||
pm_runtime_disable(&pdev->dev);
|
||||
mipi_dsi_host_unregister(&dsi->host);
|
||||
mipi_free:
|
||||
tegra_mipi_free(dsi->mipi);
|
||||
remove:
|
||||
tegra_output_remove(&dsi->output);
|
||||
return err;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user