dev-i2c0.c 1.5 KB
Newer Older
1 2
/* linux/arch/arm/plat-s3c/dev-i2c0.c
 *
3
 * Copyright 2008-2009 Simtec Electronics
4 5 6 7 8 9 10 11 12 13
 *	Ben Dooks <ben@simtec.co.uk>
 *	http://armlinux.simtec.co.uk/
 *
 * S3C series device definition for i2c device 0
 *
 * 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.
*/

14
#include <linux/gfp.h>
15 16 17 18
#include <linux/kernel.h>
#include <linux/string.h>
#include <linux/platform_device.h>

19
#include <mach/irqs.h>
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
#include <mach/map.h>

#include <plat/regs-iic.h>
#include <plat/iic.h>
#include <plat/devs.h>
#include <plat/cpu.h>

static struct resource s3c_i2c_resource[] = {
	[0] = {
		.start = S3C_PA_IIC,
		.end   = S3C_PA_IIC + SZ_4K - 1,
		.flags = IORESOURCE_MEM,
	},
	[1] = {
		.start = IRQ_IIC,
		.end   = IRQ_IIC,
		.flags = IORESOURCE_IRQ,
	},
};

struct platform_device s3c_device_i2c0 = {
	.name		  = "s3c2410-i2c",
B
Ben Dooks 已提交
42 43 44
#ifdef CONFIG_S3C_DEV_I2C1
	.id		  = 0,
#else
45
	.id		  = -1,
B
Ben Dooks 已提交
46
#endif
47 48 49 50
	.num_resources	  = ARRAY_SIZE(s3c_i2c_resource),
	.resource	  = s3c_i2c_resource,
};

51
struct s3c2410_platform_i2c default_i2c_data __initdata = {
52 53
	.flags		= 0,
	.slave_addr	= 0x10,
54
	.frequency	= 100*1000,
55
	.sda_delay	= 100,
56 57 58 59 60 61 62
};

void __init s3c_i2c0_set_platdata(struct s3c2410_platform_i2c *pd)
{
	struct s3c2410_platform_i2c *npd;

	if (!pd)
63
		pd = &default_i2c_data;
64

65 66
	npd = s3c_set_platdata(pd, sizeof(struct s3c2410_platform_i2c),
			       &s3c_device_i2c0);
67

68 69
	if (!npd->cfg_gpio)
		npd->cfg_gpio = s3c_i2c0_cfg_gpio;
70
}