gpu: nvgpu: gv11b: sm priv reg related changes

Included all basic ops for gv11b and updated
sm related functions to include new priv register
addresses.

Bug 1735757

Change-Id: Ie48651f918ee97fba00487111e4b28d6c95747f5
Signed-off-by: Seshendra Gadagottu <sgadagottu@nvidia.com>
Reviewed-on: http://git-master/r/1126961
GVS: Gerrit_Virtual_Submit
Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
This commit is contained in:
Seshendra Gadagottu
2016-04-14 13:01:58 -07:00
committed by Terje Bergstrom
parent 07cd80ab09
commit c84ddceda6
24 changed files with 2315 additions and 6 deletions

View File

@@ -1,8 +1,18 @@
nvgpu-t19x := ../../../../kernel-nvgpu-t19x/drivers/gpu/nvgpu
nvgpu-y += \
$(nvgpu-t19x)/gv11b/gv11b.o \
$(nvgpu-t19x)/gv11b/mc_gv11b.o \
$(nvgpu-t19x)/gv11b/ltc_gv11b.o \
$(nvgpu-t19x)/gv11b/hal_gv11b.o \
$(nvgpu-t19x)/gv11b/gr_gv11b.o
$(nvgpu-t19x)/gv11b/gr_gv11b.o \
$(nvgpu-t19x)/gv11b/fecs_trace_gv11b.o \
$(nvgpu-t19x)/gv11b/fb_gv11b.o \
$(nvgpu-t19x)/gv11b/fifo_gv11b.o \
$(nvgpu-t19x)/gv11b/mm_gv11b.o \
$(nvgpu-t19x)/gv11b/ce2_gv11b.o \
$(nvgpu-t19x)/gv11b/gr_ctx_gv11b.o \
$(nvgpu-t19x)/gv11b/pmu_gv11b.o \
$(nvgpu-t19x)/gv11b/therm_gv11b.o
nvgpu-$(CONFIG_TEGRA_GK20A) += $(nvgpu-t19x)/gv11b/platform_gv11b_tegra.o

View File

@@ -0,0 +1,28 @@
/*
* GV11B Graphics Copy Engine (gr host)
*
* Copyright (c) 2016, NVIDIA CORPORATION. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
* version 2, as published by the Free Software Foundation.
*
* This program is distributed in the hope it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
*/
#include "gk20a/gk20a.h" /* FERMI and MAXWELL classes defined here */
#include "hw_ce2_gv11b.h"
#include "gp10b/ce2_gp10b.h"
#include "ce2_gv11b.h"
void gv11b_init_ce2(struct gpu_ops *gops)
{
gp10b_init_ce2(gops);
}

View File

@@ -0,0 +1,27 @@
/*
*
* GV11B graphics copy engine
*
* Copyright (c) 2016, NVIDIA CORPORATION. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
* version 2, as published by the Free Software Foundation.
*
* This program is distributed in the hope it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
*/
#ifndef __CE2_GV11B_H__
#define __CE2_GV11B_H__
struct gpu_ops;
void gv11b_init_ce2(struct gpu_ops *gops);
#endif /*__CE2_GV11B_H__*/

View File

@@ -0,0 +1,28 @@
/*
* GV11B FB
*
* Copyright (c) 2016, NVIDIA CORPORATION. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
* version 2, as published by the Free Software Foundation.
*
* This program is distributed in the hope it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*/
#include <linux/types.h>
#include "gk20a/gk20a.h"
#include "gp10b/fb_gp10b.h"
#include "gv11b/fb_gv11b.h"
#include "gk20a/kind_gk20a.h"
#include "hw_gmmu_gv11b.h"
void gv11b_init_fb(struct gpu_ops *gops)
{
gp10b_init_fb(gops);
}

View File

@@ -0,0 +1,21 @@
/*
* GV11B FB
*
* Copyright (c) 2016, NVIDIA CORPORATION. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
* version 2, as published by the Free Software Foundation.
*
* This program is distributed in the hope it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*/
#ifndef _NVGPU_GV11B_FB
#define _NVGPU_GV11B_FB
struct gpu_ops;
void gv11b_init_fb(struct gpu_ops *gops);
#endif

View File

@@ -0,0 +1,30 @@
/*
* GV11B GPU FECS traces
*
* Copyright (c) 2016, NVIDIA CORPORATION. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
* version 2, as published by the Free Software Foundation.
*
* This program is distributed in the hope it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*/
#include "gp10b/fecs_trace_gp10b.h"
#include "gv11b/fecs_trace_gv11b.h"
#ifdef CONFIG_GK20A_CTXSW_TRACE
int gv11b_init_fecs_trace_ops(struct gpu_ops *ops)
{
gp10b_init_fecs_trace_ops(ops);
return 0;
}
#else
int gv11b_init_fecs_trace_ops(struct gpu_ops *ops)
{
return 0;
}
#endif /* CONFIG_GK20A_CTXSW_TRACE */

View File

@@ -0,0 +1,23 @@
/*
* GV11B GPU FECS traces
*
* Copyright (c) 2016, NVIDIA CORPORATION. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
* version 2, as published by the Free Software Foundation.
*
* This program is distributed in the hope it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*/
#ifndef _NVGPU_FECS_TRACE_GV11B_H_
#define _NVGPU_FECS_TRACE_GV11B_H_
struct gpu_ops;
int gv11b_init_fecs_trace_ops(struct gpu_ops *);
#endif

View File

@@ -0,0 +1,28 @@
/*
* GV11B fifo
*
* Copyright (c) 2015-2016, NVIDIA CORPORATION. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
* version 2, as published by the Free Software Foundation.
*
* This program is distributed in the hope it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*/
#include <linux/delay.h>
#include <linux/types.h>
#include "gk20a/gk20a.h"
#include "gp10b/fifo_gp10b.h"
#include "hw_pbdma_gv11b.h"
#include "fifo_gv11b.h"
#include "hw_fifo_gv11b.h"
void gv11b_init_fifo(struct gpu_ops *gops)
{
gp10b_init_fifo(gops);
}

View File

@@ -0,0 +1,20 @@
/*
* GV11B Fifo
*
* Copyright (c) 2016, NVIDIA CORPORATION. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
* version 2, as published by the Free Software Foundation.
*
* This program is distributed in the hope it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*/
#ifndef FIFO_GV11B_H
#define FIFO_GV11B_H
struct gpu_ops;
void gv11b_init_fifo(struct gpu_ops *gops);
#endif

View File

@@ -0,0 +1,72 @@
/*
*
* GV11B Graphics Context
*
* Copyright (c) 2016, NVIDIA CORPORATION. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
* version 2, as published by the Free Software Foundation.
*
* This program is distributed in the hope it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
*/
#include "gk20a/gk20a.h"
#include "gr_ctx_gv11b.h"
static int gr_gv11b_get_netlist_name(int index, char *name)
{
switch (index) {
#ifdef GV11B_NETLIST_IMAGE_FW_NAME
case NETLIST_FINAL:
sprintf(name, GV11B_NETLIST_IMAGE_FW_NAME);
return 0;
#endif
#ifdef GK20A_NETLIST_IMAGE_A
case NETLIST_SLOT_A:
sprintf(name, GK20A_NETLIST_IMAGE_A);
return 0;
#endif
#ifdef GK20A_NETLIST_IMAGE_B
case NETLIST_SLOT_B:
sprintf(name, GK20A_NETLIST_IMAGE_B);
return 0;
#endif
#ifdef GK20A_NETLIST_IMAGE_C
case NETLIST_SLOT_C:
sprintf(name, GK20A_NETLIST_IMAGE_C);
return 0;
#endif
#ifdef GK20A_NETLIST_IMAGE_D
case NETLIST_SLOT_D:
sprintf(name, GK20A_NETLIST_IMAGE_D);
return 0;
#endif
default:
return -1;
}
return -1;
}
static bool gr_gv11b_is_firmware_defined(void)
{
#ifdef GV11B_NETLIST_IMAGE_FW_NAME
return true;
#else
return false;
#endif
}
void gv11b_init_gr_ctx(struct gpu_ops *gops) {
gops->gr_ctx.get_netlist_name = gr_gv11b_get_netlist_name;
gops->gr_ctx.is_fw_defined = gr_gv11b_is_firmware_defined;
gops->gr_ctx.use_dma_for_fw_bootstrap = false;
}

View File

@@ -0,0 +1,28 @@
/*
* GV11B Graphics Context
*
* Copyright (c) 2016, NVIDIA CORPORATION. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
* version 2, as published by the Free Software Foundation.
*
* This program is distributed in the hope it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef __GR_CTX_GV11B_H__
#define __GR_CTX_GV11B_H__
#include "gk20a/gr_ctx_gk20a.h"
/* production netlist, one and only one from below */
#define GV11B_NETLIST_IMAGE_FW_NAME GK20A_NETLIST_IMAGE_A
void gv11b_init_gr_ctx(struct gpu_ops *gops);
#endif /*__GR_CTX_GV11B_H__*/

View File

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,25 @@
/*
* GV11B Graphics
*
* Copyright (c) 2016, NVIDIA CORPORATION. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
* version 2, as published by the Free Software Foundation.
*
* This program is distributed in the hope it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "gk20a/gk20a.h"
int gv11b_init_gpu_characteristics(struct gk20a *g)
{
gk20a_init_gpu_characteristics(g);
return 0;
}

View File

@@ -0,0 +1,26 @@
/*
* GV11B Graphics
*
* Copyright (c) 2016, NVIDIA CORPORATION. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
* version 2, as published by the Free Software Foundation.
*
* This program is distributed in the hope it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef GV11B_H
#define GV11B_H
#include "gk20a/gk20a.h"
int gv11b_init_gpu_characteristics(struct gk20a *g);
#endif /* GV11B_H */

View File

@@ -22,6 +22,14 @@
#include "gv11b/gr_gv11b.h"
#include "gv11b/mc_gv11b.h"
#include "gv11b/ltc_gv11b.h"
#include "gv11b/fecs_trace_gv11b.h"
#include "gv11b/gv11b.h"
#include "gv11b/ce2_gv11b.h"
#include "gv11b/gr_ctx_gv11b.h"
#include "gv11b/mm_gv11b.h"
#include "gv11b/pmu_gv11b.h"
#include "gv11b/therm_gv11b.h"
#include "gm20b/gr_gm20b.h"
@@ -30,9 +38,22 @@ int gv11b_init_hal(struct gk20a *g)
struct gpu_ops *gops = &g->ops;
struct nvgpu_gpu_characteristics *c = &g->gpu_characteristics;
/* boot in non-secure modes for time beeing */
gops->privsecurity = 0;
gops->securegpccs = 0;
gv11b_init_mc(gops);
gv11b_init_ltc(gops);
gv11b_init_gr(gops);
gv11b_init_fecs_trace_ops(gops);
gv11b_init_ce2(gops);
gv11b_init_mm(gops);
gv11b_init_gr_ctx(gops);
gv11b_init_pmu_ops(gops);
gk20a_init_debug_ops(gops);
gv11b_init_therm_ops(gops);
gops->name = "gv11b";
gops->chip_init_gpu_characteristics = gv11b_init_gpu_characteristics;
c->twod_class = FERMI_TWOD_A;
c->threed_class = VOLTA_A;

View File

@@ -72,7 +72,7 @@ static inline u32 gmmu_new_pde_aperture_video_memory_f(void)
}
static inline u32 gmmu_new_pde_address_sys_f(u32 v)
{
return (v & 0xffffff) << 8;
return (v & 0xfffffff) << 8;
}
static inline u32 gmmu_new_pde_address_sys_w(void)
{
@@ -164,7 +164,7 @@ static inline u32 gmmu_new_dual_pde_vol_big_false_f(void)
}
static inline u32 gmmu_new_dual_pde_address_small_sys_f(u32 v)
{
return (v & 0xffffff) << 8;
return (v & 0xfffffff) << 8;
}
static inline u32 gmmu_new_dual_pde_address_small_sys_w(void)
{
@@ -212,7 +212,7 @@ static inline u32 gmmu_new_pte_privilege_false_f(void)
}
static inline u32 gmmu_new_pte_address_sys_f(u32 v)
{
return (v & 0xffffff) << 8;
return (v & 0xfffffff) << 8;
}
static inline u32 gmmu_new_pte_address_sys_w(void)
{

View File

@@ -0,0 +1,26 @@
/*
* GV11B LTC
*
* Copyright (c) 2016, NVIDIA CORPORATION. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
* version 2, as published by the Free Software Foundation.
*
* This program is distributed in the hope it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*/
#include <linux/types.h>
#include "gk20a/gk20a.h"
#include "gp10b/ltc_gp10b.h"
#include "gv11b/ltc_gv11b.h"
#include "hw_ltc_gv11b.h"
void gv11b_init_ltc(struct gpu_ops *gops)
{
gp10b_init_ltc(gops);
}

View File

@@ -0,0 +1,19 @@
/*
* Copyright (c) 2016, NVIDIA CORPORATION. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
* version 2, as published by the Free Software Foundation.
*
* This program is distributed in the hope it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*/
#ifndef LTC_GV11B_H
#define LTC_GV11B_H
struct gk20a;
void gv11b_init_ltc(struct gpu_ops *gops);
#endif

View File

@@ -0,0 +1,25 @@
/*
* GV11B MMU
*
* Copyright (c) 2016, NVIDIA CORPORATION. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
* version 2, as published by the Free Software Foundation.
*
* This program is distributed in the hope it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*/
#include <linux/pm_runtime.h>
#include <linux/dma-mapping.h>
#include "gk20a/gk20a.h"
#include "gp10b/mm_gp10b.h"
#include "mm_gv11b.h"
void gv11b_init_mm(struct gpu_ops *gops)
{
gp10b_init_mm(gops);
}

View File

@@ -0,0 +1,21 @@
/*
* GV11B MM
* Copyright (c) 2016, NVIDIA CORPORATION. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
* version 2, as published by the Free Software Foundation.
*
* This program is distributed in the hope it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*/
#ifndef MM_GV11B_H
#define MM_GV11B_H
struct gpu_ops;
void gv11b_init_mm(struct gpu_ops *gops);
#endif

View File

@@ -0,0 +1,27 @@
/*
* GV11B PMU
*
* Copyright (c) 2016, NVIDIA CORPORATION. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
* version 2, as published by the Free Software Foundation.
*
* This program is distributed in the hope it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*/
#include <linux/delay.h> /* for udelay */
#include <linux/tegra-fuse.h>
#include "gk20a/gk20a.h"
#include "gp10b/pmu_gp10b.h"
#include "pmu_gv11b.h"
#include "hw_pwr_gv11b.h"
void gv11b_init_pmu_ops(struct gpu_ops *gops)
{
gp10b_init_pmu_ops(gops);
}

View File

@@ -0,0 +1,21 @@
/*
* GV11B PMU
*
* Copyright (c) 2016, NVIDIA CORPORATION. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
* version 2, as published by the Free Software Foundation.
*
* This program is distributed in the hope it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*/
#ifndef __PMU_GV11B_H_
#define __PMU_GV11B_H_
void gv11b_init_pmu_ops(struct gpu_ops *gops);
#endif /*__PMU_GV11B_H_*/

View File

@@ -0,0 +1,25 @@
/*
*
* GV11B Therm
*
* Copyright (c) 2016, NVIDIA CORPORATION. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
* version 2, as published by the Free Software Foundation.
*
* This program is distributed in the hope it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*/
#include "gk20a/gk20a.h"
#include "gp10b/therm_gp10b.h"
#include "hw_therm_gv11b.h"
#include "therm_gv11b.h"
void gv11b_init_therm_ops(struct gpu_ops *gops)
{
gp10b_init_therm_ops(gops);
}

View File

@@ -0,0 +1,19 @@
/*
* Copyright (c) 2016, NVIDIA CORPORATION. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
* version 2, as published by the Free Software Foundation.
*
* This program is distributed in the hope it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*/
#ifndef THERM_GV11B_H
#define THERM_GV11B_H
struct gpu_ops;
void gv11b_init_therm_ops(struct gpu_ops *gops);
#endif /* THERM_GV11B_H */