summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorSrikar Srimath Tirumala <srikars@nvidia.com>2017-01-04 14:56:39 -0500
committermobile promotions <svcmobile_promotions@nvidia.com>2017-01-30 19:34:46 -0500
commit8aadf311d5a46601cb9d3f0232c90b10ec171994 (patch)
treeba605947d333a91a92205d1f5a2b53e8de5aada5 /drivers
parent2f74512a09aad5bc678081dda5916d4f72ffe3e5 (diff)
gpu: nvgpu: allow defer probing to work
Platform probe can return a EDEFER_PROBE, perform user init only if platform probe is successful so that all the device objects are created only once. Bug 200233943 Change-Id: If6f41af13c29d070743896f26e6650228153027b Signed-off-by: Srikar Srimath Tirumala <srikars@nvidia.com> Reviewed-on: http://git-master/r/1280831 Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/gpu/nvgpu/nvgpu_common.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/gpu/nvgpu/nvgpu_common.c b/drivers/gpu/nvgpu/nvgpu_common.c
index 7c12616f..3e57c83d 100644
--- a/drivers/gpu/nvgpu/nvgpu_common.c
+++ b/drivers/gpu/nvgpu/nvgpu_common.c
@@ -125,10 +125,6 @@ int nvgpu_probe(struct gk20a *g,
125 nvgpu_init_timeslice(g); 125 nvgpu_init_timeslice(g);
126 nvgpu_init_pm_vars(g); 126 nvgpu_init_pm_vars(g);
127 127
128 err = gk20a_user_init(g->dev, interface_name, class);
129 if (err)
130 return err;
131
132 /* Initialize the platform interface. */ 128 /* Initialize the platform interface. */
133 err = platform->probe(g->dev); 129 err = platform->probe(g->dev);
134 if (err) { 130 if (err) {
@@ -136,6 +132,12 @@ int nvgpu_probe(struct gk20a *g,
136 return err; 132 return err;
137 } 133 }
138 134
135 /* platform probe can defer do user init only if probe succeeds */
136 err = gk20a_user_init(g->dev, interface_name, class);
137 if (err)
138 return err;
139
140
139 /* Initialise scaling */ 141 /* Initialise scaling */
140 if (IS_ENABLED(CONFIG_GK20A_DEVFREQ)) 142 if (IS_ENABLED(CONFIG_GK20A_DEVFREQ))
141 gk20a_scale_init(g->dev); 143 gk20a_scale_init(g->dev);