Skip to content

Commit

Permalink
drm/tegra: gr3d: Track interface version
Browse files Browse the repository at this point in the history
Set the interface version implemented by the gr3d module. This allows
userspace to pass the correct command stream when programming the gr3d
module.

Reviewed-by: Dmitry Osipenko <digetx@gmail.com>
Tested-by: Dmitry Osipenko <digetx@gmail.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
  • Loading branch information
Thierry Reding committed May 18, 2018
1 parent 840fd21 commit 33f150e
Showing 1 changed file with 25 additions and 3 deletions.
28 changes: 25 additions & 3 deletions drivers/gpu/drm/tegra/gr3d.c
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
#include <linux/host1x.h>
#include <linux/iommu.h>
#include <linux/module.h>
#include <linux/of_device.h>
#include <linux/platform_device.h>
#include <linux/reset.h>

Expand All @@ -20,6 +21,10 @@
#include "gem.h"
#include "gr3d.h"

struct gr3d_soc {
unsigned int version;
};

struct gr3d {
struct iommu_group *group;
struct tegra_drm_client client;
Expand All @@ -29,6 +34,8 @@ struct gr3d {
struct reset_control *rst_secondary;
struct reset_control *rst;

const struct gr3d_soc *soc;

DECLARE_BITMAP(addr_regs, GR3D_NUM_REGS);
};

Expand Down Expand Up @@ -151,10 +158,22 @@ static const struct tegra_drm_client_ops gr3d_ops = {
.submit = tegra_drm_submit,
};

static const struct gr3d_soc tegra20_gr3d_soc = {
.version = 0x20,
};

static const struct gr3d_soc tegra30_gr3d_soc = {
.version = 0x30,
};

static const struct gr3d_soc tegra114_gr3d_soc = {
.version = 0x35,
};

static const struct of_device_id tegra_gr3d_match[] = {
{ .compatible = "nvidia,tegra114-gr3d" },
{ .compatible = "nvidia,tegra30-gr3d" },
{ .compatible = "nvidia,tegra20-gr3d" },
{ .compatible = "nvidia,tegra114-gr3d", .data = &tegra114_gr3d_soc },
{ .compatible = "nvidia,tegra30-gr3d", .data = &tegra30_gr3d_soc },
{ .compatible = "nvidia,tegra20-gr3d", .data = &tegra20_gr3d_soc },
{ }
};
MODULE_DEVICE_TABLE(of, tegra_gr3d_match);
Expand Down Expand Up @@ -276,6 +295,8 @@ static int gr3d_probe(struct platform_device *pdev)
if (!gr3d)
return -ENOMEM;

gr3d->soc = of_device_get_match_data(&pdev->dev);

syncpts = devm_kzalloc(&pdev->dev, sizeof(*syncpts), GFP_KERNEL);
if (!syncpts)
return -ENOMEM;
Expand Down Expand Up @@ -333,6 +354,7 @@ static int gr3d_probe(struct platform_device *pdev)
gr3d->client.base.num_syncpts = 1;

INIT_LIST_HEAD(&gr3d->client.list);
gr3d->client.version = gr3d->soc->version;
gr3d->client.ops = &gr3d_ops;

err = host1x_client_register(&gr3d->client.base);
Expand Down

0 comments on commit 33f150e

Please sign in to comment.