mirror of
git://nv-tegra.nvidia.com/linux-nvgpu.git
synced 2025-12-24 02:22:34 +03:00
gpu: nvgpu: Abstract IO aperture accessors
Add abstraction of IO aperture accessors. Add new functions gk20a_io_exists() and gk20a_io_valid_reg() to remove dependencies to aperture fields from common code. Implement Linux version of the abstraction by moving gk20a_readl() and gk20a_writel() to new Linux specific io.c. Move the fields defining IO aperture to nvgpu_os_linux. Add t19x specific IO aperture initialization functions and add t19x specific section to nvgpu_os_linux. JIRA NVGPU-259 Change-Id: I09e79cda60d11a20d1099a9aaa6d2375236e94ce Signed-off-by: Terje Bergstrom <tbergstrom@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/1569698 Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
This commit is contained in:
committed by
mobile promotions
parent
ff9c3fc20a
commit
be3750bc9e
@@ -105,9 +105,10 @@ void nvgpu_mem_end(struct gk20a *g, struct nvgpu_mem *mem)
|
||||
|
||||
static void pramin_access_batch_rd_n(struct gk20a *g, u32 start, u32 words, u32 **arg)
|
||||
{
|
||||
struct nvgpu_os_linux *l = nvgpu_os_linux_from_gk20a(g);
|
||||
u32 r = start, *dest_u32 = *arg;
|
||||
|
||||
if (!g->regs) {
|
||||
if (!l->regs) {
|
||||
__gk20a_warn_on_no_regs();
|
||||
return;
|
||||
}
|
||||
@@ -182,15 +183,16 @@ void nvgpu_mem_rd_n(struct gk20a *g, struct nvgpu_mem *mem,
|
||||
|
||||
static void pramin_access_batch_wr_n(struct gk20a *g, u32 start, u32 words, u32 **arg)
|
||||
{
|
||||
struct nvgpu_os_linux *l = nvgpu_os_linux_from_gk20a(g);
|
||||
u32 r = start, *src_u32 = *arg;
|
||||
|
||||
if (!g->regs) {
|
||||
if (!l->regs) {
|
||||
__gk20a_warn_on_no_regs();
|
||||
return;
|
||||
}
|
||||
|
||||
while (words--) {
|
||||
writel_relaxed(*src_u32++, g->regs + r);
|
||||
writel_relaxed(*src_u32++, l->regs + r);
|
||||
r += sizeof(u32);
|
||||
}
|
||||
|
||||
@@ -256,15 +258,16 @@ void nvgpu_mem_wr_n(struct gk20a *g, struct nvgpu_mem *mem, u32 offset,
|
||||
|
||||
static void pramin_access_batch_set(struct gk20a *g, u32 start, u32 words, u32 **arg)
|
||||
{
|
||||
struct nvgpu_os_linux *l = nvgpu_os_linux_from_gk20a(g);
|
||||
u32 r = start, repeat = **arg;
|
||||
|
||||
if (!g->regs) {
|
||||
if (!l->regs) {
|
||||
__gk20a_warn_on_no_regs();
|
||||
return;
|
||||
}
|
||||
|
||||
while (words--) {
|
||||
writel_relaxed(repeat, g->regs + r);
|
||||
writel_relaxed(repeat, l->regs + r);
|
||||
r += sizeof(u32);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user