PageRenderTime 17ms CodeModel.GetById 10ms app.highlight 4ms RepoModel.GetById 1ms app.codeStats 0ms

/arch/arm/mach-mxs/devices/platform-mxs-i2c.c

https://github.com/AICP/kernel_asus_grouper
C | 52 lines | 39 code | 5 blank | 8 comment | 0 complexity | abdbddc33e805db69b7a0cae614b951d MD5 | raw file
 1/*
 2 * Copyright (C) 2011 Pengutronix
 3 * Wolfram Sang <w.sang@pengutronix.de>
 4 *
 5 * This program is free software; you can redistribute it and/or modify it under
 6 * the terms of the GNU General Public License version 2 as published by the
 7 * Free Software Foundation.
 8 */
 9#include <asm/sizes.h>
10#include <mach/mx28.h>
11#include <mach/devices-common.h>
12
13#define mxs_i2c_data_entry_single(soc, _id)				\
14	{								\
15		.id = _id,						\
16		.iobase = soc ## _I2C ## _id ## _BASE_ADDR,		\
17		.errirq = soc ## _INT_I2C ## _id ## _ERROR,		\
18		.dmairq = soc ## _INT_I2C ## _id ## _DMA,		\
19	}
20
21#define mxs_i2c_data_entry(soc, _id)					\
22	[_id] = mxs_i2c_data_entry_single(soc, _id)
23
24#ifdef CONFIG_SOC_IMX28
25const struct mxs_mxs_i2c_data mx28_mxs_i2c_data[] __initconst = {
26	mxs_i2c_data_entry(MX28, 0),
27	mxs_i2c_data_entry(MX28, 1),
28};
29#endif
30
31struct platform_device *__init mxs_add_mxs_i2c(
32		const struct mxs_mxs_i2c_data *data)
33{
34	struct resource res[] = {
35		{
36			.start = data->iobase,
37			.end = data->iobase + SZ_8K - 1,
38			.flags = IORESOURCE_MEM,
39		}, {
40			.start = data->errirq,
41			.end = data->errirq,
42			.flags = IORESOURCE_IRQ,
43		}, {
44			.start = data->dmairq,
45			.end = data->dmairq,
46			.flags = IORESOURCE_IRQ,
47		},
48	};
49
50	return mxs_add_platform_device("mxs-i2c", data->id, res,
51					ARRAY_SIZE(res), NULL, 0);
52}