From 88cde25ec436fb0216f54a19541905c779f1614c Mon Sep 17 00:00:00 2001 From: jchandra Date: Tue, 27 Mar 2012 11:17:04 +0000 Subject: [PATCH] I2C support for XLP, add hints for I2C devices and update PCI resource allocation code. --- sys/mips/conf/XLP.hints | 5 +++++ sys/mips/conf/std.XLP | 15 ++++++++++++--- sys/mips/nlm/xlp_pci.c | 9 +++++++++ 3 files changed, 26 insertions(+), 3 deletions(-) create mode 100644 sys/mips/conf/XLP.hints diff --git a/sys/mips/conf/XLP.hints b/sys/mips/conf/XLP.hints new file mode 100644 index 000000000000..f78eb27efee2 --- /dev/null +++ b/sys/mips/conf/XLP.hints @@ -0,0 +1,5 @@ +# $FreeBSD$ + +# RTC +hint.ds1374_rtc.0.at="iicbus1" +hint.ds1374_rtc.0.addr=0xd0 diff --git a/sys/mips/conf/std.XLP b/sys/mips/conf/std.XLP index a086e94903ad..e998734072e0 100644 --- a/sys/mips/conf/std.XLP +++ b/sys/mips/conf/std.XLP @@ -5,6 +5,8 @@ makeoptions MODULES_OVERRIDE="" makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols #profile 2 +hints "XLP.hints" + options SCHED_ULE # ULE scheduler #options VERBOSE_SYSINIT #options SCHED_4BSD # 4BSD scheduler @@ -55,6 +57,11 @@ options ALT_BREAK_TO_DEBUGGER options GEOM_UZIP +# Device tree +options FDT +options FDT_DTB_STATIC +makeoptions FDT_DTS_FILE=xlp-basic.dts + # Pseudo device loop device random @@ -83,6 +90,8 @@ device ehci # EHCI PCI->USB interface (USB 2.0) #device uhid # "Human Interface Devices" device umass # Requires scbus and da -options FDT -options FDT_DTB_STATIC -makeoptions FDT_DTS_FILE=xlp-basic.dts +# i2c driver and devices +device iic +device iicbus +device iicoc +device ds1374 # RTC on XLP boards diff --git a/sys/mips/nlm/xlp_pci.c b/sys/mips/nlm/xlp_pci.c index 0094b07b3116..95e369cd9fdd 100644 --- a/sys/mips/nlm/xlp_pci.c +++ b/sys/mips/nlm/xlp_pci.c @@ -497,6 +497,15 @@ assign_soc_resource(device_t child, int type, u_long *startp, u_long *endp, *rm = &emul_rman; *bst = uart_bus_space_mem; break; + + case PCI_DEVICE_ID_NLM_I2C: + *va = nlm_pcicfg_base(XLP_IO_I2C_OFFSET(node, unit)) + + XLP_IO_PCI_HDRSZ; + *startp = MIPS_KSEG1_TO_PHYS(*va); + *countp = 0x100; + *rm = &emul_rman; + *bst = uart_bus_space_mem; + break; } /* calculate end if allocated */ if (*rm)