/*
 * Copyright 2011 Freescale Semiconductor, Inc.
 * Copyright 2011 Linaro Ltd.
 *
 * The code contained herein is licensed under the GNU General Public
 * License. You may obtain a copy of the GNU General Public License
 * Version 2 or later at the following locations:
 *
 * http://www.opensource.org/licenses/gpl-license.html
 * http://www.gnu.org/copyleft/gpl.html
 */

#include <linux/init.h>
#include <asm/page.h>
#include <asm/sizes.h>
#include <asm/mach/map.h>
#include <mach/hardware.h>

static struct map_desc imx_lluart_desc = {
#ifdef CONFIG_DEBUG_IMX6Q_UART2
	.virtual	= MX6Q_IO_P2V(MX6Q_UART2_BASE_ADDR),
	.pfn		= __phys_to_pfn(MX6Q_UART2_BASE_ADDR),
	.length		= MX6Q_UART2_SIZE,
	.type		= MT_DEVICE,
#endif
#ifdef CONFIG_DEBUG_IMX6Q_UART4
	.virtual	= MX6Q_IO_P2V(MX6Q_UART4_BASE_ADDR),
	.pfn		= __phys_to_pfn(MX6Q_UART4_BASE_ADDR),
	.length		= MX6Q_UART4_SIZE,
	.type		= MT_DEVICE,
#endif
};

void __init imx_lluart_map_io(void)
{
	if (imx_lluart_desc.virtual)
		iotable_init(&imx_lluart_desc, 1);
}
