diff options
author | Jayachandran C <jayachandranc@netlogicmicro.com> | 2012-07-24 11:28:54 -0400 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2012-07-24 11:28:54 -0400 |
commit | 77c8da014afcc0ea7a522faad1824771dbe21577 (patch) | |
tree | 833a3623546f42933357ffddc1dead9d55e7f6b7 /arch/mips/netlogic | |
parent | 3a2f9b99058cbe3f1b01297d29dc5b376563f670 (diff) |
MIPS: Netlogic: Platform changes for XLR/XLS I2C
Add platform code for XLR/XLS I2C controller and devices. Add
devices on the I2C bus on the XLR/XLS developement boards.
Signed-off-by: Jayachandran C <jayachandranc@netlogicmicro.com>
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/3757/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Diffstat (limited to 'arch/mips/netlogic')
-rw-r--r-- | arch/mips/netlogic/xlr/platform.c | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/arch/mips/netlogic/xlr/platform.c b/arch/mips/netlogic/xlr/platform.c index cb0ab63089db..71b44d82621d 100644 --- a/arch/mips/netlogic/xlr/platform.c +++ b/arch/mips/netlogic/xlr/platform.c | |||
@@ -14,6 +14,7 @@ | |||
14 | #include <linux/resource.h> | 14 | #include <linux/resource.h> |
15 | #include <linux/serial_8250.h> | 15 | #include <linux/serial_8250.h> |
16 | #include <linux/serial_reg.h> | 16 | #include <linux/serial_reg.h> |
17 | #include <linux/i2c.h> | ||
17 | 18 | ||
18 | #include <asm/netlogic/haldefs.h> | 19 | #include <asm/netlogic/haldefs.h> |
19 | #include <asm/netlogic/xlr/iomap.h> | 20 | #include <asm/netlogic/xlr/iomap.h> |
@@ -186,3 +187,53 @@ int xls_platform_usb_init(void) | |||
186 | 187 | ||
187 | arch_initcall(xls_platform_usb_init); | 188 | arch_initcall(xls_platform_usb_init); |
188 | #endif | 189 | #endif |
190 | |||
191 | #ifdef CONFIG_I2C | ||
192 | static struct i2c_board_info nlm_i2c_board_info1[] __initdata = { | ||
193 | /* All XLR boards have this RTC and Max6657 Temp Chip */ | ||
194 | [0] = { | ||
195 | .type = "ds1374", | ||
196 | .addr = 0x68 | ||
197 | }, | ||
198 | [1] = { | ||
199 | .type = "lm90", | ||
200 | .addr = 0x4c | ||
201 | }, | ||
202 | }; | ||
203 | |||
204 | static struct resource i2c_resources[] = { | ||
205 | [0] = { | ||
206 | .start = 0, /* filled at init */ | ||
207 | .end = 0, | ||
208 | .flags = IORESOURCE_MEM, | ||
209 | }, | ||
210 | }; | ||
211 | |||
212 | static struct platform_device nlm_xlr_i2c_1 = { | ||
213 | .name = "xlr-i2cbus", | ||
214 | .id = 1, | ||
215 | .num_resources = 1, | ||
216 | .resource = i2c_resources, | ||
217 | }; | ||
218 | |||
219 | static int __init nlm_i2c_init(void) | ||
220 | { | ||
221 | int err = 0; | ||
222 | unsigned int offset; | ||
223 | |||
224 | /* I2C bus 0 does not have any useful devices, configure only bus 1 */ | ||
225 | offset = NETLOGIC_IO_I2C_1_OFFSET; | ||
226 | nlm_xlr_i2c_1.resource[0].start = CPHYSADDR(nlm_mmio_base(offset)); | ||
227 | nlm_xlr_i2c_1.resource[0].end = nlm_xlr_i2c_1.resource[0].start + 0xfff; | ||
228 | |||
229 | platform_device_register(&nlm_xlr_i2c_1); | ||
230 | |||
231 | err = i2c_register_board_info(1, nlm_i2c_board_info1, | ||
232 | ARRAY_SIZE(nlm_i2c_board_info1)); | ||
233 | if (err < 0) | ||
234 | pr_err("nlm-i2c: cannot register board I2C devices\n"); | ||
235 | return err; | ||
236 | } | ||
237 | |||
238 | arch_initcall(nlm_i2c_init); | ||
239 | #endif | ||