aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThierry Reding <treding@nvidia.com>2018-09-21 06:27:43 -0400
committerThierry Reding <treding@nvidia.com>2018-09-26 10:04:10 -0400
commit5725daaab55ca023c87ff0f1b2dbf6bf9b38376d (patch)
tree221b9bef645b37ecfde09799e5446c2495a8b3a3
parent759d706f7cb4adbec1c222f7550dc8fa2683c089 (diff)
drm/tegra: hub: Add Tegra194 support
The display hub integrated into Tegra194 is almost identical to the one found on Tegra186. However, it doesn't support DSC (display stream compression) so it isn't fully compatible. Signed-off-by: Thierry Reding <treding@nvidia.com>
-rw-r--r--drivers/gpu/drm/tegra/drm.c1
-rw-r--r--drivers/gpu/drm/tegra/hub.c19
-rw-r--r--drivers/gpu/drm/tegra/hub.h1
3 files changed, 17 insertions, 4 deletions
diff --git a/drivers/gpu/drm/tegra/drm.c b/drivers/gpu/drm/tegra/drm.c
index 9a0efcea217a..4e40ffd2b32e 100644
--- a/drivers/gpu/drm/tegra/drm.c
+++ b/drivers/gpu/drm/tegra/drm.c
@@ -1255,6 +1255,7 @@ static const struct of_device_id host1x_drm_subdevs[] = {
1255 { .compatible = "nvidia,tegra186-sor", }, 1255 { .compatible = "nvidia,tegra186-sor", },
1256 { .compatible = "nvidia,tegra186-sor1", }, 1256 { .compatible = "nvidia,tegra186-sor1", },
1257 { .compatible = "nvidia,tegra186-vic", }, 1257 { .compatible = "nvidia,tegra186-vic", },
1258 { .compatible = "nvidia,tegra194-display", },
1258 { /* sentinel */ } 1259 { /* sentinel */ }
1259}; 1260};
1260 1261
diff --git a/drivers/gpu/drm/tegra/hub.c b/drivers/gpu/drm/tegra/hub.c
index 8f4fcbb515fb..6112d9042979 100644
--- a/drivers/gpu/drm/tegra/hub.c
+++ b/drivers/gpu/drm/tegra/hub.c
@@ -758,10 +758,12 @@ static int tegra_display_hub_probe(struct platform_device *pdev)
758 return err; 758 return err;
759 } 759 }
760 760
761 hub->clk_dsc = devm_clk_get(&pdev->dev, "dsc"); 761 if (hub->soc->supports_dsc) {
762 if (IS_ERR(hub->clk_dsc)) { 762 hub->clk_dsc = devm_clk_get(&pdev->dev, "dsc");
763 err = PTR_ERR(hub->clk_dsc); 763 if (IS_ERR(hub->clk_dsc)) {
764 return err; 764 err = PTR_ERR(hub->clk_dsc);
765 return err;
766 }
765 } 767 }
766 768
767 hub->clk_hub = devm_clk_get(&pdev->dev, "hub"); 769 hub->clk_hub = devm_clk_get(&pdev->dev, "hub");
@@ -890,10 +892,19 @@ static const struct dev_pm_ops tegra_display_hub_pm_ops = {
890 892
891static const struct tegra_display_hub_soc tegra186_display_hub = { 893static const struct tegra_display_hub_soc tegra186_display_hub = {
892 .num_wgrps = 6, 894 .num_wgrps = 6,
895 .supports_dsc = true,
896};
897
898static const struct tegra_display_hub_soc tegra194_display_hub = {
899 .num_wgrps = 6,
900 .supports_dsc = false,
893}; 901};
894 902
895static const struct of_device_id tegra_display_hub_of_match[] = { 903static const struct of_device_id tegra_display_hub_of_match[] = {
896 { 904 {
905 .compatible = "nvidia,tegra194-display",
906 .data = &tegra194_display_hub
907 }, {
897 .compatible = "nvidia,tegra186-display", 908 .compatible = "nvidia,tegra186-display",
898 .data = &tegra186_display_hub 909 .data = &tegra186_display_hub
899 }, { 910 }, {
diff --git a/drivers/gpu/drm/tegra/hub.h b/drivers/gpu/drm/tegra/hub.h
index 85b8bf41a395..6696a85fc1f2 100644
--- a/drivers/gpu/drm/tegra/hub.h
+++ b/drivers/gpu/drm/tegra/hub.h
@@ -38,6 +38,7 @@ to_tegra_shared_plane(struct drm_plane *plane)
38 38
39struct tegra_display_hub_soc { 39struct tegra_display_hub_soc {
40 unsigned int num_wgrps; 40 unsigned int num_wgrps;
41 bool supports_dsc;
41}; 42};
42 43
43struct tegra_display_hub { 44struct tegra_display_hub {