root/arch/arm/mach-tegra/io.c
// SPDX-License-Identifier: GPL-2.0-only
/*
 * arch/arm/mach-tegra/io.c
 *
 * Copyright (C) 2010 Google, Inc.
 *
 * Author:
 *      Colin Cross <ccross@google.com>
 *      Erik Gilling <konkers@google.com>
 */

#include <linux/init.h>
#include <linux/io.h>
#include <linux/kernel.h>
#include <linux/mm.h>
#include <linux/module.h>

#include <asm/mach/map.h>
#include <asm/page.h>

#include "board.h"
#include "iomap.h"

static struct map_desc tegra_io_desc[] __initdata = {
        {
                .virtual = (unsigned long)IO_PPSB_VIRT,
                .pfn = __phys_to_pfn(IO_PPSB_PHYS),
                .length = IO_PPSB_SIZE,
                .type = MT_DEVICE,
        },
        {
                .virtual = (unsigned long)IO_APB_VIRT,
                .pfn = __phys_to_pfn(IO_APB_PHYS),
                .length = IO_APB_SIZE,
                .type = MT_DEVICE,
        },
        {
                .virtual = (unsigned long)IO_CPU_VIRT,
                .pfn = __phys_to_pfn(IO_CPU_PHYS),
                .length = IO_CPU_SIZE,
                .type = MT_DEVICE,
        },
        {
                .virtual = (unsigned long)IO_IRAM_VIRT,
                .pfn = __phys_to_pfn(IO_IRAM_PHYS),
                .length = IO_IRAM_SIZE,
                .type = MT_DEVICE,
        },
};

void __init tegra_map_common_io(void)
{
        debug_ll_io_init();
        iotable_init(tegra_io_desc, ARRAY_SIZE(tegra_io_desc));
}