summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTerje Bergstrom <tbergstrom@nvidia.com>2017-08-18 16:48:59 -0400
committermobile promotions <svcmobile_promotions@nvidia.com>2017-08-22 11:55:16 -0400
commit587666bd6cbb60e52698052c2b5c4a74f2165ecd (patch)
tree208b3770d181ea75e740254ad7a4b13fdfde6a0c
parentb53336585bccfc730c714ba249b4d67c2a7c4d38 (diff)
gpu: nvgpu: Delete VBIOS overlay support
VBIOS overlay support is not used anywhere, and it introduces a dependency to Linux PCIe. Instead of fixing it, just delete the code. Change-Id: I751e490f8bb8271a19b917686f5d2c8a85d92cb7 Signed-off-by: Terje Bergstrom <tbergstrom@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/1541512 Reviewed-by: svccoveritychecker <svccoveritychecker@nvidia.com> Reviewed-by: svc-mobile-coverity <svc-mobile-coverity@nvidia.com> Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Sourab Gupta <sourabg@nvidia.com> GVS: Gerrit_Virtual_Submit
-rw-r--r--drivers/gpu/nvgpu/gm206/bios_gm206.c58
1 files changed, 14 insertions, 44 deletions
diff --git a/drivers/gpu/nvgpu/gm206/bios_gm206.c b/drivers/gpu/nvgpu/gm206/bios_gm206.c
index b0626d19..62dce777 100644
--- a/drivers/gpu/nvgpu/gm206/bios_gm206.c
+++ b/drivers/gpu/nvgpu/gm206/bios_gm206.c
@@ -11,13 +11,10 @@
11 * more details. 11 * more details.
12 */ 12 */
13 13
14#include <linux/pci.h>
15
16#include <nvgpu/bios.h> 14#include <nvgpu/bios.h>
17#include <nvgpu/kmem.h> 15#include <nvgpu/kmem.h>
18#include <nvgpu/nvgpu_common.h> 16#include <nvgpu/nvgpu_common.h>
19#include <nvgpu/timers.h> 17#include <nvgpu/timers.h>
20#include <nvgpu/firmware.h>
21#include <nvgpu/falcon.h> 18#include <nvgpu/falcon.h>
22#include <nvgpu/enabled.h> 19#include <nvgpu/enabled.h>
23 20
@@ -176,48 +173,25 @@ int gm206_bios_init(struct gk20a *g)
176 struct nvgpu_os_linux *l = nvgpu_os_linux_from_gk20a(g); 173 struct nvgpu_os_linux *l = nvgpu_os_linux_from_gk20a(g);
177 struct dentry *d; 174 struct dentry *d;
178#endif 175#endif
179 struct nvgpu_firmware *bios_fw;
180 int err; 176 int err;
181 struct pci_dev *pdev = to_pci_dev(dev_from_gk20a(g));
182 char rom_name[sizeof(BIOS_OVERLAY_NAME_FORMATTED)];
183 177
184 gk20a_dbg_fn(""); 178 gk20a_dbg_fn("");
185 179
186 snprintf(rom_name, sizeof(rom_name), BIOS_OVERLAY_NAME, pdev->device); 180 gk20a_dbg_info("reading bios from EEPROM");
187 gk20a_dbg_info("checking for VBIOS overlay %s", rom_name); 181 g->bios.size = BIOS_SIZE;
188 bios_fw = nvgpu_request_firmware(g, rom_name, 182 g->bios.data = nvgpu_vmalloc(g, BIOS_SIZE);
189 NVGPU_REQUEST_FIRMWARE_NO_WARN | 183 if (!g->bios.data)
190 NVGPU_REQUEST_FIRMWARE_NO_SOC); 184 return -ENOMEM;
191 if (bios_fw) { 185 g->ops.xve.disable_shadow_rom(g);
192 gk20a_dbg_info("using VBIOS overlay"); 186 for (i = 0; i < g->bios.size/4; i++) {
193 g->bios.size = bios_fw->size - ROM_FILE_PAYLOAD_OFFSET; 187 u32 val = be32_to_cpu(gk20a_readl(g, 0x300000 + i*4));
194 g->bios.data = vmalloc(g->bios.size); 188
195 if (!g->bios.data) { 189 g->bios.data[(i*4)] = (val >> 24) & 0xff;
196 err = -ENOMEM; 190 g->bios.data[(i*4)+1] = (val >> 16) & 0xff;
197 goto free_firmware; 191 g->bios.data[(i*4)+2] = (val >> 8) & 0xff;
198 } 192 g->bios.data[(i*4)+3] = val & 0xff;
199
200 memcpy(g->bios.data, &bios_fw->data[ROM_FILE_PAYLOAD_OFFSET],
201 g->bios.size);
202
203 nvgpu_release_firmware(g, bios_fw);
204 } else {
205 gk20a_dbg_info("reading bios from EEPROM");
206 g->bios.size = BIOS_SIZE;
207 g->bios.data = nvgpu_vmalloc(g, BIOS_SIZE);
208 if (!g->bios.data)
209 return -ENOMEM;
210 g->ops.xve.disable_shadow_rom(g);
211 for (i = 0; i < g->bios.size/4; i++) {
212 u32 val = be32_to_cpu(gk20a_readl(g, 0x300000 + i*4));
213
214 g->bios.data[(i*4)] = (val >> 24) & 0xff;
215 g->bios.data[(i*4)+1] = (val >> 16) & 0xff;
216 g->bios.data[(i*4)+2] = (val >> 8) & 0xff;
217 g->bios.data[(i*4)+3] = val & 0xff;
218 }
219 g->ops.xve.enable_shadow_rom(g);
220 } 193 }
194 g->ops.xve.enable_shadow_rom(g);
221 195
222 err = nvgpu_bios_parse_rom(g); 196 err = nvgpu_bios_parse_rom(g);
223 if (err) 197 if (err)
@@ -263,8 +237,4 @@ int gm206_bios_init(struct gk20a *g)
263 } 237 }
264 238
265 return 0; 239 return 0;
266
267free_firmware:
268 nvgpu_release_firmware(g, bios_fw);
269 return err;
270} 240}