From: Ben Dooks <ben-linux-elnMNo+KYs3YtjvyW6yDsg@public.gmane.org>
To: linux-i2c-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Cc: Ben Dooks <ben-linux-elnMNo+KYs3YtjvyW6yDsg@public.gmane.org>
Subject: [patch 8/9] S3C: Add i2c1 device definition
Date: Fri, 31 Oct 2008 16:04:28 +0000 [thread overview]
Message-ID: <20081031160438.182603988@fluff.org.uk> (raw)
In-Reply-To: 20081031160420.164160051@fluff.org.uk
[-- Attachment #1: simtec/s3c64xx/i2c-add-second-i2c-bus.patch --]
[-- Type: text/plain, Size: 7598 bytes --]
Add device definition and support functions for the
second i2c device (i2c1). If this is selected, the first
i2c bus will become index 0 instead of index -1.
Signed-off-by: Ben Dooks <ben-linux-elnMNo+KYs3YtjvyW6yDsg@public.gmane.org>
Index: linux.git/arch/arm/plat-s3c/dev-i2c1.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ linux.git/arch/arm/plat-s3c/dev-i2c1.c 2008-10-31 00:06:44.000000000 +0000
@@ -0,0 +1,68 @@
+/* linux/arch/arm/plat-s3c/dev-i2c1.c
+ *
+ * Copyright 2008 Simtec Electronics
+ * Ben Dooks <ben-Y5A6D6n0/KfQXOPxS62xeg@public.gmane.org>
+ * http://armlinux.simtec.co.uk/
+ *
+ * S3C series device definition for i2c device 1
+ *
+ * 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 <linux/kernel.h>
+#include <linux/string.h>
+#include <linux/platform_device.h>
+
+#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_IIC1,
+ .end = S3C_PA_IIC1 + SZ_4K - 1,
+ .flags = IORESOURCE_MEM,
+ },
+ [1] = {
+ .start = IRQ_IIC1,
+ .end = IRQ_IIC1,
+ .flags = IORESOURCE_IRQ,
+ },
+};
+
+struct platform_device s3c_device_i2c1 = {
+ .name = "s3c2410-i2c",
+ .id = 1,
+ .num_resources = ARRAY_SIZE(s3c_i2c_resource),
+ .resource = s3c_i2c_resource,
+};
+
+static struct s3c2410_platform_i2c default_i2c_data1 __initdata = {
+ .flags = 0,
+ .bus_num = 1,
+ .slave_addr = 0x10,
+ .bus_freq = 100*1000,
+ .max_freq = 400*1000,
+ .sda_delay = S3C2410_IICLC_SDA_DELAY5 | S3C2410_IICLC_FILTER_ON,
+};
+
+void __init s3c_i2c1_set_platdata(struct s3c2410_platform_i2c *pd)
+{
+ struct s3c2410_platform_i2c *npd;
+
+ if (!pd)
+ pd = &default_i2c_data1;
+
+ npd = kmemdup(pd, sizeof(struct s3c2410_platform_i2c), GFP_KERNEL);
+ if (!npd)
+ printk(KERN_ERR "%s: no memory for platform data\n", __func__);
+ else if (!npd->cfg_gpio)
+ npd->cfg_gpio = s3c_i2c1_cfg_gpio;
+
+ s3c_device_i2c1.dev.platform_data = npd;
+}
Index: linux.git/arch/arm/mach-s3c6400/include/mach/map.h
===================================================================
--- linux.git.orig/arch/arm/mach-s3c6400/include/mach/map.h 2008-10-31 00:00:24.000000000 +0000
+++ linux.git/arch/arm/mach-s3c6400/include/mach/map.h 2008-10-31 00:00:36.000000000 +0000
@@ -41,6 +41,7 @@
#define S3C64XX_PA_SYSCON (0x7E00F000)
#define S3C64XX_PA_TIMER (0x7F006000)
#define S3C64XX_PA_IIC0 (0x7F004000)
+#define S3C64XX_PA_IIC1 (0x7F00F000)
#define S3C64XX_PA_GPIO (0x7F008000)
#define S3C64XX_VA_GPIO S3C_ADDR(0x00500000)
@@ -60,5 +61,6 @@
#define S3C_PA_HSMMC1 S3C64XX_PA_HSMMC1
#define S3C_PA_HSMMC2 S3C64XX_PA_HSMMC2
#define S3C_PA_IIC S3C64XX_PA_IIC0
+#define S3C_PA_IIC1 S3C64XX_PA_IIC1
#endif /* __ASM_ARCH_6400_MAP_H */
Index: linux.git/arch/arm/plat-s3c/Kconfig
===================================================================
--- linux.git.orig/arch/arm/plat-s3c/Kconfig 2008-10-31 00:00:24.000000000 +0000
+++ linux.git/arch/arm/plat-s3c/Kconfig 2008-10-31 00:00:36.000000000 +0000
@@ -160,3 +160,9 @@ config S3C_DEV_HSMMC1
depends on PLAT_S3C
help
Compile in platform device definitions for HSMMC channel 1
+
+config S3C_DEV_I2C1
+ bool
+ depends on PLAT_S3C
+ help
+ Compile in platform device definitions for I2C channel 1
Index: linux.git/arch/arm/plat-s3c/Makefile
===================================================================
--- linux.git.orig/arch/arm/plat-s3c/Makefile 2008-10-31 00:00:24.000000000 +0000
+++ linux.git/arch/arm/plat-s3c/Makefile 2008-10-31 00:00:36.000000000 +0000
@@ -23,3 +23,4 @@ obj-y += gpio-config.o
obj-$(CONFIG_S3C_DEV_HSMMC) += dev-hsmmc.o
obj-$(CONFIG_S3C_DEV_HSMMC1) += dev-hsmmc1.o
obj-y += dev-i2c0.o
+obj-$(CONFIG_S3C_DEV_I2C1) += dev-i2c1.o
Index: linux.git/arch/arm/plat-s3c/dev-i2c0.c
===================================================================
--- linux.git.orig/arch/arm/plat-s3c/dev-i2c0.c 2008-10-31 00:00:24.000000000 +0000
+++ linux.git/arch/arm/plat-s3c/dev-i2c0.c 2008-10-31 00:07:05.000000000 +0000
@@ -37,12 +37,16 @@ static struct resource s3c_i2c_resource[
struct platform_device s3c_device_i2c0 = {
.name = "s3c2410-i2c",
+#ifdef CONFIG_S3C_DEV_I2C1
+ .id = 0,
+#else
.id = -1,
+#endif
.num_resources = ARRAY_SIZE(s3c_i2c_resource),
.resource = s3c_i2c_resource,
};
-struct s3c2410_platform_i2c default_i2c_data __initdata = {
+static struct s3c2410_platform_i2c default_i2c_data0 __initdata = {
.flags = 0,
.slave_addr = 0x10,
.bus_freq = 100*1000,
@@ -55,7 +59,7 @@ void __init s3c_i2c0_set_platdata(struct
struct s3c2410_platform_i2c *npd;
if (!pd)
- pd = &default_i2c_data;
+ pd = &default_i2c_data0;
npd = kmemdup(pd, sizeof(struct s3c2410_platform_i2c), GFP_KERNEL);
if (!npd)
Index: linux.git/arch/arm/plat-s3c/include/plat/iic.h
===================================================================
--- linux.git.orig/arch/arm/plat-s3c/include/plat/iic.h 2008-10-31 00:00:24.000000000 +0000
+++ linux.git/arch/arm/plat-s3c/include/plat/iic.h 2008-10-31 00:00:36.000000000 +0000
@@ -48,8 +48,10 @@ struct s3c2410_platform_i2c {
* as the driver will no longer carry defaults.
*/
extern void s3c_i2c0_set_platdata(struct s3c2410_platform_i2c *i2c);
+extern void s3c_i2c1_set_platdata(struct s3c2410_platform_i2c *i2c);
/* defined by architecture to configure gpio */
extern void s3c_i2c0_cfg_gpio(struct platform_device *dev);
+extern void s3c_i2c1_cfg_gpio(struct platform_device *dev);
#endif /* __ASM_ARCH_IIC_H */
Index: linux.git/arch/arm/plat-s3c/include/plat/devs.h
===================================================================
--- linux.git.orig/arch/arm/plat-s3c/include/plat/devs.h 2008-10-31 00:00:24.000000000 +0000
+++ linux.git/arch/arm/plat-s3c/include/plat/devs.h 2008-10-31 00:00:36.000000000 +0000
@@ -28,6 +28,7 @@ extern struct platform_device s3c_device
extern struct platform_device s3c_device_lcd;
extern struct platform_device s3c_device_wdt;
extern struct platform_device s3c_device_i2c0;
+extern struct platform_device s3c_device_i2c1;
extern struct platform_device s3c_device_iis;
extern struct platform_device s3c_device_rtc;
extern struct platform_device s3c_device_adc;
Index: linux.git/arch/arm/plat-s3c64xx/include/plat/irqs.h
===================================================================
--- linux.git.orig/arch/arm/plat-s3c64xx/include/plat/irqs.h 2008-10-31 00:03:34.000000000 +0000
+++ linux.git/arch/arm/plat-s3c64xx/include/plat/irqs.h 2008-10-31 00:13:33.000000000 +0000
@@ -70,6 +70,7 @@
#define IRQ_CAMIF_C S3C64XX_IRQ_VIC0(3)
#define IRQ_CAMIF_P S3C64XX_IRQ_VIC0(4)
#define IRQ_CAMIF_MC S3C64XX_IRQ_VIC0(5)
+#define IRQ_S3C6410_IIC1 S3C64XX_IRQ_VIC0(5)
#define IRQ_S3C6410_IIS S3C64XX_IRQ_VIC0(6)
#define IRQ_S3C6400_CAMIF_MP S3C64XX_IRQ_VIC0(6)
#define IRQ_CAMIF_WE_C S3C64XX_IRQ_VIC0(7)
@@ -144,6 +145,10 @@
#define IRQ_TIMER3 S3C64XX_TIMER_IRQ(3)
#define IRQ_TIMER4 S3C64XX_TIMER_IRQ(4)
+/* compatibility for device defines */
+
+#define IRQ_IIC1 IRQ_S3C6410_IIC1
+
/* Since the IRQ_EINT(x) are a linear mapping on current s3c64xx series
* we just defined them as an IRQ_EINT(x) macro from S3C_IRQ_EINT_BASE
* which we place after the pair of VICs. */
--
Ben (ben-elnMNo+KYs3YtjvyW6yDsg@public.gmane.org, http://www.fluff.org/)
'a smiley only costs 4 bytes'
next prev parent reply other threads:[~2008-10-31 16:04 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-10-31 16:04 [patch 0/9] I2C patches for S3C24XX Ben Dooks
2008-10-31 16:04 ` [patch 1/9] i2c-s3c2410: fix check for being in suspend Ben Dooks
2008-10-31 16:04 ` [patch 2/9] i2c-s3c2410: Use <linux/io.h> over <asm/io.h> Ben Dooks
2008-10-31 16:04 ` [patch 3/9] i2c-s3c2410: fixup style problems from checkpatch.pl Ben Dooks
2008-10-31 16:04 ` [patch 4/9] i2c-s3c2410: use platform data for gpio configuration Ben Dooks
2008-10-31 16:04 ` [patch 5/9] i2c-s3c2410: Add ARCH_S3C64XX to allowed archs Ben Dooks
2008-10-31 16:04 ` [patch 6/9] i2c-s3c2410: remove default platform data Ben Dooks
2008-10-31 16:04 ` [patch 7/9] i2c-s3c2410: Allow more than one i2c-s3c2410 adapter Ben Dooks
2008-10-31 16:04 ` Ben Dooks [this message]
2008-10-31 16:04 ` [patch 9/9] i2c-s3c2410: change IRQ to be plain integer Ben Dooks
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20081031160438.182603988@fluff.org.uk \
--to=ben-linux-elnmno+kys3ytjvyw6ydsg@public.gmane.org \
--cc=linux-i2c-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.