diff options
author | Srikar Srimath Tirumala <srikars@nvidia.com> | 2017-01-04 14:56:39 -0500 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2017-01-30 19:34:46 -0500 |
commit | 8aadf311d5a46601cb9d3f0232c90b10ec171994 (patch) | |
tree | ba605947d333a91a92205d1f5a2b53e8de5aada5 /drivers | |
parent | 2f74512a09aad5bc678081dda5916d4f72ffe3e5 (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.c | 10 |
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); |