diff options
Diffstat (limited to 'drivers/gpu/nvgpu/os/linux/module.c')
-rw-r--r-- | drivers/gpu/nvgpu/os/linux/module.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/os/linux/module.c b/drivers/gpu/nvgpu/os/linux/module.c index a81d837b..ebe2e650 100644 --- a/drivers/gpu/nvgpu/os/linux/module.c +++ b/drivers/gpu/nvgpu/os/linux/module.c | |||
@@ -680,6 +680,16 @@ void __iomem *nvgpu_devm_ioremap(struct device *dev, resource_size_t offset, | |||
680 | return devm_ioremap(dev, offset, size); | 680 | return devm_ioremap(dev, offset, size); |
681 | } | 681 | } |
682 | 682 | ||
683 | u64 nvgpu_resource_addr(struct platform_device *dev, int i) | ||
684 | { | ||
685 | struct resource *r = platform_get_resource(dev, IORESOURCE_MEM, i); | ||
686 | |||
687 | if (!r) | ||
688 | return 0; | ||
689 | |||
690 | return r->start; | ||
691 | } | ||
692 | |||
683 | static irqreturn_t gk20a_intr_isr_stall(int irq, void *dev_id) | 693 | static irqreturn_t gk20a_intr_isr_stall(int irq, void *dev_id) |
684 | { | 694 | { |
685 | struct gk20a *g = dev_id; | 695 | struct gk20a *g = dev_id; |
@@ -764,6 +774,14 @@ static int gk20a_init_support(struct platform_device *pdev) | |||
764 | goto fail; | 774 | goto fail; |
765 | } | 775 | } |
766 | 776 | ||
777 | l->regs_bus_addr = nvgpu_resource_addr(pdev, | ||
778 | GK20A_BAR0_IORESOURCE_MEM); | ||
779 | if (!l->regs_bus_addr) { | ||
780 | nvgpu_err(g, "failed to read register bus offset"); | ||
781 | err = -ENODEV; | ||
782 | goto fail; | ||
783 | } | ||
784 | |||
767 | l->bar1 = nvgpu_devm_ioremap_resource(pdev, | 785 | l->bar1 = nvgpu_devm_ioremap_resource(pdev, |
768 | GK20A_BAR1_IORESOURCE_MEM, | 786 | GK20A_BAR1_IORESOURCE_MEM, |
769 | &l->bar1_mem); | 787 | &l->bar1_mem); |