mirror of
git://nv-tegra.nvidia.com/linux-nv-oot.git
synced 2025-12-25 02:32:08 +03:00
drm/tegra: Update to Linux v6.8
Update the Tegra DRM driver to align with the upstream Linux v6.8 kernel preserving all the downstream changes that still need to be upstreamed. JIRA LINQPJ14-47 Change-Id: If0a9149bcfa2fd6276ac8100933abc3d532a5ddc Signed-off-by: Jon Hunter <jonathanh@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3333320 Reviewed-by: Mikko Perttunen <mperttunen@nvidia.com> GVS: buildbot_gerritrpt <buildbot_gerritrpt@nvidia.com>
This commit is contained in:
@@ -12,7 +12,9 @@
|
||||
#include <linux/hdmi.h>
|
||||
#include <linux/math64.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/of_device.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/pm_opp.h>
|
||||
#include <linux/pm_runtime.h>
|
||||
#include <linux/regulator/consumer.h>
|
||||
@@ -21,6 +23,7 @@
|
||||
#include <soc/tegra/common.h>
|
||||
#include <sound/hdmi-codec.h>
|
||||
|
||||
#include <drm/drm_bridge_connector.h>
|
||||
#include <drm/drm_atomic_helper.h>
|
||||
#include <drm/drm_crtc.h>
|
||||
#include <drm/drm_debugfs.h>
|
||||
@@ -872,14 +875,7 @@ static int tegra_hdmi_reconfigure_audio(struct tegra_hdmi *hdmi)
|
||||
|
||||
static bool tegra_output_is_hdmi(struct tegra_output *output)
|
||||
{
|
||||
struct edid *edid;
|
||||
|
||||
if (!output->connector.edid_blob_ptr)
|
||||
return false;
|
||||
|
||||
edid = (struct edid *)output->connector.edid_blob_ptr->data;
|
||||
|
||||
return drm_detect_hdmi_monitor(edid);
|
||||
return output->connector.display_info.is_hdmi;
|
||||
}
|
||||
|
||||
static enum drm_connector_status
|
||||
@@ -1561,26 +1557,47 @@ static int tegra_hdmi_init(struct host1x_client *client)
|
||||
{
|
||||
struct tegra_hdmi *hdmi = host1x_client_to_hdmi(client);
|
||||
struct drm_device *drm = dev_get_drvdata(client->host);
|
||||
struct drm_connector *connector;
|
||||
int err;
|
||||
|
||||
hdmi->output.dev = client->dev;
|
||||
|
||||
drm_connector_init_with_ddc(drm, &hdmi->output.connector,
|
||||
&tegra_hdmi_connector_funcs,
|
||||
DRM_MODE_CONNECTOR_HDMIA,
|
||||
hdmi->output.ddc);
|
||||
drm_connector_helper_add(&hdmi->output.connector,
|
||||
&tegra_hdmi_connector_helper_funcs);
|
||||
hdmi->output.connector.dpms = DRM_MODE_DPMS_OFF;
|
||||
|
||||
drm_simple_encoder_init(drm, &hdmi->output.encoder,
|
||||
DRM_MODE_ENCODER_TMDS);
|
||||
drm_encoder_helper_add(&hdmi->output.encoder,
|
||||
&tegra_hdmi_encoder_helper_funcs);
|
||||
|
||||
drm_connector_attach_encoder(&hdmi->output.connector,
|
||||
&hdmi->output.encoder);
|
||||
drm_connector_register(&hdmi->output.connector);
|
||||
if (hdmi->output.bridge) {
|
||||
err = drm_bridge_attach(&hdmi->output.encoder, hdmi->output.bridge,
|
||||
NULL, DRM_BRIDGE_ATTACH_NO_CONNECTOR);
|
||||
if (err) {
|
||||
dev_err(client->dev, "failed to attach bridge: %d\n",
|
||||
err);
|
||||
return err;
|
||||
}
|
||||
|
||||
connector = drm_bridge_connector_init(drm, &hdmi->output.encoder);
|
||||
if (IS_ERR(connector)) {
|
||||
dev_err(client->dev,
|
||||
"failed to initialize bridge connector: %pe\n",
|
||||
connector);
|
||||
return PTR_ERR(connector);
|
||||
}
|
||||
|
||||
drm_connector_attach_encoder(connector, &hdmi->output.encoder);
|
||||
} else {
|
||||
drm_connector_init_with_ddc(drm, &hdmi->output.connector,
|
||||
&tegra_hdmi_connector_funcs,
|
||||
DRM_MODE_CONNECTOR_HDMIA,
|
||||
hdmi->output.ddc);
|
||||
drm_connector_helper_add(&hdmi->output.connector,
|
||||
&tegra_hdmi_connector_helper_funcs);
|
||||
hdmi->output.connector.dpms = DRM_MODE_DPMS_OFF;
|
||||
|
||||
drm_connector_attach_encoder(&hdmi->output.connector,
|
||||
&hdmi->output.encoder);
|
||||
drm_connector_register(&hdmi->output.connector);
|
||||
}
|
||||
|
||||
err = tegra_output_init(drm, &hdmi->output);
|
||||
if (err < 0) {
|
||||
@@ -1786,7 +1803,6 @@ static irqreturn_t tegra_hdmi_irq(int irq, void *data)
|
||||
static int tegra_hdmi_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct tegra_hdmi *hdmi;
|
||||
struct resource *regs;
|
||||
int err;
|
||||
|
||||
hdmi = devm_kzalloc(&pdev->dev, sizeof(*hdmi), GFP_KERNEL);
|
||||
@@ -1848,8 +1864,7 @@ static int tegra_hdmi_probe(struct platform_device *pdev)
|
||||
if (err < 0)
|
||||
return err;
|
||||
|
||||
regs = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
||||
hdmi->regs = devm_ioremap_resource(&pdev->dev, regs);
|
||||
hdmi->regs = devm_platform_ioremap_resource(pdev, 0);
|
||||
if (IS_ERR(hdmi->regs))
|
||||
return PTR_ERR(hdmi->regs);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user