mirror of
git://nv-tegra.nvidia.com/linux-nv-oot.git
synced 2025-12-25 02:32:08 +03:00
gpu: host1x: Syncpoint interrupt sharding
Support sharded syncpoint interrupts on Tegra234+. This feature allows specifying one of eight interrupt lines for each syncpoint to lower processing latency of syncpoint threshold interrupts. Jira HOSTX-4710 Signed-off-by: Mikko Perttunen <mperttunen@nvidia.com> Change-Id: Idfcb04e97c944b8e1c26a8f62e8393180692eb30 Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/2898521 Reviewed-by: Santosh BS <santoshb@nvidia.com> Reviewed-by: Johnny Liu <johnliu@nvidia.com> GVS: Gerrit_Virtual_Submit <buildbot_gerritrpt@nvidia.com>
This commit is contained in:
committed by
mobile promotions
parent
2a4c0e02e1
commit
1b89a8395f
@@ -795,7 +795,7 @@ static int host1x_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct resource *res;
|
||||
struct host1x *host;
|
||||
int err;
|
||||
int err, i;
|
||||
|
||||
host = devm_kzalloc(&pdev->dev, sizeof(*host), GFP_KERNEL);
|
||||
if (!host)
|
||||
@@ -833,9 +833,29 @@ static int host1x_probe(struct platform_device *pdev)
|
||||
return PTR_ERR(host->actmon_regs);
|
||||
}
|
||||
|
||||
host->syncpt_irq = platform_get_irq(pdev, 0);
|
||||
if (host->syncpt_irq < 0)
|
||||
return host->syncpt_irq;
|
||||
for (i = 0; i < ARRAY_SIZE(host->syncpt_irqs); i++) {
|
||||
char irq_name[] = "syncptX";
|
||||
sprintf(irq_name, "syncpt%d", i);
|
||||
|
||||
err = platform_get_irq_byname_optional(pdev, irq_name);
|
||||
if (err == -ENXIO)
|
||||
break;
|
||||
if (err < 0)
|
||||
return err;
|
||||
|
||||
host->syncpt_irqs[i] = err;
|
||||
}
|
||||
|
||||
host->num_syncpt_irqs = i;
|
||||
|
||||
/* Device tree without irq names */
|
||||
if (i == 0) {
|
||||
host->syncpt_irqs[0] = platform_get_irq(pdev, 0);
|
||||
if (host->syncpt_irqs[0] < 0)
|
||||
return host->syncpt_irqs[0];
|
||||
|
||||
host->num_syncpt_irqs = 1;
|
||||
}
|
||||
|
||||
host->general_irq = platform_get_irq_byname_optional(pdev, "host1x");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user