/*
 * Copyright (C) 2009-2010 Pengutronix
 * Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de>
 *
 * Copyright 2010 Freescale Semiconductor, Inc. All Rights Reserved.
 *
 * This program is free software; you can redistribute it and/or modify it under
 * the terms of the GNU General Public License version 2 as published by the
 * Free Software Foundation.
 */
#include <asm/irq.h>
#include <mach/mx23.h>
#include <mach/mx28.h>
#include <mach/devices-common.h>

#define MXS_AMBA_DUART_DEVICE(name, soc)			\
const struct amba_device name##_device __initconst = {		\
	.dev = {						\
		.init_name = "duart",				\
	},							\
	.res = {						\
		.start = soc ## _DUART_BASE_ADDR,		\
		.end = (soc ## _DUART_BASE_ADDR) + SZ_8K - 1,	\
		.flags = IORESOURCE_MEM,			\
	},							\
	.irq = {soc ## _INT_DUART, NO_IRQ},			\
}

#ifdef CONFIG_SOC_IMX23
MXS_AMBA_DUART_DEVICE(mx23_duart, MX23);
#endif

#ifdef CONFIG_SOC_IMX28
MXS_AMBA_DUART_DEVICE(mx28_duart, MX28);
#endif

int __init mxs_add_duart(const struct amba_device *dev)
{
	return mxs_add_amba_device(dev);
}