Commit 77c8da014afcc0ea7a522faad1824771dbe21577

Authored by Jayachandran C
Committed by Ralf Baechle
1 parent 3a2f9b9905

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>

Showing 2 changed files with 55 additions and 0 deletions Side-by-side Diff

arch/mips/configs/nlm_xlr_defconfig
... ... @@ -367,6 +367,10 @@
367 367 CONFIG_HW_RANDOM=y
368 368 CONFIG_HW_RANDOM_TIMERIOMEM=m
369 369 CONFIG_RAW_DRIVER=m
  370 +CONFIG_I2C=y
  371 +CONFIG_I2C_XLR=y
  372 +CONFIG_RTC_CLASS=y
  373 +CONFIG_RTC_DRV_DS1374=y
370 374 # CONFIG_HWMON is not set
371 375 # CONFIG_VGA_CONSOLE is not set
372 376 # CONFIG_HID_SUPPORT is not set
arch/mips/netlogic/xlr/platform.c
... ... @@ -14,6 +14,7 @@
14 14 #include <linux/resource.h>
15 15 #include <linux/serial_8250.h>
16 16 #include <linux/serial_reg.h>
  17 +#include <linux/i2c.h>
17 18  
18 19 #include <asm/netlogic/haldefs.h>
19 20 #include <asm/netlogic/xlr/iomap.h>
... ... @@ -185,5 +186,55 @@
185 186 }
186 187  
187 188 arch_initcall(xls_platform_usb_init);
  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);
188 239 #endif