mirror of
git://nv-tegra.nvidia.com/linux-nvgpu.git
synced 2025-12-22 17:36:20 +03:00
gpu: nvgpu: T18x support
nvgpu framework and build for T18x Bug 1567274 Change-Id: I77835302a1110573008869d1106eface512bb9b1 Signed-off-by: Ken Adams <kadams@nvidia.com> Signed-off-by: Terje Bergstrom <tbergstrom@nvidia.com>
This commit is contained in:
committed by
Dan Willemsen
parent
8371833f42
commit
aec94d8093
@@ -6,6 +6,12 @@ ccflags-y += -Idrivers/devfreq
|
|||||||
ccflags-y += -Wno-multichar
|
ccflags-y += -Wno-multichar
|
||||||
ccflags-y += -Werror
|
ccflags-y += -Werror
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_ARCH_TEGRA_18x_SOC),y)
|
||||||
|
ccflags-$(CONFIG_GK20A) += -I$(srctree)/../kernel-t18x/drivers/gpu/nvgpu
|
||||||
|
ccflags-$(CONFIG_GK20A) += -I$(srctree)/../kernel-t18x/include
|
||||||
|
ccflags-$(CONFIG_GK20A) += -I$(srctree)/../kernel-t18x/include/uapi
|
||||||
|
endif
|
||||||
|
|
||||||
obj-$(CONFIG_GK20A) := nvgpu.o
|
obj-$(CONFIG_GK20A) := nvgpu.o
|
||||||
|
|
||||||
nvgpu-y := \
|
nvgpu-y := \
|
||||||
@@ -70,3 +76,9 @@ nvgpu-$(CONFIG_TEGRA_CLK_FRAMEWORK) += \
|
|||||||
|
|
||||||
nvgpu-$(CONFIG_GK20A_DEVFREQ) += \
|
nvgpu-$(CONFIG_GK20A_DEVFREQ) += \
|
||||||
gk20a/gk20a_scale.o
|
gk20a/gk20a_scale.o
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_ARCH_TEGRA_18x_SOC),y)
|
||||||
|
ccflags-$(CONFIG_GK20A) += -I$(srctree)/../kernel-t18x/drivers/gpu/nvgpu
|
||||||
|
ccflags-$(CONFIG_GK20A) += -I$(srctree)/../kernel-t18x/include
|
||||||
|
obj-$(CONFIG_GK20A) += ../../../../kernel-t18x/drivers/gpu/nvgpu/
|
||||||
|
endif
|
||||||
|
|||||||
@@ -64,6 +64,10 @@
|
|||||||
#define CREATE_TRACE_POINTS
|
#define CREATE_TRACE_POINTS
|
||||||
#include <trace/events/gk20a.h>
|
#include <trace/events/gk20a.h>
|
||||||
|
|
||||||
|
#ifdef CONFIG_ARCH_TEGRA_18x_SOC
|
||||||
|
#include "nvgpu_gpuid_t18x.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_ARM64
|
#ifdef CONFIG_ARM64
|
||||||
#define __cpuc_flush_dcache_area __flush_dcache_area
|
#define __cpuc_flush_dcache_area __flush_dcache_area
|
||||||
#endif
|
#endif
|
||||||
@@ -878,6 +882,10 @@ static struct of_device_id tegra_gk20a_of_match[] = {
|
|||||||
.data = &gk20a_tegra_platform },
|
.data = &gk20a_tegra_platform },
|
||||||
{ .compatible = "nvidia,tegra210-gm20b",
|
{ .compatible = "nvidia,tegra210-gm20b",
|
||||||
.data = &gm20b_tegra_platform },
|
.data = &gm20b_tegra_platform },
|
||||||
|
#ifdef CONFIG_ARCH_TEGRA_18x_SOC
|
||||||
|
{ .compatible = TEGRA_18x_GPU_COMPAT_TEGRA,
|
||||||
|
.data = &gk20a_tegra_platform },
|
||||||
|
#endif
|
||||||
#ifdef CONFIG_TEGRA_GR_VIRTUALIZATION
|
#ifdef CONFIG_TEGRA_GR_VIRTUALIZATION
|
||||||
{ .compatible = "nvidia,tegra124-gk20a-vgpu",
|
{ .compatible = "nvidia,tegra124-gk20a-vgpu",
|
||||||
.data = &vgpu_tegra_platform },
|
.data = &vgpu_tegra_platform },
|
||||||
@@ -887,11 +895,20 @@ static struct of_device_id tegra_gk20a_of_match[] = {
|
|||||||
.data = &gk20a_generic_platform },
|
.data = &gk20a_generic_platform },
|
||||||
{ .compatible = "nvidia,tegra210-gm20b",
|
{ .compatible = "nvidia,tegra210-gm20b",
|
||||||
.data = &gk20a_generic_platform },
|
.data = &gk20a_generic_platform },
|
||||||
|
#ifdef CONFIG_ARCH_TEGRA_18x_SOC
|
||||||
|
{ .compatible = TEGRA_18x_GPU_COMPAT_TEGRA,
|
||||||
|
.data = &gk20a_generic_platform },
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
{ .compatible = "nvidia,generic-gk20a",
|
{ .compatible = "nvidia,generic-gk20a",
|
||||||
.data = &gk20a_generic_platform },
|
.data = &gk20a_generic_platform },
|
||||||
{ .compatible = "nvidia,generic-gm20b",
|
{ .compatible = "nvidia,generic-gm20b",
|
||||||
.data = &gk20a_generic_platform },
|
.data = &gk20a_generic_platform },
|
||||||
|
#ifdef CONFIG_ARCH_TEGRA_18x_SOC
|
||||||
|
{ .compatible = TEGRA_18x_GPU_COMPAT_GENERIC,
|
||||||
|
.data = &gk20a_generic_platform },
|
||||||
|
#endif
|
||||||
{ },
|
{ },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -2150,8 +2150,7 @@ int gr_gk20a_load_ctxsw_ucode(struct gk20a *g)
|
|||||||
* In case bootloader is not supported, revert to the old way of
|
* In case bootloader is not supported, revert to the old way of
|
||||||
* loading gr ucode, without the faster bootstrap routine.
|
* loading gr ucode, without the faster bootstrap routine.
|
||||||
*/
|
*/
|
||||||
if (g->gpu_characteristics.arch != NVGPU_GPU_ARCH_GK100 &&
|
if (g->gpu_characteristics.arch > NVGPU_GPU_ARCH_GM200) {
|
||||||
g->gpu_characteristics.arch != NVGPU_GPU_ARCH_GM200) {
|
|
||||||
gr_gk20a_load_falcon_dmem(g);
|
gr_gk20a_load_falcon_dmem(g);
|
||||||
gr_gk20a_load_falcon_imem(g);
|
gr_gk20a_load_falcon_imem(g);
|
||||||
gr_gk20a_start_falcon_ucode(g);
|
gr_gk20a_start_falcon_ucode(g);
|
||||||
|
|||||||
@@ -17,6 +17,10 @@
|
|||||||
#include "hal_gk20a.h"
|
#include "hal_gk20a.h"
|
||||||
#include "gm20b/hal_gm20b.h"
|
#include "gm20b/hal_gm20b.h"
|
||||||
|
|
||||||
|
#ifdef CONFIG_ARCH_TEGRA_18x_SOC
|
||||||
|
#include "nvgpu_gpuid_t18x.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
int gpu_init_hal(struct gk20a *g)
|
int gpu_init_hal(struct gk20a *g)
|
||||||
{
|
{
|
||||||
u32 ver = g->gpu_characteristics.arch + g->gpu_characteristics.impl;
|
u32 ver = g->gpu_characteristics.arch + g->gpu_characteristics.impl;
|
||||||
@@ -30,6 +34,12 @@ int gpu_init_hal(struct gk20a *g)
|
|||||||
if (gm20b_init_hal(&g->ops))
|
if (gm20b_init_hal(&g->ops))
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
break;
|
break;
|
||||||
|
#if defined(CONFIG_ARCH_TEGRA_18x_SOC)
|
||||||
|
case TEGRA_18x_GPUID:
|
||||||
|
if (TEGRA_18x_GPUID_HAL(&g->ops))
|
||||||
|
return -ENODEV;
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
default:
|
default:
|
||||||
gk20a_err(&g->dev->dev, "no support for %x", ver);
|
gk20a_err(&g->dev->dev, "no support for %x", ver);
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
|
|||||||
@@ -185,4 +185,8 @@ static inline bool gk20a_platform_has_syncpoints(struct platform_device *dev)
|
|||||||
return p->has_syncpoints;
|
return p->has_syncpoints;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int gk20a_tegra_busy(struct platform_device *dev);
|
||||||
|
void gk20a_tegra_idle(struct platform_device *dev);
|
||||||
|
void gk20a_tegra_debug_dump(struct platform_device *pdev);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -339,14 +339,14 @@ static void gk20a_tegra_scale_init(struct platform_device *pdev)
|
|||||||
profile->private_data = emc_params;
|
profile->private_data = emc_params;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void gk20a_tegra_debug_dump(struct platform_device *pdev)
|
void gk20a_tegra_debug_dump(struct platform_device *pdev)
|
||||||
{
|
{
|
||||||
struct gk20a_platform *platform = gk20a_get_platform(pdev);
|
struct gk20a_platform *platform = gk20a_get_platform(pdev);
|
||||||
struct gk20a *g = platform->g;
|
struct gk20a *g = platform->g;
|
||||||
nvhost_debug_dump_device(g->host1x_dev);
|
nvhost_debug_dump_device(g->host1x_dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int gk20a_tegra_busy(struct platform_device *dev)
|
int gk20a_tegra_busy(struct platform_device *dev)
|
||||||
{
|
{
|
||||||
struct gk20a_platform *platform = gk20a_get_platform(dev);
|
struct gk20a_platform *platform = gk20a_get_platform(dev);
|
||||||
struct gk20a *g = platform->g;
|
struct gk20a *g = platform->g;
|
||||||
@@ -356,7 +356,7 @@ static int gk20a_tegra_busy(struct platform_device *dev)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void gk20a_tegra_idle(struct platform_device *dev)
|
void gk20a_tegra_idle(struct platform_device *dev)
|
||||||
{
|
{
|
||||||
struct gk20a_platform *platform = gk20a_get_platform(dev);
|
struct gk20a_platform *platform = gk20a_get_platform(dev);
|
||||||
struct gk20a *g = platform->g;
|
struct gk20a *g = platform->g;
|
||||||
|
|||||||
@@ -88,6 +88,10 @@ struct nvgpu_gpu_zbc_query_table_args {
|
|||||||
#define NVGPU_GPU_ARCH_GM200 0x00000120
|
#define NVGPU_GPU_ARCH_GM200 0x00000120
|
||||||
#define NVGPU_GPU_IMPL_GM20B 0x0000000B
|
#define NVGPU_GPU_IMPL_GM20B 0x0000000B
|
||||||
|
|
||||||
|
#ifdef CONFIG_ARCH_TEGRA_18x_SOC
|
||||||
|
#include <linux/nvgpu-t18x.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#define NVGPU_GPU_BUS_TYPE_NONE 0
|
#define NVGPU_GPU_BUS_TYPE_NONE 0
|
||||||
#define NVGPU_GPU_BUS_TYPE_AXI 32
|
#define NVGPU_GPU_BUS_TYPE_AXI 32
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user