Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/dev/pci Add TI PCI1510.



details:   https://anonhg.NetBSD.org/src/rev/fe63d6546116
branches:  trunk
changeset: 760123:fe63d6546116
user:      phx <phx%NetBSD.org@localhost>
date:      Mon Dec 27 19:02:32 2010 +0000

description:
Add TI PCI1510.
Enable TI12XX PCI interrupt in MFUNC when MFUNC pin0 and pin1 are zero.
Ignore the other pins, which may be non-zero (e.g. IRQSER in pin3).

diffstat:

 sys/dev/pci/pccbb.c |  18 +++++++++++-------
 1 files changed, 11 insertions(+), 7 deletions(-)

diffs (49 lines):

diff -r 0c30e8873459 -r fe63d6546116 sys/dev/pci/pccbb.c
--- a/sys/dev/pci/pccbb.c       Mon Dec 27 18:49:42 2010 +0000
+++ b/sys/dev/pci/pccbb.c       Mon Dec 27 19:02:32 2010 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: pccbb.c,v 1.199 2010/04/20 23:39:10 dyoung Exp $       */
+/*     $NetBSD: pccbb.c,v 1.200 2010/12/27 19:02:32 phx Exp $  */
 
 /*
  * Copyright (c) 1998, 1999 and 2000
@@ -26,7 +26,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: pccbb.c,v 1.199 2010/04/20 23:39:10 dyoung Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pccbb.c,v 1.200 2010/12/27 19:02:32 phx Exp $");
 
 /*
 #define CBB_DEBUG
@@ -278,6 +278,8 @@
            PCCBB_PCMCIA_IO_RELOC | PCCBB_PCMCIA_MEM_32},
        { MAKEID(PCI_VENDOR_TI, PCI_PRODUCT_TI_PCI1451), CB_TI12XX,
            PCCBB_PCMCIA_IO_RELOC | PCCBB_PCMCIA_MEM_32},
+       { MAKEID(PCI_VENDOR_TI, PCI_PRODUCT_TI_PCI1510), CB_TI12XX,
+           PCCBB_PCMCIA_IO_RELOC | PCCBB_PCMCIA_MEM_32},
        { MAKEID(PCI_VENDOR_TI, PCI_PRODUCT_TI_PCI1520), CB_TI12XX,
            PCCBB_PCMCIA_IO_RELOC | PCCBB_PCMCIA_MEM_32},
        { MAKEID(PCI_VENDOR_TI, PCI_PRODUCT_TI_PCI4410YENTA), CB_TI12XX,
@@ -836,14 +838,16 @@
                 * The TI125X parts have a different register.
                 */
                mfunc = pci_conf_read(pc, tag, PCI12XX_MFUNC);
-               if (mfunc == 0) {
-                       mfunc &= ~PCI12XX_MFUNC_PIN0;
+               if ((mfunc & (PCI12XX_MFUNC_PIN0 | PCI12XX_MFUNC_PIN1)) == 0) {
+                       /* Enable PCI interrupt /INTA */
                        mfunc |= PCI12XX_MFUNC_PIN0_INTA;
+
+                       /* XXX this is TI1520 only */
                        if ((pci_conf_read(pc, tag, PCI_SYSCTRL) &
-                            PCI12XX_SYSCTRL_INTRTIE) == 0) {
-                               mfunc &= ~PCI12XX_MFUNC_PIN1;
+                            PCI12XX_SYSCTRL_INTRTIE) == 0)
+                               /* Enable PCI interrupt /INTB */
                                mfunc |= PCI12XX_MFUNC_PIN1_INTB;
-                       }
+
                        pci_conf_write(pc, tag, PCI12XX_MFUNC, mfunc);
                }
                /* fallthrough */



Home | Main Index | Thread Index | Old Index