Commit 77c8da014afcc0ea7a522faad1824771dbe21577
Committed by
Ralf Baechle
1 parent
3a2f9b9905
Exists in
smarc-l5.0.0_1.0.0-ga
and in
5 other branches
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 |