diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/gpu/nvgpu/gp10b/cde_gp10b.c | 4 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gp10b/gp10b_sysfs.c | 18 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gp10b/gp10b_sysfs.h | 2 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gp10b/gr_gp10b.h | 6 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gp10b/platform_gp10b_tegra.c | 101 |
5 files changed, 61 insertions, 70 deletions
diff --git a/drivers/gpu/nvgpu/gp10b/cde_gp10b.c b/drivers/gpu/nvgpu/gp10b/cde_gp10b.c index dadec4d2..4a16abd1 100644 --- a/drivers/gpu/nvgpu/gp10b/cde_gp10b.c +++ b/drivers/gpu/nvgpu/gp10b/cde_gp10b.c | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * GP10B CDE | 2 | * GP10B CDE |
3 | * | 3 | * |
4 | * Copyright (c) 2015, NVIDIA CORPORATION. All rights reserved. | 4 | * Copyright (c) 2015-2016, NVIDIA CORPORATION. All rights reserved. |
5 | * | 5 | * |
6 | * This program is free software; you can redistribute it and/or modify it | 6 | * This program is free software; you can redistribute it and/or modify it |
7 | * under the terms and conditions of the GNU General Public License, | 7 | * under the terms and conditions of the GNU General Public License, |
@@ -46,7 +46,7 @@ static void gp10b_cde_get_program_numbers(struct gk20a *g, | |||
46 | } | 46 | } |
47 | if (g->mm.bypass_smmu) { | 47 | if (g->mm.bypass_smmu) { |
48 | if (!g->mm.disable_bigpage) { | 48 | if (!g->mm.disable_bigpage) { |
49 | gk20a_warn(&g->dev->dev, | 49 | gk20a_warn(g->dev, |
50 | "when bypass_smmu is 1, disable_bigpage must be 1 too"); | 50 | "when bypass_smmu is 1, disable_bigpage must be 1 too"); |
51 | } | 51 | } |
52 | hprog |= 1; | 52 | hprog |= 1; |
diff --git a/drivers/gpu/nvgpu/gp10b/gp10b_sysfs.c b/drivers/gpu/nvgpu/gp10b/gp10b_sysfs.c index 800f39c3..5035bb99 100644 --- a/drivers/gpu/nvgpu/gp10b/gp10b_sysfs.c +++ b/drivers/gpu/nvgpu/gp10b/gp10b_sysfs.c | |||
@@ -20,11 +20,10 @@ | |||
20 | 20 | ||
21 | #define ROOTRW (S_IRWXU|S_IRGRP|S_IROTH) | 21 | #define ROOTRW (S_IRWXU|S_IRGRP|S_IROTH) |
22 | 22 | ||
23 | static ssize_t ecc_enable_store(struct device *device, | 23 | static ssize_t ecc_enable_store(struct device *dev, |
24 | struct device_attribute *attr, const char *buf, size_t count) | 24 | struct device_attribute *attr, const char *buf, size_t count) |
25 | { | 25 | { |
26 | struct platform_device *ndev = to_platform_device(device); | 26 | struct gk20a *g = get_gk20a(dev); |
27 | struct gk20a *g = get_gk20a(ndev); | ||
28 | u32 ecc_mask; | 27 | u32 ecc_mask; |
29 | u32 err = 0; | 28 | u32 err = 0; |
30 | 29 | ||
@@ -33,17 +32,16 @@ static ssize_t ecc_enable_store(struct device *device, | |||
33 | err = g->ops.pmu.send_lrf_tex_ltc_dram_overide_en_dis_cmd | 32 | err = g->ops.pmu.send_lrf_tex_ltc_dram_overide_en_dis_cmd |
34 | (g, ecc_mask); | 33 | (g, ecc_mask); |
35 | if (err) | 34 | if (err) |
36 | dev_err(device, "ECC override did not happen\n"); | 35 | dev_err(dev, "ECC override did not happen\n"); |
37 | } else | 36 | } else |
38 | return -EINVAL; | 37 | return -EINVAL; |
39 | return count; | 38 | return count; |
40 | } | 39 | } |
41 | 40 | ||
42 | static ssize_t ecc_enable_read(struct device *device, | 41 | static ssize_t ecc_enable_read(struct device *dev, |
43 | struct device_attribute *attr, char *buf) | 42 | struct device_attribute *attr, char *buf) |
44 | { | 43 | { |
45 | struct platform_device *ndev = to_platform_device(device); | 44 | struct gk20a *g = get_gk20a(dev); |
46 | struct gk20a *g = get_gk20a(ndev); | ||
47 | 45 | ||
48 | return sprintf(buf, "ecc override =0x%x\n", | 46 | return sprintf(buf, "ecc override =0x%x\n", |
49 | g->ops.gr.get_lrf_tex_ltc_dram_override(g)); | 47 | g->ops.gr.get_lrf_tex_ltc_dram_override(g)); |
@@ -51,13 +49,13 @@ static ssize_t ecc_enable_read(struct device *device, | |||
51 | 49 | ||
52 | static DEVICE_ATTR(ecc_enable, ROOTRW, ecc_enable_read, ecc_enable_store); | 50 | static DEVICE_ATTR(ecc_enable, ROOTRW, ecc_enable_read, ecc_enable_store); |
53 | 51 | ||
54 | void gp10b_create_sysfs(struct platform_device *dev) | 52 | void gp10b_create_sysfs(struct device *dev) |
55 | { | 53 | { |
56 | int error = 0; | 54 | int error = 0; |
57 | 55 | ||
58 | error |= device_create_file(&dev->dev, &dev_attr_ecc_enable); | 56 | error |= device_create_file(dev, &dev_attr_ecc_enable); |
59 | if (error) | 57 | if (error) |
60 | dev_err(&dev->dev, "Failed to create sysfs attributes!\n"); | 58 | dev_err(dev, "Failed to create sysfs attributes!\n"); |
61 | } | 59 | } |
62 | 60 | ||
63 | void gp10b_remove_sysfs(struct device *dev) | 61 | void gp10b_remove_sysfs(struct device *dev) |
diff --git a/drivers/gpu/nvgpu/gp10b/gp10b_sysfs.h b/drivers/gpu/nvgpu/gp10b/gp10b_sysfs.h index c1d101da..7c3d3400 100644 --- a/drivers/gpu/nvgpu/gp10b/gp10b_sysfs.h +++ b/drivers/gpu/nvgpu/gp10b/gp10b_sysfs.h | |||
@@ -19,7 +19,7 @@ | |||
19 | /*ECC Fuse*/ | 19 | /*ECC Fuse*/ |
20 | #define FUSE_OPT_ECC_EN 0x358 | 20 | #define FUSE_OPT_ECC_EN 0x358 |
21 | 21 | ||
22 | void gp10b_create_sysfs(struct platform_device *dev); | 22 | void gp10b_create_sysfs(struct device *dev); |
23 | void gp10b_remove_sysfs(struct device *dev); | 23 | void gp10b_remove_sysfs(struct device *dev); |
24 | 24 | ||
25 | #endif /*_GP10B_SYSFS_H_*/ | 25 | #endif /*_GP10B_SYSFS_H_*/ |
diff --git a/drivers/gpu/nvgpu/gp10b/gr_gp10b.h b/drivers/gpu/nvgpu/gp10b/gr_gp10b.h index bd4b5879..25509d50 100644 --- a/drivers/gpu/nvgpu/gp10b/gr_gp10b.h +++ b/drivers/gpu/nvgpu/gp10b/gr_gp10b.h | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * GM20B GPU GR | 2 | * GP10B GPU GR |
3 | * | 3 | * |
4 | * Copyright (c) 2015, NVIDIA CORPORATION. All rights reserved. | 4 | * Copyright (c) 2015-2016, NVIDIA CORPORATION. All rights reserved. |
5 | * | 5 | * |
6 | * This program is free software; you can redistribute it and/or modify it | 6 | * This program is free software; you can redistribute it and/or modify it |
7 | * under the terms and conditions of the GNU General Public License, | 7 | * under the terms and conditions of the GNU General Public License, |
@@ -35,7 +35,7 @@ enum { | |||
35 | void gp10b_init_gr(struct gpu_ops *ops); | 35 | void gp10b_init_gr(struct gpu_ops *ops); |
36 | int gr_gp10b_alloc_buffer(struct vm_gk20a *vm, size_t size, | 36 | int gr_gp10b_alloc_buffer(struct vm_gk20a *vm, size_t size, |
37 | struct mem_desc *mem); | 37 | struct mem_desc *mem); |
38 | void gr_gp10b_create_sysfs(struct platform_device *dev); | 38 | void gr_gp10b_create_sysfs(struct device *dev); |
39 | 39 | ||
40 | struct ecc_stat { | 40 | struct ecc_stat { |
41 | char **names; | 41 | char **names; |
diff --git a/drivers/gpu/nvgpu/gp10b/platform_gp10b_tegra.c b/drivers/gpu/nvgpu/gp10b/platform_gp10b_tegra.c index 6cb89cae..7d8312fc 100644 --- a/drivers/gpu/nvgpu/gp10b/platform_gp10b_tegra.c +++ b/drivers/gpu/nvgpu/gp10b/platform_gp10b_tegra.c | |||
@@ -1,7 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * drivers/video/tegra/host/gk20a/platform_gk20a_tegra.c | 2 | * GP10B Tegra Platform Interface |
3 | * | ||
4 | * GK20A Tegra Platform Interface | ||
5 | * | 3 | * |
6 | * Copyright (c) 2014-2016, NVIDIA CORPORATION. All rights reserved. | 4 | * Copyright (c) 2014-2016, NVIDIA CORPORATION. All rights reserved. |
7 | * | 5 | * |
@@ -62,11 +60,9 @@ static void gr_gp10b_remove_sysfs(struct device *dev); | |||
62 | * the clock information to gp10b platform data. | 60 | * the clock information to gp10b platform data. |
63 | */ | 61 | */ |
64 | 62 | ||
65 | static int gp10b_tegra_get_clocks(struct platform_device *pdev) | 63 | static int gp10b_tegra_get_clocks(struct device *dev) |
66 | { | 64 | { |
67 | struct gk20a_platform *platform = platform_get_drvdata(pdev); | 65 | struct gk20a_platform *platform = dev_get_drvdata(dev); |
68 | struct gk20a *g = get_gk20a(pdev); | ||
69 | struct device *dev = dev_from_gk20a(g); | ||
70 | int i; | 66 | int i; |
71 | 67 | ||
72 | if (tegra_platform_is_linsim()) | 68 | if (tegra_platform_is_linsim()) |
@@ -79,7 +75,7 @@ static int gp10b_tegra_get_clocks(struct platform_device *pdev) | |||
79 | 75 | ||
80 | c = clk_get(dev, tegra_gp10b_clocks[i].name); | 76 | c = clk_get(dev, tegra_gp10b_clocks[i].name); |
81 | if (IS_ERR(c)) { | 77 | if (IS_ERR(c)) { |
82 | gk20a_err(&pdev->dev, "cannot get clock %s", | 78 | gk20a_err(dev, "cannot get clock %s", |
83 | tegra_gp10b_clocks[i].name); | 79 | tegra_gp10b_clocks[i].name); |
84 | } else { | 80 | } else { |
85 | clk_set_rate(c, rate); | 81 | clk_set_rate(c, rate); |
@@ -91,9 +87,9 @@ static int gp10b_tegra_get_clocks(struct platform_device *pdev) | |||
91 | return 0; | 87 | return 0; |
92 | } | 88 | } |
93 | 89 | ||
94 | static void gp10b_tegra_scale_init(struct platform_device *pdev) | 90 | static void gp10b_tegra_scale_init(struct device *dev) |
95 | { | 91 | { |
96 | struct gk20a_platform *platform = gk20a_get_platform(pdev); | 92 | struct gk20a_platform *platform = gk20a_get_platform(dev); |
97 | struct gk20a_scale_profile *profile = platform->g->scale_profile; | 93 | struct gk20a_scale_profile *profile = platform->g->scale_profile; |
98 | struct tegra_bwmgr_client *bwmgr_handle; | 94 | struct tegra_bwmgr_client *bwmgr_handle; |
99 | 95 | ||
@@ -104,9 +100,9 @@ static void gp10b_tegra_scale_init(struct platform_device *pdev) | |||
104 | profile->private_data = (void *)bwmgr_handle; | 100 | profile->private_data = (void *)bwmgr_handle; |
105 | } | 101 | } |
106 | 102 | ||
107 | static void gp10b_tegra_scale_exit(struct platform_device *pdev) | 103 | static void gp10b_tegra_scale_exit(struct device *dev) |
108 | { | 104 | { |
109 | struct gk20a_platform *platform = gk20a_get_platform(pdev); | 105 | struct gk20a_platform *platform = gk20a_get_platform(dev); |
110 | struct gk20a_scale_profile *profile = platform->g->scale_profile; | 106 | struct gk20a_scale_profile *profile = platform->g->scale_profile; |
111 | 107 | ||
112 | if (profile) | 108 | if (profile) |
@@ -114,30 +110,29 @@ static void gp10b_tegra_scale_exit(struct platform_device *pdev) | |||
114 | (struct tegra_bwmgr_client *)profile->private_data); | 110 | (struct tegra_bwmgr_client *)profile->private_data); |
115 | } | 111 | } |
116 | 112 | ||
117 | 113 | static int gp10b_tegra_probe(struct device *dev) | |
118 | static int gp10b_tegra_probe(struct platform_device *pdev) | ||
119 | { | 114 | { |
120 | struct gk20a_platform *platform = gk20a_get_platform(pdev); | 115 | struct gk20a_platform *platform = dev_get_drvdata(dev); |
121 | struct device_node *np = pdev->dev.of_node; | 116 | struct device_node *np = dev->of_node; |
122 | struct device_node *host1x_node; | 117 | struct device_node *host1x_node; |
123 | struct platform_device *host1x_pdev; | 118 | struct platform_device *host1x_pdev; |
124 | const __be32 *host1x_ptr; | 119 | const __be32 *host1x_ptr; |
125 | 120 | ||
126 | host1x_ptr = of_get_property(np, "nvidia,host1x", NULL); | 121 | host1x_ptr = of_get_property(np, "nvidia,host1x", NULL); |
127 | if (!host1x_ptr) { | 122 | if (!host1x_ptr) { |
128 | gk20a_err(&pdev->dev, "host1x device not available"); | 123 | gk20a_err(dev, "host1x device not available"); |
129 | return -ENOSYS; | 124 | return -ENOSYS; |
130 | } | 125 | } |
131 | 126 | ||
132 | host1x_node = of_find_node_by_phandle(be32_to_cpup(host1x_ptr)); | 127 | host1x_node = of_find_node_by_phandle(be32_to_cpup(host1x_ptr)); |
133 | host1x_pdev = of_find_device_by_node(host1x_node); | 128 | host1x_pdev = of_find_device_by_node(host1x_node); |
134 | if (!host1x_pdev) { | 129 | if (!host1x_pdev) { |
135 | gk20a_err(&pdev->dev, "host1x device not available"); | 130 | gk20a_err(dev, "host1x device not available"); |
136 | return -ENOSYS; | 131 | return -ENOSYS; |
137 | } | 132 | } |
138 | 133 | ||
139 | platform->g->host1x_dev = host1x_pdev; | 134 | platform->g->host1x_dev = host1x_pdev; |
140 | platform->bypass_smmu = !device_is_iommuable(&pdev->dev); | 135 | platform->bypass_smmu = !device_is_iommuable(dev); |
141 | platform->disable_bigpage = platform->bypass_smmu; | 136 | platform->disable_bigpage = platform->bypass_smmu; |
142 | 137 | ||
143 | platform->g->gr.t18x.ctx_vars.dump_ctxsw_stats_on_channel_close | 138 | platform->g->gr.t18x.ctx_vars.dump_ctxsw_stats_on_channel_close |
@@ -165,39 +160,39 @@ static int gp10b_tegra_probe(struct platform_device *pdev) | |||
165 | &platform->g->gr.t18x. | 160 | &platform->g->gr.t18x. |
166 | ctx_vars.dump_ctxsw_stats_on_channel_close); | 161 | ctx_vars.dump_ctxsw_stats_on_channel_close); |
167 | 162 | ||
168 | gp10b_tegra_get_clocks(pdev); | 163 | gp10b_tegra_get_clocks(dev); |
169 | 164 | ||
170 | return 0; | 165 | return 0; |
171 | } | 166 | } |
172 | 167 | ||
173 | static int gp10b_tegra_late_probe(struct platform_device *pdev) | 168 | static int gp10b_tegra_late_probe(struct device *dev) |
174 | { | 169 | { |
175 | /* Make gk20a power domain a subdomain of host1x */ | 170 | /* Make gk20a power domain a subdomain of host1x */ |
176 | nvhost_register_client_domain(dev_to_genpd(&pdev->dev)); | 171 | nvhost_register_client_domain(dev_to_genpd(dev)); |
177 | /*Create GP10B specific sysfs*/ | 172 | /*Create GP10B specific sysfs*/ |
178 | gp10b_create_sysfs(pdev); | 173 | gp10b_create_sysfs(dev); |
179 | 174 | ||
180 | /* Initialise tegra specific scaling quirks */ | 175 | /* Initialise tegra specific scaling quirks */ |
181 | gp10b_tegra_scale_init(pdev); | 176 | gp10b_tegra_scale_init(dev); |
182 | return 0; | 177 | return 0; |
183 | } | 178 | } |
184 | 179 | ||
185 | static int gp10b_tegra_remove(struct platform_device *pdev) | 180 | static int gp10b_tegra_remove(struct device *dev) |
186 | { | 181 | { |
187 | /* remove gk20a power subdomain from host1x */ | 182 | /* remove gk20a power subdomain from host1x */ |
188 | nvhost_unregister_client_domain(dev_to_genpd(&pdev->dev)); | 183 | nvhost_unregister_client_domain(dev_to_genpd(dev)); |
189 | gr_gp10b_remove_sysfs(&pdev->dev); | 184 | gr_gp10b_remove_sysfs(dev); |
190 | /*Remove GP10B specific sysfs*/ | 185 | /*Remove GP10B specific sysfs*/ |
191 | gp10b_remove_sysfs(&pdev->dev); | 186 | gp10b_remove_sysfs(dev); |
192 | 187 | ||
193 | /* deinitialise tegra specific scaling quirks */ | 188 | /* deinitialise tegra specific scaling quirks */ |
194 | gp10b_tegra_scale_exit(pdev); | 189 | gp10b_tegra_scale_exit(dev); |
195 | 190 | ||
196 | return 0; | 191 | return 0; |
197 | 192 | ||
198 | } | 193 | } |
199 | 194 | ||
200 | static bool gp10b_tegra_is_railgated(struct platform_device *pdev) | 195 | static bool gp10b_tegra_is_railgated(struct device *dev) |
201 | { | 196 | { |
202 | bool ret = false; | 197 | bool ret = false; |
203 | 198 | ||
@@ -207,9 +202,9 @@ static bool gp10b_tegra_is_railgated(struct platform_device *pdev) | |||
207 | return ret; | 202 | return ret; |
208 | } | 203 | } |
209 | 204 | ||
210 | static int gp10b_tegra_railgate(struct platform_device *pdev) | 205 | static int gp10b_tegra_railgate(struct device *dev) |
211 | { | 206 | { |
212 | struct gk20a_platform *platform = gk20a_get_platform(pdev); | 207 | struct gk20a_platform *platform = gk20a_get_platform(dev); |
213 | 208 | ||
214 | if (tegra_bpmp_running() && | 209 | if (tegra_bpmp_running() && |
215 | tegra_powergate_is_powered(TEGRA_POWERGATE_GPU)) { | 210 | tegra_powergate_is_powered(TEGRA_POWERGATE_GPU)) { |
@@ -223,10 +218,10 @@ static int gp10b_tegra_railgate(struct platform_device *pdev) | |||
223 | return 0; | 218 | return 0; |
224 | } | 219 | } |
225 | 220 | ||
226 | static int gp10b_tegra_unrailgate(struct platform_device *pdev) | 221 | static int gp10b_tegra_unrailgate(struct device *dev) |
227 | { | 222 | { |
228 | int ret = 0; | 223 | int ret = 0; |
229 | struct gk20a_platform *platform = gk20a_get_platform(pdev); | 224 | struct gk20a_platform *platform = gk20a_get_platform(dev); |
230 | 225 | ||
231 | if (tegra_bpmp_running()) { | 226 | if (tegra_bpmp_running()) { |
232 | int i; | 227 | int i; |
@@ -244,7 +239,7 @@ static int gp10b_tegra_suspend(struct device *dev) | |||
244 | return 0; | 239 | return 0; |
245 | } | 240 | } |
246 | 241 | ||
247 | static int gp10b_tegra_reset_assert(struct platform_device *dev) | 242 | static int gp10b_tegra_reset_assert(struct device *dev) |
248 | { | 243 | { |
249 | struct gk20a_platform *platform = gk20a_get_platform(dev); | 244 | struct gk20a_platform *platform = gk20a_get_platform(dev); |
250 | int ret = 0; | 245 | int ret = 0; |
@@ -257,7 +252,7 @@ static int gp10b_tegra_reset_assert(struct platform_device *dev) | |||
257 | return ret; | 252 | return ret; |
258 | } | 253 | } |
259 | 254 | ||
260 | static int gp10b_tegra_reset_deassert(struct platform_device *dev) | 255 | static int gp10b_tegra_reset_deassert(struct device *dev) |
261 | { | 256 | { |
262 | struct gk20a_platform *platform = gk20a_get_platform(dev); | 257 | struct gk20a_platform *platform = gk20a_get_platform(dev); |
263 | int ret = 0; | 258 | int ret = 0; |
@@ -270,9 +265,9 @@ static int gp10b_tegra_reset_deassert(struct platform_device *dev) | |||
270 | return ret; | 265 | return ret; |
271 | } | 266 | } |
272 | 267 | ||
273 | static void gp10b_tegra_prescale(struct platform_device *pdev) | 268 | static void gp10b_tegra_prescale(struct device *dev) |
274 | { | 269 | { |
275 | struct gk20a *g = get_gk20a(pdev); | 270 | struct gk20a *g = get_gk20a(dev); |
276 | u32 avg = 0; | 271 | u32 avg = 0; |
277 | 272 | ||
278 | gk20a_dbg_fn(""); | 273 | gk20a_dbg_fn(""); |
@@ -282,7 +277,7 @@ static void gp10b_tegra_prescale(struct platform_device *pdev) | |||
282 | gk20a_dbg_fn("done"); | 277 | gk20a_dbg_fn("done"); |
283 | } | 278 | } |
284 | 279 | ||
285 | static void gp10b_tegra_postscale(struct platform_device *pdev, | 280 | static void gp10b_tegra_postscale(struct device *pdev, |
286 | unsigned long freq) | 281 | unsigned long freq) |
287 | { | 282 | { |
288 | struct gk20a_platform *platform = gk20a_get_platform(pdev); | 283 | struct gk20a_platform *platform = gk20a_get_platform(pdev); |
@@ -304,7 +299,7 @@ static void gp10b_tegra_postscale(struct platform_device *pdev, | |||
304 | gk20a_dbg_fn("done"); | 299 | gk20a_dbg_fn("done"); |
305 | } | 300 | } |
306 | 301 | ||
307 | static unsigned long gp10b_get_clk_rate(struct platform_device *dev) | 302 | static unsigned long gp10b_get_clk_rate(struct device *dev) |
308 | { | 303 | { |
309 | struct gk20a_platform *platform = gk20a_get_platform(dev); | 304 | struct gk20a_platform *platform = gk20a_get_platform(dev); |
310 | 305 | ||
@@ -312,25 +307,24 @@ static unsigned long gp10b_get_clk_rate(struct platform_device *dev) | |||
312 | 307 | ||
313 | } | 308 | } |
314 | 309 | ||
315 | static long gp10b_round_clk_rate(struct platform_device *dev, | 310 | static long gp10b_round_clk_rate(struct device *dev, unsigned long rate) |
316 | unsigned long rate) | ||
317 | { | 311 | { |
318 | struct gk20a_platform *platform = gk20a_get_platform(dev); | 312 | struct gk20a_platform *platform = gk20a_get_platform(dev); |
319 | 313 | ||
320 | return clk_round_rate(platform->clk[0], rate); | 314 | return clk_round_rate(platform->clk[0], rate); |
321 | } | 315 | } |
322 | 316 | ||
323 | static int gp10b_set_clk_rate(struct platform_device *dev, unsigned long rate) | 317 | static int gp10b_set_clk_rate(struct device *dev, unsigned long rate) |
324 | { | 318 | { |
325 | struct gk20a_platform *platform = gk20a_get_platform(dev); | 319 | struct gk20a_platform *platform = gk20a_get_platform(dev); |
326 | 320 | ||
327 | return clk_set_rate(platform->clk[0], rate); | 321 | return clk_set_rate(platform->clk[0], rate); |
328 | } | 322 | } |
329 | 323 | ||
330 | static int gp10b_clk_get_freqs(struct platform_device *pdev, | 324 | static int gp10b_clk_get_freqs(struct device *dev, |
331 | unsigned long **freqs, int *num_freqs) | 325 | unsigned long **freqs, int *num_freqs) |
332 | { | 326 | { |
333 | struct gk20a_platform *platform = gk20a_get_platform(pdev); | 327 | struct gk20a_platform *platform = gk20a_get_platform(dev); |
334 | unsigned long min_rate, max_rate, freq_step, rate; | 328 | unsigned long min_rate, max_rate, freq_step, rate; |
335 | int i; | 329 | int i; |
336 | 330 | ||
@@ -408,6 +402,8 @@ struct gk20a_platform t18x_gpu_tegra_platform = { | |||
408 | .reset_deassert = gp10b_tegra_reset_deassert, | 402 | .reset_deassert = gp10b_tegra_reset_deassert, |
409 | 403 | ||
410 | .force_reset_in_do_idle = false, | 404 | .force_reset_in_do_idle = false, |
405 | |||
406 | .soc_name = "tegra18x", | ||
411 | }; | 407 | }; |
412 | 408 | ||
413 | 409 | ||
@@ -481,7 +477,7 @@ static ssize_t ecc_stat_show(struct device *dev, | |||
481 | return snprintf(buf, PAGE_SIZE, "Error: No ECC stat found!\n"); | 477 | return snprintf(buf, PAGE_SIZE, "Error: No ECC stat found!\n"); |
482 | } | 478 | } |
483 | 479 | ||
484 | static int ecc_stat_create(struct platform_device *dev, | 480 | static int ecc_stat_create(struct device *dev, |
485 | int is_l2, | 481 | int is_l2, |
486 | char *ecc_stat_name, | 482 | char *ecc_stat_name, |
487 | struct ecc_stat *ecc_stat, | 483 | struct ecc_stat *ecc_stat, |
@@ -526,8 +522,7 @@ static int ecc_stat_create(struct platform_device *dev, | |||
526 | dev_attr_array[hw_unit].store = NULL; | 522 | dev_attr_array[hw_unit].store = NULL; |
527 | 523 | ||
528 | /* Create sysfs file */ | 524 | /* Create sysfs file */ |
529 | error |= device_create_file(&dev->dev, | 525 | error |= device_create_file(dev, &dev_attr_array[hw_unit]); |
530 | &dev_attr_array[hw_unit]); | ||
531 | } | 526 | } |
532 | 527 | ||
533 | /* Add hash table entry */ | 528 | /* Add hash table entry */ |
@@ -544,8 +539,7 @@ static void ecc_stat_remove(struct device *dev, | |||
544 | struct ecc_stat *ecc_stat, | 539 | struct ecc_stat *ecc_stat, |
545 | struct device_attribute *dev_attr_array) | 540 | struct device_attribute *dev_attr_array) |
546 | { | 541 | { |
547 | struct platform_device *ndev = to_platform_device(dev); | 542 | struct gk20a *g = get_gk20a(dev); |
548 | struct gk20a *g = get_gk20a(ndev); | ||
549 | int num_hw_units = 0; | 543 | int num_hw_units = 0; |
550 | int hw_unit = 0; | 544 | int hw_unit = 0; |
551 | 545 | ||
@@ -571,7 +565,7 @@ static void ecc_stat_remove(struct device *dev, | |||
571 | kfree(dev_attr_array); | 565 | kfree(dev_attr_array); |
572 | } | 566 | } |
573 | 567 | ||
574 | void gr_gp10b_create_sysfs(struct platform_device *dev) | 568 | void gr_gp10b_create_sysfs(struct device *dev) |
575 | { | 569 | { |
576 | int error = 0; | 570 | int error = 0; |
577 | struct gk20a *g = get_gk20a(dev); | 571 | struct gk20a *g = get_gk20a(dev); |
@@ -663,13 +657,12 @@ void gr_gp10b_create_sysfs(struct platform_device *dev) | |||
663 | dev_attr_l2_ecc_ded_count_array); | 657 | dev_attr_l2_ecc_ded_count_array); |
664 | 658 | ||
665 | if (error) | 659 | if (error) |
666 | dev_err(&dev->dev, "Failed to create sysfs attributes!\n"); | 660 | dev_err(dev, "Failed to create sysfs attributes!\n"); |
667 | } | 661 | } |
668 | 662 | ||
669 | static void gr_gp10b_remove_sysfs(struct device *dev) | 663 | static void gr_gp10b_remove_sysfs(struct device *dev) |
670 | { | 664 | { |
671 | struct platform_device *ndev = to_platform_device(dev); | 665 | struct gk20a *g = get_gk20a(dev); |
672 | struct gk20a *g = get_gk20a(ndev); | ||
673 | 666 | ||
674 | ecc_stat_remove(dev, | 667 | ecc_stat_remove(dev, |
675 | 0, | 668 | 0, |