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>
This commit is contained in:
committed by
Ralf Baechle
parent
3a2f9b9905
commit
77c8da014a
@@ -367,6 +367,10 @@ CONFIG_SERIAL_8250_RSA=y
|
|||||||
CONFIG_HW_RANDOM=y
|
CONFIG_HW_RANDOM=y
|
||||||
CONFIG_HW_RANDOM_TIMERIOMEM=m
|
CONFIG_HW_RANDOM_TIMERIOMEM=m
|
||||||
CONFIG_RAW_DRIVER=m
|
CONFIG_RAW_DRIVER=m
|
||||||
|
CONFIG_I2C=y
|
||||||
|
CONFIG_I2C_XLR=y
|
||||||
|
CONFIG_RTC_CLASS=y
|
||||||
|
CONFIG_RTC_DRV_DS1374=y
|
||||||
# CONFIG_HWMON is not set
|
# CONFIG_HWMON is not set
|
||||||
# CONFIG_VGA_CONSOLE is not set
|
# CONFIG_VGA_CONSOLE is not set
|
||||||
# CONFIG_HID_SUPPORT is not set
|
# CONFIG_HID_SUPPORT is not set
|
||||||
|
|||||||
@@ -14,6 +14,7 @@
|
|||||||
#include <linux/resource.h>
|
#include <linux/resource.h>
|
||||||
#include <linux/serial_8250.h>
|
#include <linux/serial_8250.h>
|
||||||
#include <linux/serial_reg.h>
|
#include <linux/serial_reg.h>
|
||||||
|
#include <linux/i2c.h>
|
||||||
|
|
||||||
#include <asm/netlogic/haldefs.h>
|
#include <asm/netlogic/haldefs.h>
|
||||||
#include <asm/netlogic/xlr/iomap.h>
|
#include <asm/netlogic/xlr/iomap.h>
|
||||||
@@ -186,3 +187,53 @@ int xls_platform_usb_init(void)
|
|||||||
|
|
||||||
arch_initcall(xls_platform_usb_init);
|
arch_initcall(xls_platform_usb_init);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_I2C
|
||||||
|
static struct i2c_board_info nlm_i2c_board_info1[] __initdata = {
|
||||||
|
/* All XLR boards have this RTC and Max6657 Temp Chip */
|
||||||
|
[0] = {
|
||||||
|
.type = "ds1374",
|
||||||
|
.addr = 0x68
|
||||||
|
},
|
||||||
|
[1] = {
|
||||||
|
.type = "lm90",
|
||||||
|
.addr = 0x4c
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct resource i2c_resources[] = {
|
||||||
|
[0] = {
|
||||||
|
.start = 0, /* filled at init */
|
||||||
|
.end = 0,
|
||||||
|
.flags = IORESOURCE_MEM,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct platform_device nlm_xlr_i2c_1 = {
|
||||||
|
.name = "xlr-i2cbus",
|
||||||
|
.id = 1,
|
||||||
|
.num_resources = 1,
|
||||||
|
.resource = i2c_resources,
|
||||||
|
};
|
||||||
|
|
||||||
|
static int __init nlm_i2c_init(void)
|
||||||
|
{
|
||||||
|
int err = 0;
|
||||||
|
unsigned int offset;
|
||||||
|
|
||||||
|
/* I2C bus 0 does not have any useful devices, configure only bus 1 */
|
||||||
|
offset = NETLOGIC_IO_I2C_1_OFFSET;
|
||||||
|
nlm_xlr_i2c_1.resource[0].start = CPHYSADDR(nlm_mmio_base(offset));
|
||||||
|
nlm_xlr_i2c_1.resource[0].end = nlm_xlr_i2c_1.resource[0].start + 0xfff;
|
||||||
|
|
||||||
|
platform_device_register(&nlm_xlr_i2c_1);
|
||||||
|
|
||||||
|
err = i2c_register_board_info(1, nlm_i2c_board_info1,
|
||||||
|
ARRAY_SIZE(nlm_i2c_board_info1));
|
||||||
|
if (err < 0)
|
||||||
|
pr_err("nlm-i2c: cannot register board I2C devices\n");
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
|
arch_initcall(nlm_i2c_init);
|
||||||
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user