17974dd1bSBen Skeggs #ifndef __NVKM_DEVICE_TEGRA_H__ 27974dd1bSBen Skeggs #define __NVKM_DEVICE_TEGRA_H__ 37974dd1bSBen Skeggs #include <core/device.h> 443a70661SBen Skeggs #include <core/mm.h> 57974dd1bSBen Skeggs 67974dd1bSBen Skeggs struct nvkm_device_tegra { 77974dd1bSBen Skeggs struct nvkm_device device; 87974dd1bSBen Skeggs struct platform_device *pdev; 92b700825SBen Skeggs int irq; 1043a70661SBen Skeggs 1143a70661SBen Skeggs struct reset_control *rst; 1243a70661SBen Skeggs struct clk *clk; 1343a70661SBen Skeggs struct clk *clk_pwr; 1443a70661SBen Skeggs 1543a70661SBen Skeggs struct regulator *vdd; 1643a70661SBen Skeggs 1743a70661SBen Skeggs struct { 1843a70661SBen Skeggs /* 1943a70661SBen Skeggs * Protects accesses to mm from subsystems 2043a70661SBen Skeggs */ 2143a70661SBen Skeggs struct mutex mutex; 2243a70661SBen Skeggs 2343a70661SBen Skeggs struct nvkm_mm mm; 2443a70661SBen Skeggs struct iommu_domain *domain; 2543a70661SBen Skeggs unsigned long pgshift; 2643a70661SBen Skeggs } iommu; 2743a70661SBen Skeggs 2843a70661SBen Skeggs int gpu_speedo; 297974dd1bSBen Skeggs }; 307974dd1bSBen Skeggs 317974dd1bSBen Skeggs int nvkm_device_tegra_new(struct platform_device *, 327974dd1bSBen Skeggs const char *cfg, const char *dbg, 337974dd1bSBen Skeggs bool detect, bool mmio, u64 subdev_mask, 347974dd1bSBen Skeggs struct nvkm_device **); 357974dd1bSBen Skeggs #endif 36