Lines Matching refs:tdev

27 nvkm_device_tegra_power_up(struct nvkm_device_tegra *tdev)  in nvkm_device_tegra_power_up()  argument
31 ret = regulator_enable(tdev->vdd); in nvkm_device_tegra_power_up()
35 ret = clk_prepare_enable(tdev->clk); in nvkm_device_tegra_power_up()
38 ret = clk_prepare_enable(tdev->clk_pwr); in nvkm_device_tegra_power_up()
41 clk_set_rate(tdev->clk_pwr, 204000000); in nvkm_device_tegra_power_up()
44 reset_control_assert(tdev->rst); in nvkm_device_tegra_power_up()
52 reset_control_deassert(tdev->rst); in nvkm_device_tegra_power_up()
58 clk_disable_unprepare(tdev->clk_pwr); in nvkm_device_tegra_power_up()
60 clk_disable_unprepare(tdev->clk); in nvkm_device_tegra_power_up()
62 regulator_disable(tdev->vdd); in nvkm_device_tegra_power_up()
68 nvkm_device_tegra_power_down(struct nvkm_device_tegra *tdev) in nvkm_device_tegra_power_down() argument
70 reset_control_assert(tdev->rst); in nvkm_device_tegra_power_down()
73 clk_disable_unprepare(tdev->clk_pwr); in nvkm_device_tegra_power_down()
74 clk_disable_unprepare(tdev->clk); in nvkm_device_tegra_power_down()
77 return regulator_disable(tdev->vdd); in nvkm_device_tegra_power_down()
81 nvkm_device_tegra_probe_iommu(struct nvkm_device_tegra *tdev) in nvkm_device_tegra_probe_iommu() argument
84 struct device *dev = &tdev->pdev->dev; in nvkm_device_tegra_probe_iommu()
88 if (!tdev->func->iommu_bit) in nvkm_device_tegra_probe_iommu()
91 mutex_init(&tdev->iommu.mutex); in nvkm_device_tegra_probe_iommu()
94 tdev->iommu.domain = iommu_domain_alloc(&platform_bus_type); in nvkm_device_tegra_probe_iommu()
95 if (IS_ERR(tdev->iommu.domain)) in nvkm_device_tegra_probe_iommu()
103 pgsize_bitmap = tdev->iommu.domain->ops->pgsize_bitmap; in nvkm_device_tegra_probe_iommu()
105 tdev->iommu.pgshift = PAGE_SHIFT; in nvkm_device_tegra_probe_iommu()
107 tdev->iommu.pgshift = fls(pgsize_bitmap & ~PAGE_MASK); in nvkm_device_tegra_probe_iommu()
108 if (tdev->iommu.pgshift == 0) { in nvkm_device_tegra_probe_iommu()
112 tdev->iommu.pgshift -= 1; in nvkm_device_tegra_probe_iommu()
115 ret = iommu_attach_device(tdev->iommu.domain, dev); in nvkm_device_tegra_probe_iommu()
119 ret = nvkm_mm_init(&tdev->iommu.mm, 0, in nvkm_device_tegra_probe_iommu()
120 (1ULL << tdev->func->iommu_bit) >> in nvkm_device_tegra_probe_iommu()
121 tdev->iommu.pgshift, 1); in nvkm_device_tegra_probe_iommu()
129 iommu_detach_device(tdev->iommu.domain, dev); in nvkm_device_tegra_probe_iommu()
132 iommu_domain_free(tdev->iommu.domain); in nvkm_device_tegra_probe_iommu()
135 tdev->iommu.domain = NULL; in nvkm_device_tegra_probe_iommu()
136 tdev->iommu.pgshift = 0; in nvkm_device_tegra_probe_iommu()
142 nvkm_device_tegra_remove_iommu(struct nvkm_device_tegra *tdev) in nvkm_device_tegra_remove_iommu() argument
145 if (tdev->iommu.domain) { in nvkm_device_tegra_remove_iommu()
146 nvkm_mm_fini(&tdev->iommu.mm); in nvkm_device_tegra_remove_iommu()
147 iommu_detach_device(tdev->iommu.domain, tdev->device.dev); in nvkm_device_tegra_remove_iommu()
148 iommu_domain_free(tdev->iommu.domain); in nvkm_device_tegra_remove_iommu()
162 struct nvkm_device_tegra *tdev = nvkm_device_tegra(device); in nvkm_device_tegra_resource() local
163 return platform_get_resource(tdev->pdev, IORESOURCE_MEM, bar); in nvkm_device_tegra_resource()
183 struct nvkm_device_tegra *tdev = arg; in nvkm_device_tegra_intr() local
184 struct nvkm_mc *mc = tdev->device.mc; in nvkm_device_tegra_intr()
197 struct nvkm_device_tegra *tdev = nvkm_device_tegra(device); in nvkm_device_tegra_fini() local
198 if (tdev->irq) { in nvkm_device_tegra_fini()
199 free_irq(tdev->irq, tdev); in nvkm_device_tegra_fini()
200 tdev->irq = 0; in nvkm_device_tegra_fini()
207 struct nvkm_device_tegra *tdev = nvkm_device_tegra(device); in nvkm_device_tegra_init() local
210 irq = platform_get_irq_byname(tdev->pdev, "stall"); in nvkm_device_tegra_init()
215 IRQF_SHARED, "nvkm", tdev); in nvkm_device_tegra_init()
219 tdev->irq = irq; in nvkm_device_tegra_init()
226 struct nvkm_device_tegra *tdev = nvkm_device_tegra(device); in nvkm_device_tegra_dtor() local
227 nvkm_device_tegra_power_down(tdev); in nvkm_device_tegra_dtor()
228 nvkm_device_tegra_remove_iommu(tdev); in nvkm_device_tegra_dtor()
229 return tdev; in nvkm_device_tegra_dtor()
250 struct nvkm_device_tegra *tdev; in nvkm_device_tegra_new() local
253 if (!(tdev = kzalloc(sizeof(*tdev), GFP_KERNEL))) in nvkm_device_tegra_new()
256 tdev->func = func; in nvkm_device_tegra_new()
257 tdev->pdev = pdev; in nvkm_device_tegra_new()
258 tdev->irq = -1; in nvkm_device_tegra_new()
260 tdev->vdd = devm_regulator_get(&pdev->dev, "vdd"); in nvkm_device_tegra_new()
261 if (IS_ERR(tdev->vdd)) { in nvkm_device_tegra_new()
262 ret = PTR_ERR(tdev->vdd); in nvkm_device_tegra_new()
266 tdev->rst = devm_reset_control_get(&pdev->dev, "gpu"); in nvkm_device_tegra_new()
267 if (IS_ERR(tdev->rst)) { in nvkm_device_tegra_new()
268 ret = PTR_ERR(tdev->rst); in nvkm_device_tegra_new()
272 tdev->clk = devm_clk_get(&pdev->dev, "gpu"); in nvkm_device_tegra_new()
273 if (IS_ERR(tdev->clk)) { in nvkm_device_tegra_new()
274 ret = PTR_ERR(tdev->clk); in nvkm_device_tegra_new()
278 tdev->clk_pwr = devm_clk_get(&pdev->dev, "pwr"); in nvkm_device_tegra_new()
279 if (IS_ERR(tdev->clk_pwr)) { in nvkm_device_tegra_new()
280 ret = PTR_ERR(tdev->clk_pwr); in nvkm_device_tegra_new()
284 nvkm_device_tegra_probe_iommu(tdev); in nvkm_device_tegra_new()
286 ret = nvkm_device_tegra_power_up(tdev); in nvkm_device_tegra_new()
290 tdev->gpu_speedo = tegra_sku_info.gpu_speedo_value; in nvkm_device_tegra_new()
294 &tdev->device); in nvkm_device_tegra_new()
298 *pdevice = &tdev->device; in nvkm_device_tegra_new()
303 nvkm_device_tegra_power_down(tdev); in nvkm_device_tegra_new()
305 nvkm_device_tegra_remove_iommu(tdev); in nvkm_device_tegra_new()
307 kfree(tdev); in nvkm_device_tegra_new()