svn commit: r211811 - head/sys/mips/rmi
Jayachandran C.
jchandra at FreeBSD.org
Wed Aug 25 11:49:48 UTC 2010
Author: jchandra
Date: Wed Aug 25 11:49:48 2010
New Revision: 211811
URL: http://svn.freebsd.org/changeset/base/211811
Log:
XLR PIC code update and style(9) fixes.
- style(9) fixes to mips/rmi platform files
- update pic.h to add pic_setup_intr() and use pic_setup_intr() for setting
up interrupts which are routed thru PIC.
- remove rmi_spin_mutex_safe and haslock, and make sure that the functions
are called only after mutexes are available.
Modified:
head/sys/mips/rmi/fmn.c
head/sys/mips/rmi/intr_machdep.c
head/sys/mips/rmi/iodi.c
head/sys/mips/rmi/msgring.h
head/sys/mips/rmi/pic.h
head/sys/mips/rmi/xlr_machdep.c
head/sys/mips/rmi/xlr_pci.c
Modified: head/sys/mips/rmi/fmn.c
==============================================================================
--- head/sys/mips/rmi/fmn.c Wed Aug 25 11:11:14 2010 (r211810)
+++ head/sys/mips/rmi/fmn.c Wed Aug 25 11:49:48 2010 (r211811)
@@ -362,14 +362,10 @@ register_msgring_handler(int major,
if (major >= MAX_TX_STNS)
return 1;
- //dbg_msg("major=%d, action=%p, dev_id=%p\n", major, action, dev_id);
-
- if (rmi_spin_mutex_safe)
- mtx_lock_spin(&msgrng_lock);
+ mtx_lock_spin(&msgrng_lock);
tx_stn_handlers[major].action = action;
tx_stn_handlers[major].dev_id = dev_id;
- if (rmi_spin_mutex_safe)
- mtx_unlock_spin(&msgrng_lock);
+ mtx_unlock_spin(&msgrng_lock);
if (xlr_test_and_set(&msgring_int_enabled)) {
create_msgring_thread(0, 0);
Modified: head/sys/mips/rmi/intr_machdep.c
==============================================================================
--- head/sys/mips/rmi/intr_machdep.c Wed Aug 25 11:11:14 2010 (r211810)
+++ head/sys/mips/rmi/intr_machdep.c Wed Aug 25 11:49:48 2010 (r211811)
@@ -168,7 +168,7 @@ cpu_intr(struct trapframe *tf)
mips_intrcnt_inc(mips_intr_counters[i]);
}
write_c0_eirr64(1ULL << i);
- pic_ack(i, 0);
+ pic_ack(i);
if (!ie || TAILQ_EMPTY(&ie->ie_handlers)) {
printf("stray interrupt %d\n", i);
continue;
@@ -176,7 +176,7 @@ cpu_intr(struct trapframe *tf)
if (intr_event_handle(ie, tf) != 0) {
printf("stray interrupt %d\n", i);
}
- pic_delayed_ack(i, 0);
+ pic_delayed_ack(i);
}
critical_exit();
}
Modified: head/sys/mips/rmi/iodi.c
==============================================================================
--- head/sys/mips/rmi/iodi.c Wed Aug 25 11:11:14 2010 (r211810)
+++ head/sys/mips/rmi/iodi.c Wed Aug 25 11:49:48 2010 (r211811)
@@ -91,53 +91,28 @@ struct iodi_softc *iodi_softc; /* There
static int
iodi_setup_intr(device_t dev, device_t child,
- struct resource *ires, int flags, driver_filter_t * filt, driver_intr_t * intr, void *arg,
- void **cookiep)
+ struct resource *ires, int flags, driver_filter_t * filt,
+ driver_intr_t *intr, void *arg, void **cookiep)
{
- int level;
- xlr_reg_t *mmio = xlr_io_mmio(XLR_IO_PIC_OFFSET);
- xlr_reg_t reg;
- /* FIXME is this the right place to fiddle with PIC? */
if (strcmp(device_get_name(child), "uart") == 0) {
/* FIXME uart 1? */
- if (rmi_spin_mutex_safe)
- mtx_lock_spin(&xlr_pic_lock);
- level = PIC_IRQ_IS_EDGE_TRIGGERED(PIC_IRT_UART_0_INDEX);
- xlr_write_reg(mmio, PIC_IRT_0_UART_0, 0x01);
- xlr_write_reg(mmio, PIC_IRT_1_UART_0, ((1 << 31) | (level << 30) | (1 << 6) | (PIC_UART_0_IRQ)));
- if (rmi_spin_mutex_safe)
- mtx_unlock_spin(&xlr_pic_lock);
- cpu_establish_hardintr("uart", filt,
- (driver_intr_t *) intr, (void *)arg, PIC_UART_0_IRQ, flags, cookiep);
-
+ cpu_establish_hardintr("uart", filt, intr, arg,
+ PIC_UART_0_IRQ, flags, cookiep);
+ pic_setup_intr(PIC_IRT_UART_0_INDEX, PIC_UART_0_IRQ, 0x1);
} else if (strcmp(device_get_name(child), "rge") == 0) {
int irq;
/* This is a hack to pass in the irq */
irq = (intptr_t)ires->__r_i;
- if (rmi_spin_mutex_safe)
- mtx_lock_spin(&xlr_pic_lock);
- reg = xlr_read_reg(mmio, PIC_IRT_1_BASE + irq - PIC_IRQ_BASE);
- xlr_write_reg(mmio, PIC_IRT_1_BASE + irq - PIC_IRQ_BASE, reg | (1 << 6) | (1 << 30) | (1 << 31));
- if (rmi_spin_mutex_safe)
- mtx_unlock_spin(&xlr_pic_lock);
- cpu_establish_hardintr("rge", filt, (driver_intr_t *) intr, (void *)arg, irq, flags, cookiep);
-
+ cpu_establish_hardintr("rge", filt, intr, arg, irq, flags,
+ cookiep);
+ pic_setup_intr(irq - PIC_IRQ_BASE, irq, 0x1);
} else if (strcmp(device_get_name(child), "ehci") == 0) {
- if (rmi_spin_mutex_safe)
- mtx_lock_spin(&xlr_pic_lock);
- reg = xlr_read_reg(mmio, PIC_IRT_1_BASE + PIC_USB_IRQ - PIC_IRQ_BASE);
- xlr_write_reg(mmio, PIC_IRT_1_BASE + PIC_USB_IRQ - PIC_IRQ_BASE, reg | (1 << 6) | (1 << 30) | (1 << 31));
- if (rmi_spin_mutex_safe)
- mtx_unlock_spin(&xlr_pic_lock);
- cpu_establish_hardintr("ehci", filt, (driver_intr_t *) intr, (void *)arg, PIC_USB_IRQ, flags, cookiep);
+ cpu_establish_hardintr("ehci", filt, intr, arg, PIC_USB_IRQ, flags,
+ cookiep);
+ pic_setup_intr(PIC_USB_IRQ - PIC_IRQ_BASE, PIC_USB_IRQ, 0x1);
}
- /*
- * This causes a panic and looks recursive to me (RRS).
- * BUS_SETUP_INTR(device_get_parent(dev), child, ires, flags, filt,
- * intr, arg, cookiep);
- */
return (0);
}
Modified: head/sys/mips/rmi/msgring.h
==============================================================================
--- head/sys/mips/rmi/msgring.h Wed Aug 25 11:11:14 2010 (r211810)
+++ head/sys/mips/rmi/msgring.h Wed Aug 25 11:49:48 2010 (r211811)
@@ -25,6 +25,7 @@
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
+ * $FreeBSD$
*
* RMI_BSD */
#ifndef _RMI_MSGRING_H_
@@ -471,13 +472,13 @@ extern struct stn_cc xls_cc_table_sec;
#define msgrng_access_save(lock, mflags) do { \
- if (rmi_spin_mutex_safe) mtx_lock_spin(lock); \
+ mtx_lock_spin(lock); \
msgrng_flags_save(mflags); \
}while(0)
#define msgrng_access_restore(lock, mflags) do { \
msgrng_flags_restore(mflags); \
- if (rmi_spin_mutex_safe) mtx_unlock_spin(lock); \
+ mtx_unlock_spin(lock); \
}while(0)
#define msgrng_access_enable(mflags) do { \
Modified: head/sys/mips/rmi/pic.h
==============================================================================
--- head/sys/mips/rmi/pic.h Wed Aug 25 11:11:14 2010 (r211810)
+++ head/sys/mips/rmi/pic.h Wed Aug 25 11:49:48 2010 (r211811)
@@ -32,219 +32,154 @@
#define _RMI_PIC_H_
#include <sys/cdefs.h>
-
-
-
-extern int rmi_spin_mutex_safe;
-
#include <sys/lock.h>
#include <sys/mutex.h>
#include <mips/rmi/iomap.h>
-#define PIC_IRT_WD_INDEX 0
-#define PIC_IRT_TIMER_0_INDEX 1
-#define PIC_IRT_TIMER_1_INDEX 2
-#define PIC_IRT_TIMER_2_INDEX 3
-#define PIC_IRT_TIMER_3_INDEX 4
-#define PIC_IRT_TIMER_4_INDEX 5
-#define PIC_IRT_TIMER_5_INDEX 6
-#define PIC_IRT_TIMER_6_INDEX 7
-#define PIC_IRT_TIMER_7_INDEX 8
-#define PIC_IRT_CLOCK_INDEX PIC_IRT_TIMER_7_INDEX
-#define PIC_IRT_UART_0_INDEX 9
-#define PIC_IRT_UART_1_INDEX 10
-#define PIC_IRT_I2C_0_INDEX 11
-#define PIC_IRT_I2C_1_INDEX 12
-#define PIC_IRT_PCMCIA_INDEX 13
-#define PIC_IRT_GPIO_INDEX 14
-#define PIC_IRT_HYPER_INDEX 15
-#define PIC_IRT_PCIX_INDEX 16
-#define PIC_IRT_GMAC0_INDEX 17
-#define PIC_IRT_GMAC1_INDEX 18
-#define PIC_IRT_GMAC2_INDEX 19
-#define PIC_IRT_GMAC3_INDEX 20
-#define PIC_IRT_XGS0_INDEX 21
-#define PIC_IRT_XGS1_INDEX 22
-#define PIC_IRT_HYPER_FATAL_INDEX 23
-#define PIC_IRT_PCIX_FATAL_INDEX 24
-#define PIC_IRT_BRIDGE_AERR_INDEX 25
-#define PIC_IRT_BRIDGE_BERR_INDEX 26
-#define PIC_IRT_BRIDGE_TB_INDEX 27
-#define PIC_IRT_BRIDGE_AERR_NMI_INDEX 28
+#define PIC_IRT_WD_INDEX 0
+#define PIC_IRT_TIMER_INDEX(i) (1 + (i))
+#define PIC_IRT_CLOCK_INDEX PIC_IRT_TIMER_7_INDEX
+#define PIC_IRT_UART_0_INDEX 9
+#define PIC_IRT_UART_1_INDEX 10
+#define PIC_IRT_I2C_0_INDEX 11
+#define PIC_IRT_I2C_1_INDEX 12
+#define PIC_IRT_PCMCIA_INDEX 13
+#define PIC_IRT_GPIO_INDEX 14
+#define PIC_IRT_HYPER_INDEX 15
+#define PIC_IRT_PCIX_INDEX 16
+#define PIC_IRT_GMAC0_INDEX 17
+#define PIC_IRT_GMAC1_INDEX 18
+#define PIC_IRT_GMAC2_INDEX 19
+#define PIC_IRT_GMAC3_INDEX 20
+#define PIC_IRT_XGS0_INDEX 21
+#define PIC_IRT_XGS1_INDEX 22
+#define PIC_IRT_HYPER_FATAL_INDEX 23
+#define PIC_IRT_PCIX_FATAL_INDEX 24
+#define PIC_IRT_BRIDGE_AERR_INDEX 25
+#define PIC_IRT_BRIDGE_BERR_INDEX 26
+#define PIC_IRT_BRIDGE_TB_INDEX 27
+#define PIC_IRT_BRIDGE_AERR_NMI_INDEX 28
/* numbering for XLS */
-#define PIC_IRT_BRIDGE_ERR_INDEX 25
-#define PIC_IRT_PCIE_LINK0_INDEX 26
-#define PIC_IRT_PCIE_LINK1_INDEX 27
-#define PIC_IRT_PCIE_LINK2_INDEX 23
-#define PIC_IRT_PCIE_LINK3_INDEX 24
-#define PIC_IRT_PCIE_INT_INDEX 28
-#define PIC_IRT_PCIE_FATAL_INDEX 29
-#define PIC_IRT_GPIO_B_INDEX 30
-#define PIC_IRT_USB_INDEX 31
-
-#define PIC_NUM_IRTS 32
-
-#define PIC_SYS_TIMER_MAXVAL_0_BASE 0x100
-#define PIC_SYS_TIMER_MAXVAL_1_BASE 0x110
-
-#define PIC_SYS_TIMER_0_BASE 0x120
-#define PIC_SYS_TIMER_1_BASE 0x130
-
-#define PIC_CLOCK_TIMER 7
-
-#define PIC_CTRL 0x00
-#define PIC_IPI 0x04
-#define PIC_INT_ACK 0x06
-
-#define WD_MAX_VAL_0 0x08
-#define WD_MAX_VAL_1 0x09
-#define WD_MASK_0 0x0a
-#define WD_MASK_1 0x0b
-#define WD_HEARBEAT_0 0x0c
-#define WD_HEARBEAT_1 0x0d
-
-#define PIC_IRT_0_BASE 0x40
-#define PIC_IRT_1_BASE 0x80
-
-#define PIC_IRT_0_WD (PIC_IRT_0_BASE + PIC_IRT_WD_INDEX)
-#define PIC_IRT_1_WD (PIC_IRT_1_BASE + PIC_IRT_WD_INDEX)
-#define PIC_IRT_0_TIMER_0 (PIC_IRT_0_BASE + PIC_IRT_TIMER_0_INDEX)
-#define PIC_IRT_1_TIMER_0 (PIC_IRT_1_BASE + PIC_IRT_TIMER_0_INDEX)
-#define PIC_IRT_0_TIMER_1 (PIC_IRT_0_BASE + PIC_IRT_TIMER_1_INDEX)
-#define PIC_IRT_1_TIMER_1 (PIC_IRT_1_BASE + PIC_IRT_TIMER_1_INDEX)
-#define PIC_IRT_0_TIMER_2 (PIC_IRT_0_BASE + PIC_IRT_TIMER_2_INDEX)
-#define PIC_IRT_1_TIMER_2 (PIC_IRT_1_BASE + PIC_IRT_TIMER_2_INDEX)
-#define PIC_IRT_0_TIMER_3 (PIC_IRT_0_BASE + PIC_IRT_TIMER_3_INDEX)
-#define PIC_IRT_1_TIMER_3 (PIC_IRT_1_BASE + PIC_IRT_TIMER_3_INDEX)
-#define PIC_IRT_0_TIMER_4 (PIC_IRT_0_BASE + PIC_IRT_TIMER_4_INDEX)
-#define PIC_IRT_1_TIMER_4 (PIC_IRT_1_BASE + PIC_IRT_TIMER_4_INDEX)
-#define PIC_IRT_0_TIMER_5 (PIC_IRT_0_BASE + PIC_IRT_TIMER_5_INDEX)
-#define PIC_IRT_1_TIMER_5 (PIC_IRT_1_BASE + PIC_IRT_TIMER_5_INDEX)
-#define PIC_IRT_0_TIMER_6 (PIC_IRT_0_BASE + PIC_IRT_TIMER_6_INDEX)
-#define PIC_IRT_1_TIMER_6 (PIC_IRT_1_BASE + PIC_IRT_TIMER_6_INDEX)
-#define PIC_IRT_0_TIMER_7 (PIC_IRT_0_BASE + PIC_IRT_TIMER_7_INDEX)
-#define PIC_IRT_1_TIMER_7 (PIC_IRT_1_BASE + PIC_IRT_TIMER_7_INDEX)
-#define PIC_IRT_0_CLOCK (PIC_IRT_0_TIMER_7)
-#define PIC_IRT_1_CLOCK (PIC_IRT_1_TIMER_7)
-#define PIC_IRT_0_UART_0 (PIC_IRT_0_BASE + PIC_IRT_UART_0_INDEX)
-#define PIC_IRT_1_UART_0 (PIC_IRT_1_BASE + PIC_IRT_UART_0_INDEX)
-#define PIC_IRT_0_UART_1 (PIC_IRT_0_BASE + PIC_IRT_UART_1_INDEX)
-#define PIC_IRT_1_UART_1 (PIC_IRT_1_BASE + PIC_IRT_UART_1_INDEX)
-#define PIC_IRT_0_I2C_0 (PIC_IRT_0_BASE + PIC_IRT_I2C_0_INDEX)
-#define PIC_IRT_1_I2C_0 (PIC_IRT_1_BASE + PIC_IRT_I2C_0_INDEX)
-#define PIC_IRT_0_I2C_1 (PIC_IRT_0_BASE + PIC_IRT_I2C_1_INDEX)
-#define PIC_IRT_1_I2C_1 (PIC_IRT_1_BASE + PIC_IRT_I2C_1_INDEX)
-#define PIC_IRT_0_HYPER (PIC_IRT_0_BASE + PIC_IRT_HYPER_INDEX)
-#define PIC_IRT_1_HYPER (PIC_IRT_1_BASE + PIC_IRT_HYPER_INDEX)
-#define PIC_IRT_0_PCIX (PIC_IRT_0_BASE + PIC_IRT_PCIX_INDEX)
-#define PIC_IRT_1_PCIX (PIC_IRT_1_BASE + PIC_IRT_PCIX_INDEX)
-
-#define PIC_TIMER_0_MAXVAL_0 (PIC_SYS_TIMER_MAXVAL_0_BASE + 0)
-#define PIC_TIMER_0_MAXVAL_1 (PIC_SYS_TIMER_MAXVAL_1_BASE + 0)
-#define PIC_TIMER_0_COUNTER_0 (PIC_SYS_TIMER_0_BASE + 0)
-#define PIC_TIMER_0_COUNTER_1 (PIC_SYS_TIMER_1_BASE + 0)
-#define PIC_TIMER_6_MAXVAL_0 (PIC_SYS_TIMER_MAXVAL_0_BASE + 6)
-#define PIC_TIMER_6_MAXVAL_1 (PIC_SYS_TIMER_MAXVAL_1_BASE + 6)
-#define PIC_TIMER_6_COUNTER_0 (PIC_SYS_TIMER_0_BASE + 6)
-#define PIC_TIMER_6_COUNTER_1 (PIC_SYS_TIMER_1_BASE + 6)
-#define PIC_TIMER_7_MAXVAL_0 (PIC_SYS_TIMER_MAXVAL_0_BASE + 7)
-#define PIC_TIMER_7_MAXVAL_1 (PIC_SYS_TIMER_MAXVAL_1_BASE + 7)
-#define PIC_TIMER_7_COUNTER_0 (PIC_SYS_TIMER_0_BASE + 7)
-#define PIC_TIMER_7_COUNTER_1 (PIC_SYS_TIMER_1_BASE + 7)
-
-#define PIC_IRQ_BASE 8
-#define PIC_IRT_FIRST_IRQ PIC_IRQ_BASE
-#define PIC_WD_IRQ (PIC_IRQ_BASE + PIC_IRT_WD_INDEX)
-#define PIC_TIMER_0_IRQ (PIC_IRQ_BASE + PIC_IRT_TIMER_0_INDEX)
-#define PIC_TIMER_1_IRQ (PIC_IRQ_BASE + PIC_IRT_TIMER_1_INDEX)
-#define PIC_TIMER_2_IRQ (PIC_IRQ_BASE + PIC_IRT_TIMER_2_INDEX)
-#define PIC_TIMER_3_IRQ (PIC_IRQ_BASE + PIC_IRT_TIMER_3_INDEX)
-#define PIC_TIMER_4_IRQ (PIC_IRQ_BASE + PIC_IRT_TIMER_4_INDEX)
-#define PIC_TIMER_5_IRQ (PIC_IRQ_BASE + PIC_IRT_TIMER_5_INDEX)
-#define PIC_TIMER_6_IRQ (PIC_IRQ_BASE + PIC_IRT_TIMER_6_INDEX)
-#define PIC_TIMER_7_IRQ (PIC_IRQ_BASE + PIC_IRT_TIMER_7_INDEX)
-#define PIC_CLOCK_IRQ (PIC_TIMER_7_IRQ)
-#define PIC_UART_0_IRQ (PIC_IRQ_BASE + PIC_IRT_UART_0_INDEX)
-#define PIC_UART_1_IRQ (PIC_IRQ_BASE + PIC_IRT_UART_1_INDEX)
-#define PIC_I2C_0_IRQ (PIC_IRQ_BASE + PIC_IRT_I2C_0_INDEX)
-#define PIC_I2C_1_IRQ (PIC_IRQ_BASE + PIC_IRT_I2C_1_INDEX)
-#define PIC_PCMCIA_IRQ (PIC_IRQ_BASE + PIC_IRT_PCMCIA_INDEX)
-#define PIC_GPIO_IRQ (PIC_IRQ_BASE + PIC_IRT_GPIO_INDEX)
-#define PIC_HYPER_IRQ (PIC_IRQ_BASE + PIC_IRT_HYPER_INDEX)
-#define PIC_PCIX_IRQ (PIC_IRQ_BASE + PIC_IRT_PCIX_INDEX)
-#define PIC_GMAC_0_IRQ (PIC_IRQ_BASE + PIC_IRT_GMAC0_INDEX)
-#define PIC_GMAC_1_IRQ (PIC_IRQ_BASE + PIC_IRT_GMAC1_INDEX)
-#define PIC_GMAC_2_IRQ (PIC_IRQ_BASE + PIC_IRT_GMAC2_INDEX)
-#define PIC_GMAC_3_IRQ (PIC_IRQ_BASE + PIC_IRT_GMAC3_INDEX)
-#define PIC_XGS_0_IRQ (PIC_IRQ_BASE + PIC_IRT_XGS0_INDEX)
-#define PIC_XGS_1_IRQ (PIC_IRQ_BASE + PIC_IRT_XGS1_INDEX)
-#define PIC_HYPER_FATAL_IRQ (PIC_IRQ_BASE + PIC_IRT_HYPER_FATAL_INDEX)
-#define PIC_PCIX_FATAL_IRQ (PIC_IRQ_BASE + PIC_IRT_PCIX_FATAL_INDEX)
-#define PIC_BRIDGE_AERR_IRQ (PIC_IRQ_BASE + PIC_IRT_BRIDGE_AERR_INDEX)
-#define PIC_BRIDGE_BERR_IRQ (PIC_IRQ_BASE + PIC_IRT_BRIDGE_BERR_INDEX)
-#define PIC_BRIDGE_TB_IRQ (PIC_IRQ_BASE + PIC_IRT_BRIDGE_TB_INDEX)
-#define PIC_BRIDGE_AERR_NMI_IRQ (PIC_IRQ_BASE + PIC_IRT_BRIDGE_AERR_NMI_INDEX)
-
-#define PIC_BRIDGE_ERR_IRQ (PIC_IRQ_BASE + PIC_IRT_BRIDGE_ERR_INDEX)
-#define PIC_PCIE_LINK0_IRQ (PIC_IRQ_BASE + PIC_IRT_PCIE_LINK0_INDEX)
-#define PIC_PCIE_LINK1_IRQ (PIC_IRQ_BASE + PIC_IRT_PCIE_LINK1_INDEX)
-#define PIC_PCIE_LINK2_IRQ (PIC_IRQ_BASE + PIC_IRT_PCIE_LINK2_INDEX)
-#define PIC_PCIE_LINK3_IRQ (PIC_IRQ_BASE + PIC_IRT_PCIE_LINK3_INDEX)
-#define PIC_PCIE_INT_IRQ (PIC_IRQ_BASE + PIC_IRT_PCIE_INT__INDEX)
-#define PIC_PCIE_FATAL_IRQ (PIC_IRQ_BASE + PIC_IRT_PCIE_FATAL_INDEX)
-#define PIC_GPIO_B_IRQ (PIC_IRQ_BASE + PIC_IRT_GPIO_B_INDEX)
-#define PIC_USB_IRQ (PIC_IRQ_BASE + PIC_IRT_USB_INDEX)
-
-#define PIC_IRT_LAST_IRQ PIC_USB_IRQ
-
-#define PIC_IRQ_IS_EDGE_TRIGGERED(irq) ( ((irq)>=PIC_TIMER_0_IRQ) && ((irq)<=PIC_TIMER_7_IRQ) )
-
-#define PIC_IRQ_IS_IRT(irq) ( ((irq)>=PIC_IRT_FIRST_IRQ) && ((irq)<=PIC_IRT_LAST_IRQ) )
-
+#define PIC_IRT_BRIDGE_ERR_INDEX 25
+#define PIC_IRT_PCIE_LINK0_INDEX 26
+#define PIC_IRT_PCIE_LINK1_INDEX 27
+#define PIC_IRT_PCIE_LINK2_INDEX 23
+#define PIC_IRT_PCIE_LINK3_INDEX 24
+#define PIC_IRT_PCIE_INT_INDEX 28
+#define PIC_IRT_PCIE_FATAL_INDEX 29
+#define PIC_IRT_GPIO_B_INDEX 30
+#define PIC_IRT_USB_INDEX 31
+
+#define PIC_NUM_IRTS 32
+
+#define PIC_CLOCK_TIMER 7
+
+#define PIC_CTRL 0x00
+#define PIC_IPI 0x04
+#define PIC_INT_ACK 0x06
+
+#define WD_MAX_VAL_0 0x08
+#define WD_MAX_VAL_1 0x09
+#define WD_MASK_0 0x0a
+#define WD_MASK_1 0x0b
+#define WD_HEARBEAT_0 0x0c
+#define WD_HEARBEAT_1 0x0d
+
+#define PIC_IRT_0_BASE 0x40
+#define PIC_IRT_1_BASE 0x80
+#define PIC_TIMER_MAXVAL_0_BASE 0x100
+#define PIC_TIMER_MAXVAL_1_BASE 0x110
+#define PIC_TIMER_COUNT_0_BASE 0x120
+#define PIC_TIMER_COUNT_1_BASE 0x130
+
+
+#define PIC_IRT_0(picintr) (PIC_IRT_0_BASE + (picintr))
+#define PIC_IRT_1(picintr) (PIC_IRT_1_BASE + (picintr))
+
+#define PIC_TIMER_MAXVAL_0(i) (PIC_TIMER_MAXVAL_0_BASE + (i))
+#define PIC_TIMER_MAXVAL_1(i) (PIC_TIMER_MAXVAL_1_BASE + (i))
+#define PIC_TIMER_COUNT_0(i) (PIC_TIMER_COUNT_0_BASE + (i))
+#define PIC_TIMER_COUNT_1(i) (PIC_TIMER_COUNT_0_BASE + (i))
+
+#define PIC_IRQ_BASE 8
+#define PIC_IRT_FIRST_IRQ PIC_IRQ_BASE
+
+#define PIC_WD_IRQ (PIC_IRQ_BASE + PIC_IRT_WD_INDEX)
+#define PIC_TIMER_IRQ(i) (PIC_IRQ_BASE + PIC_IRT_TIMER_INDEX(i))
+#define PIC_CLOCK_IRQ PIC_TIMER_IRQ(PIC_CLOCK_TIMER)
+
+#define PIC_UART_0_IRQ (PIC_IRQ_BASE + PIC_IRT_UART_0_INDEX)
+#define PIC_UART_1_IRQ (PIC_IRQ_BASE + PIC_IRT_UART_1_INDEX)
+#define PIC_I2C_0_IRQ (PIC_IRQ_BASE + PIC_IRT_I2C_0_INDEX)
+#define PIC_I2C_1_IRQ (PIC_IRQ_BASE + PIC_IRT_I2C_1_INDEX)
+#define PIC_PCMCIA_IRQ (PIC_IRQ_BASE + PIC_IRT_PCMCIA_INDEX)
+#define PIC_GPIO_IRQ (PIC_IRQ_BASE + PIC_IRT_GPIO_INDEX)
+#define PIC_HYPER_IRQ (PIC_IRQ_BASE + PIC_IRT_HYPER_INDEX)
+#define PIC_PCIX_IRQ (PIC_IRQ_BASE + PIC_IRT_PCIX_INDEX)
+#define PIC_GMAC_0_IRQ (PIC_IRQ_BASE + PIC_IRT_GMAC0_INDEX)
+#define PIC_GMAC_1_IRQ (PIC_IRQ_BASE + PIC_IRT_GMAC1_INDEX)
+#define PIC_GMAC_2_IRQ (PIC_IRQ_BASE + PIC_IRT_GMAC2_INDEX)
+#define PIC_GMAC_3_IRQ (PIC_IRQ_BASE + PIC_IRT_GMAC3_INDEX)
+#define PIC_XGS_0_IRQ (PIC_IRQ_BASE + PIC_IRT_XGS0_INDEX)
+#define PIC_XGS_1_IRQ (PIC_IRQ_BASE + PIC_IRT_XGS1_INDEX)
+#define PIC_HYPER_FATAL_IRQ (PIC_IRQ_BASE + PIC_IRT_HYPER_FATAL_INDEX)
+#define PIC_PCIX_FATAL_IRQ (PIC_IRQ_BASE + PIC_IRT_PCIX_FATAL_INDEX)
+#define PIC_BRIDGE_AERR_IRQ (PIC_IRQ_BASE + PIC_IRT_BRIDGE_AERR_INDEX)
+#define PIC_BRIDGE_BERR_IRQ (PIC_IRQ_BASE + PIC_IRT_BRIDGE_BERR_INDEX)
+#define PIC_BRIDGE_TB_IRQ (PIC_IRQ_BASE + PIC_IRT_BRIDGE_TB_INDEX)
+#define PIC_BRIDGE_AERR_NMI_IRQ (PIC_IRQ_BASE + PIC_IRT_BRIDGE_AERR_NMI_INDEX)
+
+#define PIC_BRIDGE_ERR_IRQ (PIC_IRQ_BASE + PIC_IRT_BRIDGE_ERR_INDEX)
+#define PIC_PCIE_LINK0_IRQ (PIC_IRQ_BASE + PIC_IRT_PCIE_LINK0_INDEX)
+#define PIC_PCIE_LINK1_IRQ (PIC_IRQ_BASE + PIC_IRT_PCIE_LINK1_INDEX)
+#define PIC_PCIE_LINK2_IRQ (PIC_IRQ_BASE + PIC_IRT_PCIE_LINK2_INDEX)
+#define PIC_PCIE_LINK3_IRQ (PIC_IRQ_BASE + PIC_IRT_PCIE_LINK3_INDEX)
+#define PIC_PCIE_INT_IRQ (PIC_IRQ_BASE + PIC_IRT_PCIE_INT__INDEX)
+#define PIC_PCIE_FATAL_IRQ (PIC_IRQ_BASE + PIC_IRT_PCIE_FATAL_INDEX)
+#define PIC_GPIO_B_IRQ (PIC_IRQ_BASE + PIC_IRT_GPIO_B_INDEX)
+#define PIC_USB_IRQ (PIC_IRQ_BASE + PIC_IRT_USB_INDEX)
+
+#define PIC_IRT_LAST_IRQ PIC_USB_IRQ
+#define PIC_IRQ_IS_EDGE_TRIGGERED(irq) (((irq) >= PIC_TIMER_IRQ(0)) && ((irq) <= PIC_TIMER_IRQ(7)))
+#define PIC_IRQ_IS_IRT(irq) (((irq) >= PIC_IRT_FIRST_IRQ) && ((irq) <= PIC_IRT_LAST_IRQ))
extern struct mtx xlr_pic_lock;
-
-static __inline__ __uint32_t
-pic_read_control(int haslock)
+static __inline uint32_t
+pic_read_control(void)
{
xlr_reg_t *mmio = xlr_io_mmio(XLR_IO_PIC_OFFSET);
- __uint32_t reg;
+ uint32_t reg;
- if ((rmi_spin_mutex_safe) && (haslock == 0))
- mtx_lock_spin(&xlr_pic_lock);
+ mtx_lock_spin(&xlr_pic_lock);
xlr_read_reg(mmio, PIC_CTRL);
- if ((rmi_spin_mutex_safe) && (haslock == 0))
- mtx_unlock_spin(&xlr_pic_lock);
- return reg;
+ mtx_unlock_spin(&xlr_pic_lock);
+ return (reg);
}
-static __inline__ void
-pic_write_control(__uint32_t control, int haslock)
+static __inline void
+pic_write_control(uint32_t control)
{
xlr_reg_t *mmio = xlr_io_mmio(XLR_IO_PIC_OFFSET);
- if ((rmi_spin_mutex_safe) && (haslock == 0))
- mtx_lock_spin(&xlr_pic_lock);
+ mtx_lock_spin(&xlr_pic_lock);
xlr_write_reg(mmio, PIC_CTRL, control);
- if ((rmi_spin_mutex_safe) && (haslock == 0))
- mtx_unlock_spin(&xlr_pic_lock);
+ mtx_unlock_spin(&xlr_pic_lock);
}
-static __inline__ void
-pic_update_control(__uint32_t control, int haslock)
+
+static __inline void
+pic_update_control(__uint32_t control)
{
xlr_reg_t *mmio = xlr_io_mmio(XLR_IO_PIC_OFFSET);
- if ((rmi_spin_mutex_safe) && (haslock == 0))
- mtx_lock_spin(&xlr_pic_lock);
+ mtx_lock_spin(&xlr_pic_lock);
xlr_write_reg(mmio, PIC_CTRL, (control | xlr_read_reg(mmio, PIC_CTRL)));
- if ((rmi_spin_mutex_safe) && (haslock == 0))
- mtx_unlock_spin(&xlr_pic_lock);
+ mtx_unlock_spin(&xlr_pic_lock);
}
-static __inline__ void
-pic_ack(int irq, int haslock)
+static __inline void
+pic_ack(int irq)
{
xlr_reg_t *mmio = xlr_io_mmio(XLR_IO_PIC_OFFSET);
@@ -253,44 +188,51 @@ pic_ack(int irq, int haslock)
return;
if (PIC_IRQ_IS_EDGE_TRIGGERED(irq)) {
- if ((rmi_spin_mutex_safe) && (haslock == 0))
mtx_lock_spin(&xlr_pic_lock);
- xlr_write_reg(mmio, PIC_INT_ACK, (1 << (irq - PIC_IRQ_BASE)));
- if ((rmi_spin_mutex_safe) && (haslock == 0))
+ xlr_write_reg(mmio, PIC_INT_ACK, (1 << (irq - PIC_IRQ_BASE)));
mtx_unlock_spin(&xlr_pic_lock);
- return;
}
return;
}
-static inline void
-pic_delayed_ack(int irq, int haslock)
+static __inline void
+pic_delayed_ack(int irq)
{
xlr_reg_t *mmio = xlr_io_mmio(XLR_IO_PIC_OFFSET);
if (!PIC_IRQ_IS_IRT(irq))
return;
-
if (!PIC_IRQ_IS_EDGE_TRIGGERED(irq)) {
- if ((rmi_spin_mutex_safe)&& (haslock == 0))
- mtx_lock_spin(&xlr_pic_lock);
+ mtx_lock_spin(&xlr_pic_lock);
xlr_write_reg(mmio, PIC_INT_ACK, (1 << (irq - PIC_IRQ_BASE)));
- if ((rmi_spin_mutex_safe) && (haslock == 0))
- mtx_unlock_spin(&xlr_pic_lock);
- return;
+ mtx_unlock_spin(&xlr_pic_lock);
}
+ return;
}
-static inline
-void pic_send_ipi(int cpu, int ipi, int haslock)
+static __inline
+void pic_send_ipi(int cpu, int ipi)
{
- xlr_reg_t *mmio = xlr_io_mmio(XLR_IO_PIC_OFFSET);
- int tid, pid;
+ xlr_reg_t *mmio = xlr_io_mmio(XLR_IO_PIC_OFFSET);
+ int tid, pid;
+
+ tid = cpu & 0x3;
+ pid = (cpu >> 2) & 0x7;
+ xlr_write_reg(mmio, PIC_IPI, (pid << 20) | (tid << 16) | ipi);
+}
- tid = cpu & 0x3;
- pid = (cpu >> 2) & 0x7;
+static __inline
+void pic_setup_intr(int picintr, int irq, uint32_t cpumask)
+{
+ xlr_reg_t *mmio = xlr_io_mmio(XLR_IO_PIC_OFFSET);
+ int level;
- xlr_write_reg(mmio, PIC_IPI, (pid << 20) | (tid << 16) | ipi);
+ mtx_lock_spin(&xlr_pic_lock);
+ level = PIC_IRQ_IS_EDGE_TRIGGERED(irq);
+ xlr_write_reg(mmio, PIC_IRT_0(picintr), cpumask);
+ xlr_write_reg(mmio, PIC_IRT_1(picintr), ((1 << 31) | (level << 30) |
+ (1 << 6) | irq));
+ mtx_unlock_spin(&xlr_pic_lock);
}
-#endif /* _RMI_PIC_H_ */
+#endif /* _RMI_PIC_H_ */
Modified: head/sys/mips/rmi/xlr_machdep.c
==============================================================================
--- head/sys/mips/rmi/xlr_machdep.c Wed Aug 25 11:11:14 2010 (r211810)
+++ head/sys/mips/rmi/xlr_machdep.c Wed Aug 25 11:49:48 2010 (r211811)
@@ -89,7 +89,6 @@ struct mtx xlr_pic_lock;
* Parameters from boot loader
*/
struct boot1_info xlr_boot1_info;
-struct xlr_loader_info xlr_loader_info; /* FIXME : Unused */
int xlr_run_mode;
int xlr_argc;
int32_t *xlr_argv, *xlr_envp;
@@ -574,8 +573,7 @@ void
platform_ipi_send(int cpuid)
{
- pic_send_ipi(xlr_cpuid_to_hwtid[cpuid],
- platform_ipi_intrnum(), 0);
+ pic_send_ipi(xlr_cpuid_to_hwtid[cpuid], platform_ipi_intrnum());
}
Modified: head/sys/mips/rmi/xlr_pci.c
==============================================================================
--- head/sys/mips/rmi/xlr_pci.c Wed Aug 25 11:11:14 2010 (r211810)
+++ head/sys/mips/rmi/xlr_pci.c Wed Aug 25 11:49:48 2010 (r211811)
@@ -122,6 +122,7 @@ static struct rman irq_rman, port_rman,
static void
xlr_pci_init_resources(void)
{
+
irq_rman.rm_start = 0;
irq_rman.rm_end = 255;
irq_rman.rm_type = RMAN_ARRAY;
@@ -150,6 +151,7 @@ xlr_pci_init_resources(void)
static int
xlr_pcib_probe(device_t dev)
{
+
if (xlr_board_info.is_xls)
device_set_desc(dev, "XLS PCIe bus");
else
@@ -158,12 +160,13 @@ xlr_pcib_probe(device_t dev)
xlr_pci_init_resources();
xlr_pci_config_base = (void *)MIPS_PHYS_TO_KSEG1(DEFAULT_PCI_CONFIG_BASE);
- return 0;
+ return (0);
}
static int
xlr_pcib_read_ivar(device_t dev, device_t child, int which, uintptr_t *result)
{
+
switch (which) {
case PCIB_IVAR_DOMAIN:
*result = 0;
@@ -190,14 +193,16 @@ xlr_pcib_write_ivar(device_t dev, device
static int
xlr_pcib_maxslots(device_t dev)
{
+
return (PCI_SLOTMAX);
}
static __inline__ void
disable_and_clear_cache_error(void)
{
- uint64_t lsu_cfg0 = read_64bit_phnx_ctrl_reg(CPU_BLOCKID_LSU, LSU_CFG0_REGID);
+ uint64_t lsu_cfg0;
+ lsu_cfg0 = read_64bit_phnx_ctrl_reg(CPU_BLOCKID_LSU, LSU_CFG0_REGID);
lsu_cfg0 = lsu_cfg0 & ~0x2e;
write_64bit_phnx_ctrl_reg(CPU_BLOCKID_LSU, LSU_CFG0_REGID, lsu_cfg0);
/* Clear cache error log */
@@ -227,17 +232,17 @@ pci_cfg_read_32bit(uint32_t addr)
uint64_t cerr_cpu_log = 0;
disable_and_clear_cache_error();
-
temp = bswap32(*p);
/* Read cache err log */
- cerr_cpu_log = read_64bit_phnx_ctrl_reg(CPU_BLOCKID_LSU, LSU_CERRLOG_REGID);
+ cerr_cpu_log = read_64bit_phnx_ctrl_reg(CPU_BLOCKID_LSU,
+ LSU_CERRLOG_REGID);
if (cerr_cpu_log) {
/* Device don't exist. */
temp = ~0x0;
}
clear_and_enable_cache_error();
- return temp;
+ return (temp);
}
static u_int32_t
@@ -258,7 +263,7 @@ xlr_pcib_read_config(device_t dev, u_int
else if (width == 2)
return ((data >> ((reg & 3) << 3)) & 0xffff);
else
- return data;
+ return (data);
}
static void
@@ -294,14 +299,16 @@ xlr_pcib_write_config(device_t dev, u_in
static int
xlr_pcib_attach(device_t dev)
{
+
device_add_child(dev, "pci", 0);
bus_generic_attach(dev);
- return 0;
+ return (0);
}
static void
xlr_pcib_identify(driver_t * driver, device_t parent)
{
+
if (xlr_board_info.is_xls) {
xlr_reg_t *pcie_mmio_le = xlr_io_mmio(XLR_IO_PCIE_1_OFFSET);
xlr_reg_t reg_link0 = xlr_read_reg(pcie_mmio_le, (0x80 >> 2));
@@ -325,14 +332,13 @@ xlr_alloc_msi(device_t pcib, device_t de
int i;
device_t parent, tmp;
-
/* find the lane on which the slot is connected to */
tmp = dev;
while (1) {
parent = device_get_parent(tmp);
if (parent == NULL || parent == pcib) {
device_printf(dev, "Cannot find parent bus\n");
- return ENXIO;
+ return (ENXIO);
}
if (strcmp(device_get_nameunit(parent), "pci0") == 0)
break;
@@ -353,7 +359,7 @@ xlr_alloc_msi(device_t pcib, device_t de
pciirq = PIC_PCIE_LINK3_IRQ;
break;
default:
- return ENXIO;
+ return (ENXIO);
}
irqs[0] = pciirq;
@@ -364,45 +370,49 @@ xlr_alloc_msi(device_t pcib, device_t de
for (i = 1; i < count; i++)
irqs[i] = pciirq + 64 * i;
- return 0;
+ return (0);
}
static int
xlr_release_msi(device_t pcib, device_t dev, int count, int *irqs)
{
- device_printf(dev, "%s: msi release %d\n", device_get_nameunit(pcib), count);
- return 0;
+ device_printf(dev, "%s: msi release %d\n", device_get_nameunit(pcib),
+ count);
+ return (0);
}
static int
-xlr_map_msi(device_t pcib, device_t dev, int irq, uint64_t * addr, uint32_t * data)
+xlr_map_msi(device_t pcib, device_t dev, int irq, uint64_t * addr,
+ uint32_t * data)
{
+
switch (irq) {
- case PIC_PCIE_LINK0_IRQ:
- case PIC_PCIE_LINK1_IRQ:
- case PIC_PCIE_LINK2_IRQ:
- case PIC_PCIE_LINK3_IRQ:
+ case PIC_PCIE_LINK0_IRQ:
+ case PIC_PCIE_LINK1_IRQ:
+ case PIC_PCIE_LINK2_IRQ:
+ case PIC_PCIE_LINK3_IRQ:
*addr = MIPS_MSI_ADDR(0);
*data = MIPS_MSI_DATA(irq);
- return 0;
+ return (0);
default:
- device_printf(dev, "%s: map_msi for irq %d - ignored", device_get_nameunit(pcib),
- irq);
+ device_printf(dev, "%s: map_msi for irq %d - ignored",
+ device_get_nameunit(pcib), irq);
return (ENXIO);
}
-
}
static void
bridge_pcix_ack(void *arg)
{
+
xlr_read_reg(xlr_io_mmio(XLR_IO_PCIX_OFFSET), 0x140 >> 2);
}
static void
bridge_pcix_mask_ack(void *arg)
{
+
xlr_mask_hard_irq(arg);
bridge_pcix_ack(arg);
}
@@ -415,20 +425,28 @@ bridge_pcie_ack(void *arg)
xlr_reg_t *pcie_mmio_le = xlr_io_mmio(XLR_IO_PCIE_1_OFFSET);
switch (irq) {
- case PIC_PCIE_LINK0_IRQ : reg = PCIE_LINK0_MSI_STATUS; break;
- case PIC_PCIE_LINK1_IRQ : reg = PCIE_LINK1_MSI_STATUS; break;
- case PIC_PCIE_LINK2_IRQ : reg = PCIE_LINK2_MSI_STATUS; break;
- case PIC_PCIE_LINK3_IRQ : reg = PCIE_LINK3_MSI_STATUS; break;
+ case PIC_PCIE_LINK0_IRQ:
+ reg = PCIE_LINK0_MSI_STATUS;
+ break;
+ case PIC_PCIE_LINK1_IRQ:
+ reg = PCIE_LINK1_MSI_STATUS;
+ break;
+ case PIC_PCIE_LINK2_IRQ:
+ reg = PCIE_LINK2_MSI_STATUS;
+ break;
+ case PIC_PCIE_LINK3_IRQ:
+ reg = PCIE_LINK3_MSI_STATUS;
+ break;
default:
return;
}
-
xlr_write_reg(pcie_mmio_le, reg>>2, 0xffffffff);
}
static void
bridge_pcie_mask_ack(void *arg)
{
+
xlr_mask_hard_irq(arg);
bridge_pcie_ack(arg);
}
@@ -440,8 +458,6 @@ mips_platform_pci_setup_intr(device_t de
driver_intr_t * intr, void *arg,
void **cookiep)
{
- int level;
- xlr_reg_t *mmio = xlr_io_mmio(XLR_IO_PIC_OFFSET);
int error = 0;
int xlrirq;
@@ -451,43 +467,29 @@ mips_platform_pci_setup_intr(device_t de
if (rman_get_start(irq) != rman_get_end(irq)) {
device_printf(dev, "Interrupt allocation %lu != %lu\n",
rman_get_start(irq), rman_get_end(irq));
- return EINVAL;
+ return (EINVAL);
}
xlrirq = rman_get_start(irq);
if (strcmp(device_get_name(dev), "pcib") != 0)
- return 0;
+ return (0);
if (xlr_board_info.is_xls == 0) {
- if (rmi_spin_mutex_safe)
- mtx_lock_spin(&xlr_pic_lock);
- level = PIC_IRQ_IS_EDGE_TRIGGERED(PIC_IRT_PCIX_INDEX);
- xlr_write_reg(mmio, PIC_IRT_0_PCIX, 0x01);
- xlr_write_reg(mmio, PIC_IRT_1_PCIX, ((1 << 31) | (level << 30) |
- (1 << 6) | (PIC_PCIX_IRQ)));
- if (rmi_spin_mutex_safe)
- mtx_unlock_spin(&xlr_pic_lock);
xlr_cpu_establish_hardintr(device_get_name(child), filt,
intr, arg, PIC_PCIX_IRQ, flags, cookiep,
bridge_pcix_mask_ack, xlr_unmask_hard_irq,
bridge_pcix_ack, NULL);
+ pic_setup_intr(PIC_IRT_PCIX_INDEX, PIC_PCIX_IRQ, 0x1);
} else {
- if (rmi_spin_mutex_safe)
- mtx_lock_spin(&xlr_pic_lock);
- xlr_write_reg(mmio, PIC_IRT_0_BASE + xlrirq - PIC_IRQ_BASE, 0x01);
- xlr_write_reg(mmio, PIC_IRT_1_BASE + xlrirq - PIC_IRQ_BASE,
- ((1 << 31) | (1 << 30) | (1 << 6) | xlrirq));
- if (rmi_spin_mutex_safe)
- mtx_unlock_spin(&xlr_pic_lock);
-
xlr_cpu_establish_hardintr(device_get_name(child), filt,
intr, arg, xlrirq, flags, cookiep,
bridge_pcie_mask_ack, xlr_unmask_hard_irq,
bridge_pcie_ack, NULL);
+ pic_setup_intr(xlrirq - PIC_IRQ_BASE, xlrirq, 0x1);
}
- return bus_generic_setup_intr(dev, child, irq, flags, filt, intr,
- arg, cookiep);
+ return (bus_generic_setup_intr(dev, child, irq, flags, filt, intr,
+ arg, cookiep));
}
static int
@@ -498,7 +500,7 @@ mips_platform_pci_teardown_intr(device_t
/* if needed reprogram the pic to clear pcix related entry */
device_printf(dev, "teardown intr\n");
}
- return bus_generic_teardown_intr(dev, child, irq, cookie);
+ return (bus_generic_teardown_intr(dev, child, irq, cookie));
}
static struct resource *
@@ -524,12 +526,12 @@ xlr_pci_alloc_resource(device_t bus, dev
break;
default:
- return 0;
+ return (0);
}
rv = rman_reserve_resource(rm, start, end, count, flags, child);
if (rv == 0)
- return 0;
+ return (0);
rman_set_rid(rv, *rid);
@@ -547,13 +549,14 @@ xlr_pci_alloc_resource(device_t bus, dev
return (NULL);
}
}
- return rv;
+ return (rv);
}
static int
xlr_pci_release_resource(device_t bus, device_t child, int type, int rid,
struct resource *r)
{
+
return (rman_release_resource(r));
}
@@ -561,6 +564,7 @@ static int
xlr_pci_activate_resource(device_t bus, device_t child, int type, int rid,
struct resource *r)
{
+
return (rman_activate_resource(r));
}
@@ -568,12 +572,14 @@ static int
xlr_pci_deactivate_resource(device_t bus, device_t child, int type, int rid,
struct resource *r)
{
+
return (rman_deactivate_resource(r));
}
static int
mips_pci_route_interrupt(device_t bus, device_t dev, int pin)
{
+
/*
* Validate requested pin number.
*/
@@ -583,13 +589,13 @@ mips_pci_route_interrupt(device_t bus, d
if (xlr_board_info.is_xls) {
switch (pin) {
case 1:
- return PIC_PCIE_LINK0_IRQ;
+ return (PIC_PCIE_LINK0_IRQ);
case 2:
- return PIC_PCIE_LINK1_IRQ;
+ return (PIC_PCIE_LINK1_IRQ);
case 3:
- return PIC_PCIE_LINK2_IRQ;
+ return (PIC_PCIE_LINK2_IRQ);
case 4:
- return PIC_PCIE_LINK3_IRQ;
+ return (PIC_PCIE_LINK3_IRQ);
}
} else {
if (pin == 1) {
More information about the svn-src-head
mailing list