diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/gk20a.h | 1 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/pmu_gk20a.c | 10 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gm20b/pmu_gm20b.c | 7 |
3 files changed, 16 insertions, 2 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.h b/drivers/gpu/nvgpu/gk20a/gk20a.h index d48b94aa..dd7a7ad4 100644 --- a/drivers/gpu/nvgpu/gk20a/gk20a.h +++ b/drivers/gpu/nvgpu/gk20a/gk20a.h | |||
@@ -390,6 +390,7 @@ struct gpu_ops { | |||
390 | int (*pmu_setup_elpg)(struct gk20a *g); | 390 | int (*pmu_setup_elpg)(struct gk20a *g); |
391 | int (*init_wpr_region)(struct gk20a *g); | 391 | int (*init_wpr_region)(struct gk20a *g); |
392 | int (*load_lsfalcon_ucode)(struct gk20a *g, u32 falconidmask); | 392 | int (*load_lsfalcon_ucode)(struct gk20a *g, u32 falconidmask); |
393 | void (*write_dmatrfbase)(struct gk20a *g, u32 addr); | ||
393 | u32 lspmuwprinitdone; | 394 | u32 lspmuwprinitdone; |
394 | u32 lsfloadedfalconid; | 395 | u32 lsfloadedfalconid; |
395 | bool fecsbootstrapdone; | 396 | bool fecsbootstrapdone; |
diff --git a/drivers/gpu/nvgpu/gk20a/pmu_gk20a.c b/drivers/gpu/nvgpu/gk20a/pmu_gk20a.c index 18404ec0..110f3c5a 100644 --- a/drivers/gpu/nvgpu/gk20a/pmu_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/pmu_gk20a.c | |||
@@ -1763,8 +1763,8 @@ static int pmu_bootstrap(struct pmu_gk20a *pmu) | |||
1763 | gk20a_writel(g, pwr_falcon_dmemd_r(0), 0x1); | 1763 | gk20a_writel(g, pwr_falcon_dmemd_r(0), 0x1); |
1764 | gk20a_writel(g, pwr_falcon_dmemd_r(0), addr_args); | 1764 | gk20a_writel(g, pwr_falcon_dmemd_r(0), addr_args); |
1765 | 1765 | ||
1766 | gk20a_writel(g, pwr_falcon_dmatrfbase_r(), | 1766 | g->ops.pmu.write_dmatrfbase(g, |
1767 | addr_load - (desc->bootloader_imem_offset >> 8)); | 1767 | addr_load - (desc->bootloader_imem_offset >> 8)); |
1768 | 1768 | ||
1769 | blocks = ((desc->bootloader_size + 0xFF) & ~0xFF) >> 8; | 1769 | blocks = ((desc->bootloader_size + 0xFF) & ~0xFF) >> 8; |
1770 | 1770 | ||
@@ -2643,6 +2643,11 @@ static void pmu_setup_hw_enable_elpg(struct gk20a *g) | |||
2643 | } | 2643 | } |
2644 | } | 2644 | } |
2645 | 2645 | ||
2646 | static void gk20a_write_dmatrfbase(struct gk20a *g, u32 addr) | ||
2647 | { | ||
2648 | gk20a_writel(g, pwr_falcon_dmatrfbase_r(), addr); | ||
2649 | } | ||
2650 | |||
2646 | void gk20a_init_pmu_ops(struct gpu_ops *gops) | 2651 | void gk20a_init_pmu_ops(struct gpu_ops *gops) |
2647 | { | 2652 | { |
2648 | gops->pmu.prepare_ucode = gk20a_prepare_ucode; | 2653 | gops->pmu.prepare_ucode = gk20a_prepare_ucode; |
@@ -2651,6 +2656,7 @@ void gk20a_init_pmu_ops(struct gpu_ops *gops) | |||
2651 | gops->pmu.pmu_setup_elpg = NULL; | 2656 | gops->pmu.pmu_setup_elpg = NULL; |
2652 | gops->pmu.init_wpr_region = NULL; | 2657 | gops->pmu.init_wpr_region = NULL; |
2653 | gops->pmu.load_lsfalcon_ucode = NULL; | 2658 | gops->pmu.load_lsfalcon_ucode = NULL; |
2659 | gops->pmu.write_dmatrfbase = gk20a_write_dmatrfbase; | ||
2654 | } | 2660 | } |
2655 | 2661 | ||
2656 | int gk20a_init_pmu_support(struct gk20a *g) | 2662 | int gk20a_init_pmu_support(struct gk20a *g) |
diff --git a/drivers/gpu/nvgpu/gm20b/pmu_gm20b.c b/drivers/gpu/nvgpu/gm20b/pmu_gm20b.c index 813bb16c..9cf9cb26 100644 --- a/drivers/gpu/nvgpu/gm20b/pmu_gm20b.c +++ b/drivers/gpu/nvgpu/gm20b/pmu_gm20b.c | |||
@@ -19,6 +19,7 @@ | |||
19 | #include "acr_gm20b.h" | 19 | #include "acr_gm20b.h" |
20 | #include "pmu_gm20b.h" | 20 | #include "pmu_gm20b.h" |
21 | #include "hw_gr_gm20b.h" | 21 | #include "hw_gr_gm20b.h" |
22 | #include "hw_pwr_gm20b.h" | ||
22 | 23 | ||
23 | /*! | 24 | /*! |
24 | * Structure/object which single register write need to be done during PG init | 25 | * Structure/object which single register write need to be done during PG init |
@@ -283,6 +284,11 @@ static int gm20b_load_falcon_ucode(struct gk20a *g, u32 falconidmask) | |||
283 | return err; | 284 | return err; |
284 | } | 285 | } |
285 | 286 | ||
287 | static void gm20b_write_dmatrfbase(struct gk20a *g, u32 addr) | ||
288 | { | ||
289 | gk20a_writel(g, pwr_falcon_dmatrfbase_r(), addr); | ||
290 | } | ||
291 | |||
286 | void gm20b_init_pmu_ops(struct gpu_ops *gops) | 292 | void gm20b_init_pmu_ops(struct gpu_ops *gops) |
287 | { | 293 | { |
288 | if (gops->privsecurity) { | 294 | if (gops->privsecurity) { |
@@ -299,4 +305,5 @@ void gm20b_init_pmu_ops(struct gpu_ops *gops) | |||
299 | gops->pmu.pmu_setup_elpg = gm20b_pmu_setup_elpg; | 305 | gops->pmu.pmu_setup_elpg = gm20b_pmu_setup_elpg; |
300 | gops->pmu.lspmuwprinitdone = 0; | 306 | gops->pmu.lspmuwprinitdone = 0; |
301 | gops->pmu.fecsbootstrapdone = false; | 307 | gops->pmu.fecsbootstrapdone = false; |
308 | gops->pmu.write_dmatrfbase = gm20b_write_dmatrfbase; | ||
302 | } | 309 | } |