aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-ep93xx
diff options
context:
space:
mode:
authorHartley Sweeten <hartleys@visionengravers.com>2008-10-16 18:57:03 -0400
committerRussell King <rmk+kernel@arm.linux.org.uk>2008-12-01 12:22:08 -0500
commitd52a26a956d3925c6eaf8770e95e4d5f13740696 (patch)
tree0b9ef416c97745295d042a1e0f9c04c868caaf57 /arch/arm/mach-ep93xx
parent4c5744ed59ac8c7312399f279b96e6e3d8f95b5d (diff)
[ARM] 5311/1: ep93xx: add core support for built in i2c bus
Allow the ep93xx platform init code to register the built-in i2c bus. The EP93xx processor has two GPIO pins dedicated for an I2C bus. This patch registers the platform supplied i2c_board_info and the necessary platform_device information for the i2c-gpio driver to use these pins. Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Acked-by: Ryan Mallon <ryan@bluewatersys.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/mach-ep93xx')
-rw-r--r--arch/arm/mach-ep93xx/core.c22
-rw-r--r--arch/arm/mach-ep93xx/include/mach/platform.h1
2 files changed, 23 insertions, 0 deletions
diff --git a/arch/arm/mach-ep93xx/core.c b/arch/arm/mach-ep93xx/core.c
index 48345fb34613..61da67f31ce0 100644
--- a/arch/arm/mach-ep93xx/core.c
+++ b/arch/arm/mach-ep93xx/core.c
@@ -34,6 +34,8 @@
34#include <linux/amba/bus.h> 34#include <linux/amba/bus.h>
35#include <linux/amba/serial.h> 35#include <linux/amba/serial.h>
36#include <linux/io.h> 36#include <linux/io.h>
37#include <linux/i2c.h>
38#include <linux/i2c-gpio.h>
37 39
38#include <asm/types.h> 40#include <asm/types.h>
39#include <asm/setup.h> 41#include <asm/setup.h>
@@ -497,6 +499,26 @@ void __init ep93xx_register_eth(struct ep93xx_eth_data *data, int copy_addr)
497 platform_device_register(&ep93xx_eth_device); 499 platform_device_register(&ep93xx_eth_device);
498} 500}
499 501
502static struct i2c_gpio_platform_data ep93xx_i2c_data = {
503 .sda_pin = EP93XX_GPIO_LINE_EEDAT,
504 .sda_is_open_drain = 0,
505 .scl_pin = EP93XX_GPIO_LINE_EECLK,
506 .scl_is_open_drain = 0,
507 .udelay = 2,
508};
509
510static struct platform_device ep93xx_i2c_device = {
511 .name = "i2c-gpio",
512 .id = 0,
513 .dev.platform_data = &ep93xx_i2c_data,
514};
515
516void __init ep93xx_register_i2c(struct i2c_board_info *devices, int num)
517{
518 i2c_register_board_info(0, devices, num);
519 platform_device_register(&ep93xx_i2c_device);
520}
521
500extern void ep93xx_gpio_init(void); 522extern void ep93xx_gpio_init(void);
501 523
502void __init ep93xx_init_devices(void) 524void __init ep93xx_init_devices(void)
diff --git a/arch/arm/mach-ep93xx/include/mach/platform.h b/arch/arm/mach-ep93xx/include/mach/platform.h
index db2489d3bda7..88f7e88f152f 100644
--- a/arch/arm/mach-ep93xx/include/mach/platform.h
+++ b/arch/arm/mach-ep93xx/include/mach/platform.h
@@ -14,6 +14,7 @@ void ep93xx_map_io(void);
14void ep93xx_init_irq(void); 14void ep93xx_init_irq(void);
15void ep93xx_init_time(unsigned long); 15void ep93xx_init_time(unsigned long);
16void ep93xx_register_eth(struct ep93xx_eth_data *data, int copy_addr); 16void ep93xx_register_eth(struct ep93xx_eth_data *data, int copy_addr);
17void ep93xx_register_i2c(struct i2c_board_info *devices, int num);
17void ep93xx_init_devices(void); 18void ep93xx_init_devices(void);
18extern struct sys_timer ep93xx_timer; 19extern struct sys_timer ep93xx_timer;
19 20