Lines Matching refs:gpu
37 static int nouveau_platform_power_up(struct nouveau_platform_gpu *gpu) in nouveau_platform_power_up() argument
41 err = regulator_enable(gpu->vdd); in nouveau_platform_power_up()
45 err = clk_prepare_enable(gpu->clk); in nouveau_platform_power_up()
48 err = clk_prepare_enable(gpu->clk_pwr); in nouveau_platform_power_up()
51 clk_set_rate(gpu->clk_pwr, 204000000); in nouveau_platform_power_up()
54 reset_control_assert(gpu->rst); in nouveau_platform_power_up()
62 reset_control_deassert(gpu->rst); in nouveau_platform_power_up()
68 clk_disable_unprepare(gpu->clk_pwr); in nouveau_platform_power_up()
70 clk_disable_unprepare(gpu->clk); in nouveau_platform_power_up()
72 regulator_disable(gpu->vdd); in nouveau_platform_power_up()
77 static int nouveau_platform_power_down(struct nouveau_platform_gpu *gpu) in nouveau_platform_power_down() argument
81 reset_control_assert(gpu->rst); in nouveau_platform_power_down()
84 clk_disable_unprepare(gpu->clk_pwr); in nouveau_platform_power_down()
85 clk_disable_unprepare(gpu->clk); in nouveau_platform_power_down()
88 err = regulator_disable(gpu->vdd); in nouveau_platform_power_down()
96 struct nouveau_platform_gpu *gpu) in nouveau_platform_probe_iommu() argument
101 mutex_init(&gpu->iommu.mutex); in nouveau_platform_probe_iommu()
104 gpu->iommu.domain = iommu_domain_alloc(&platform_bus_type); in nouveau_platform_probe_iommu()
105 if (IS_ERR(gpu->iommu.domain)) in nouveau_platform_probe_iommu()
113 pgsize_bitmap = gpu->iommu.domain->ops->pgsize_bitmap; in nouveau_platform_probe_iommu()
115 gpu->iommu.pgshift = PAGE_SHIFT; in nouveau_platform_probe_iommu()
117 gpu->iommu.pgshift = fls(pgsize_bitmap & ~PAGE_MASK); in nouveau_platform_probe_iommu()
118 if (gpu->iommu.pgshift == 0) { in nouveau_platform_probe_iommu()
122 gpu->iommu.pgshift -= 1; in nouveau_platform_probe_iommu()
125 err = iommu_attach_device(gpu->iommu.domain, dev); in nouveau_platform_probe_iommu()
129 err = nvkm_mm_init(&gpu->iommu._mm, 0, in nouveau_platform_probe_iommu()
130 (1ULL << 40) >> gpu->iommu.pgshift, 1); in nouveau_platform_probe_iommu()
134 gpu->iommu.mm = &gpu->iommu._mm; in nouveau_platform_probe_iommu()
140 iommu_detach_device(gpu->iommu.domain, dev); in nouveau_platform_probe_iommu()
143 iommu_domain_free(gpu->iommu.domain); in nouveau_platform_probe_iommu()
146 gpu->iommu.domain = NULL; in nouveau_platform_probe_iommu()
147 gpu->iommu.pgshift = 0; in nouveau_platform_probe_iommu()
152 struct nouveau_platform_gpu *gpu) in nouveau_platform_remove_iommu() argument
154 if (gpu->iommu.domain) { in nouveau_platform_remove_iommu()
155 nvkm_mm_fini(&gpu->iommu._mm); in nouveau_platform_remove_iommu()
156 iommu_detach_device(gpu->iommu.domain, dev); in nouveau_platform_remove_iommu()
157 iommu_domain_free(gpu->iommu.domain); in nouveau_platform_remove_iommu()
163 struct nouveau_platform_gpu *gpu; in nouveau_platform_probe() local
168 gpu = devm_kzalloc(&pdev->dev, sizeof(*gpu), GFP_KERNEL); in nouveau_platform_probe()
169 if (!gpu) in nouveau_platform_probe()
172 gpu->vdd = devm_regulator_get(&pdev->dev, "vdd"); in nouveau_platform_probe()
173 if (IS_ERR(gpu->vdd)) in nouveau_platform_probe()
174 return PTR_ERR(gpu->vdd); in nouveau_platform_probe()
176 gpu->rst = devm_reset_control_get(&pdev->dev, "gpu"); in nouveau_platform_probe()
177 if (IS_ERR(gpu->rst)) in nouveau_platform_probe()
178 return PTR_ERR(gpu->rst); in nouveau_platform_probe()
180 gpu->clk = devm_clk_get(&pdev->dev, "gpu"); in nouveau_platform_probe()
181 if (IS_ERR(gpu->clk)) in nouveau_platform_probe()
182 return PTR_ERR(gpu->clk); in nouveau_platform_probe()
184 gpu->clk_pwr = devm_clk_get(&pdev->dev, "pwr"); in nouveau_platform_probe()
185 if (IS_ERR(gpu->clk_pwr)) in nouveau_platform_probe()
186 return PTR_ERR(gpu->clk_pwr); in nouveau_platform_probe()
188 nouveau_platform_probe_iommu(&pdev->dev, gpu); in nouveau_platform_probe()
190 err = nouveau_platform_power_up(gpu); in nouveau_platform_probe()
200 device->gpu = gpu; in nouveau_platform_probe()
213 nouveau_platform_power_down(gpu); in nouveau_platform_probe()
214 nouveau_platform_remove_iommu(&pdev->dev, gpu); in nouveau_platform_probe()
224 struct nouveau_platform_gpu *gpu = nv_device_to_platform(device)->gpu; in nouveau_platform_remove() local
229 err = nouveau_platform_power_down(gpu); in nouveau_platform_remove()
231 nouveau_platform_remove_iommu(&pdev->dev, gpu); in nouveau_platform_remove()