Source-Changes-HG archive

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

[src/trunk]: src/sys/arch/sparc64 config and attachment goop for tadpmu



details:   https://anonhg.NetBSD.org/src/rev/972fbfc8fe21
branches:  trunk
changeset: 836363:972fbfc8fe21
user:      macallan <macallan%NetBSD.org@localhost>
date:      Sat Oct 13 20:11:48 2018 +0000

description:
config and attachment goop for tadpmu

diffstat:

 sys/arch/sparc64/conf/files.sparc64 |   6 +++-
 sys/arch/sparc64/dev/pckbc_ebus.c   |  48 +++++++++++++++++++++++++++++++++---
 sys/arch/sparc64/dev/tadpmu.c       |   6 +++-
 3 files changed, 51 insertions(+), 9 deletions(-)

diffs (132 lines):

diff -r d8e735670327 -r 972fbfc8fe21 sys/arch/sparc64/conf/files.sparc64
--- a/sys/arch/sparc64/conf/files.sparc64       Sat Oct 13 19:53:43 2018 +0000
+++ b/sys/arch/sparc64/conf/files.sparc64       Sat Oct 13 20:11:48 2018 +0000
@@ -1,4 +1,4 @@
-#      $NetBSD: files.sparc64,v 1.154 2017/12/19 14:34:08 nakayama Exp $
+#      $NetBSD: files.sparc64,v 1.155 2018/10/13 20:11:48 macallan Exp $
 
 # @(#)files.sparc64    8.1 (Berkeley) 7/19/93
 # sparc64-specific configuration info
@@ -164,8 +164,10 @@
 
 # ebus PS/2 keyboard attachment for Tadpole SPARCle, etc.
 include "dev/pckbport/files.pckbport"
-attach pckbc at ebus with pckbc_ebus
+attach pckbc at ebus with pckbc_ebus : sysmon_envsys
 file   arch/sparc64/dev/pckbc_ebus.c           pckbc_ebus
+defflag opt_tadpmu.h   HAVE_TADPMU
+file   arch/sparc64/dev/tadpmu.c               pckbc_ebus
 
 device zstty {}: tty
 attach zstty at zs
diff -r d8e735670327 -r 972fbfc8fe21 sys/arch/sparc64/dev/pckbc_ebus.c
--- a/sys/arch/sparc64/dev/pckbc_ebus.c Sat Oct 13 19:53:43 2018 +0000
+++ b/sys/arch/sparc64/dev/pckbc_ebus.c Sat Oct 13 20:11:48 2018 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: pckbc_ebus.c,v 1.2 2015/08/14 10:59:27 nakayama Exp $ */
+/*     $NetBSD: pckbc_ebus.c,v 1.3 2018/10/13 20:11:48 macallan Exp $ */
 
 /*
  * Copyright (c) 2002 Valeriy E. Ushakov
@@ -28,7 +28,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: pckbc_ebus.c,v 1.2 2015/08/14 10:59:27 nakayama Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pckbc_ebus.c,v 1.3 2018/10/13 20:11:48 macallan Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -47,9 +47,13 @@
 #include <dev/ebus/ebusreg.h>
 #include <dev/ebus/ebusvar.h>
 
+#include "opt_tadpmu.h"
+#include <sparc64/dev/tadpmureg.h>
+#include <sparc64/dev/tadpmuvar.h>
+
 struct pckbc_ebus_softc {
        struct pckbc_softc psc_pckbc;   /* real "pckbc" softc */
-       uint32_t psc_intr[PCKBC_NSLOTS];
+       uint32_t psc_intr[5];   /* Tadpole Viper's pckbc has 3 slots */
 };
 
 static int     pckbc_ebus_match(device_t, cfdata_t, void *);
@@ -118,7 +122,7 @@
                        return;
                }
        } else {
-               for (i = 0; i < PCKBC_NSLOTS; i++)
+               for (i = 0; i < ea->ea_nintr; i++)
                        sc->psc_intr[i] = ea->ea_intr[i];
        }
 
@@ -182,9 +186,43 @@
        /* finish off the attach */
        aprint_normal("\n");
        pckbc_attach(psc);
+#ifdef HAVE_TADPMU
+       /* now look for a tadpmu child device */
+       char name[64], *p;
+       int pmu = 0;
+       for (node = prom_firstchild(ea->ea_node);
+            node != 0; node = prom_nextsibling(node)) {
+               if((p = prom_getpropstringA(node, "name", name, 64)) != NULL) {
+                       if (strcmp(name, "tadpmu") == 0) {
+                               pmu = node;
+                               break;
+                       }
+               }
+       }
+       if (pmu != 0) {
+               void *irq;
+
+               bus_space_handle_t hcmd, hdata;
+               if (bus_space_map(iot, ioaddr + TADPMU_CMD,  1, 0, &hcmd) != 0) {
+                       bus_space_unmap(iot, hcmd, 1);
+                       aprint_error(": unable to map PMU cmd register\n");
+                       return;
+               }
+               if (bus_space_map(iot, ioaddr + TADPMU_DATA,  1, 0, &hdata) != 0) {
+                       bus_space_unmap(iot, hdata, 1);
+                       aprint_error(": unable to map PMU data register\n");
+                       return;
+               }
+               tadpmu_init(iot, hcmd, hdata);
+               irq = bus_intr_establish(iot, sc->psc_intr[2], IPL_TTY,
+                                        tadpmu_intr, sc);
+               if (irq == NULL) {
+                       aprint_error("failed to establish tadpmu interrupt\n");
+               }
+       }
+#endif
 }
 
-
 static void
 pckbc_ebus_intr_establish(struct pckbc_softc *sc, pckbport_slot_t slot)
 {
diff -r d8e735670327 -r 972fbfc8fe21 sys/arch/sparc64/dev/tadpmu.c
--- a/sys/arch/sparc64/dev/tadpmu.c     Sat Oct 13 19:53:43 2018 +0000
+++ b/sys/arch/sparc64/dev/tadpmu.c     Sat Oct 13 20:11:48 2018 +0000
@@ -1,4 +1,4 @@
-/*/* $NetBSD: tadpmu.c,v 1.2 2018/10/13 19:53:43 macallan Exp $ */
+/*/* $NetBSD: tadpmu.c,v 1.3 2018/10/13 20:11:48 macallan Exp $ */
 
 /*-
  * Copyright (c) 2018 Michael Lorenz <macallan%netbsd.org@localhost>
@@ -28,6 +28,8 @@
 
 /* a driver for the PMU found in Tadpole Wiper and possibly SPARCle laptops */
 
+#include "opt_tadpmu.h"
+#ifdef HAVE_TADPMU
 #include <sys/param.h>
 #include <sys/systm.h>
 #include <sys/kernel.h>
@@ -315,4 +317,4 @@
 
        return 0;
 }
-
+#endif /* HAVE_TADPMU */



Home | Main Index | Thread Index | Old Index