experimental power management support for TX3912/TX3922 based model.
This commit is contained in:
parent
a93350bb37
commit
478ab76ca3
@ -2,7 +2,7 @@
|
||||
# Distribution kernel (TOSHIBA TX3912 based model) kernel config file
|
||||
|
||||
#
|
||||
# $NetBSD: TX3912,v 1.26 2000/09/27 10:22:23 shin Exp $
|
||||
# $NetBSD: TX3912,v 1.27 2000/10/04 13:53:54 uch Exp $
|
||||
#
|
||||
include "arch/hpcmips/conf/std.hpcmips"
|
||||
|
||||
@ -95,6 +95,10 @@ options NFS_BOOT_DHCP
|
||||
|
||||
config netbsd root on ? type ?
|
||||
|
||||
# temporally power management
|
||||
hpcapm0 at mainbus0 # power management
|
||||
apmdev0 at hpcapm0 # APM
|
||||
|
||||
txsim* at mainbus0
|
||||
#
|
||||
# System Internal Modules
|
||||
|
@ -1,7 +1,7 @@
|
||||
#
|
||||
# Distribution kernel (TOSHIBA TX3922 based model) kernel config file
|
||||
#
|
||||
# $NetBSD: TX3922,v 1.26 2000/09/27 10:22:23 shin Exp $
|
||||
# $NetBSD: TX3922,v 1.27 2000/10/04 13:53:54 uch Exp $
|
||||
#
|
||||
include "arch/hpcmips/conf/std.hpcmips"
|
||||
|
||||
@ -89,6 +89,10 @@ options PPP_BSDCOMP # BSD-Compress compression support for PPP
|
||||
options PPP_DEFLATE # Deflate compression support for PPP
|
||||
options PPP_FILTER # Active filter support for PPP (requires bpf)
|
||||
|
||||
# temporally power management
|
||||
hpcapm0 at mainbus0 # power management
|
||||
apmdev0 at hpcapm0 # APM
|
||||
|
||||
txsim* at mainbus0
|
||||
#
|
||||
# TX39 System Internal Modules
|
||||
@ -113,14 +117,14 @@ options USE_POLL # m38813,tc5165 requires this
|
||||
|
||||
# PHILIPS UCB1200 / TOSHIBA TC35413F modem/audio analog front-end
|
||||
ucb* at tx39sib? slot 0
|
||||
ucbtp* at ucb?
|
||||
#ucbtp* at ucb?
|
||||
ucbsnd* at ucb?
|
||||
|
||||
# PHILIPS 74ALVC*1624? / TOSHIBA TC5165BFTS buffer chip (keyboard)
|
||||
# chip select: CS1, IRQ: 3:12/4:12
|
||||
tc5165buf* at txcsbus1 iocs 1 iocsbase 0 iocssize 0x100 iocswidth 16
|
||||
hpckbd* at tc5165buf?
|
||||
wsmouse* at ucbtp? mux 0
|
||||
#wsmouse* at ucbtp? mux 0
|
||||
|
||||
# VICTOR InterLink keyboard driver
|
||||
# chip select: CARD1 IRQ ???
|
||||
@ -138,7 +142,6 @@ plumvideo* at plum?
|
||||
plumpcmcia* at plum?
|
||||
#plumiobus* at plum?
|
||||
#plumisab0 at plumiobus? platform ? slot 0
|
||||
options PLUM_BIG_OHCI_BUFFER # reserve V-RAM area for OHCI module
|
||||
ohci* at plum?
|
||||
|
||||
# USB bus support
|
||||
|
@ -1,4 +1,4 @@
|
||||
# $NetBSD: files.hpcmips,v 1.39 2000/10/03 03:13:04 sato Exp $
|
||||
# $NetBSD: files.hpcmips,v 1.40 2000/10/04 13:53:54 uch Exp $
|
||||
|
||||
# maxpartitions must be first item in files.${ARCH}.
|
||||
maxpartitions 8
|
||||
@ -337,7 +337,7 @@ file arch/hpcmips/isa/plumisa_machdep.c plumisab
|
||||
|
||||
# OHCI USB controller
|
||||
attach ohci at plumif with plumohci
|
||||
file arch/hpcmips/dev/plumohci.c plumohci
|
||||
file arch/hpcmips/dev/plumohci.c plumohci needs-flag
|
||||
|
||||
#device txisab: isabus
|
||||
#attach txisab at txcsbus
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: hpcapm.c,v 1.3 2000/07/30 04:41:15 takemura Exp $ */
|
||||
/* $NetBSD: hpcapm.c,v 1.4 2000/10/04 13:53:55 uch Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2000 Takemura Shin
|
||||
@ -45,6 +45,11 @@
|
||||
#include <hpcmips/vr/vr_asm.h>
|
||||
#endif
|
||||
|
||||
#include "opt_tx39xx.h"
|
||||
#ifdef TX39XX
|
||||
#include <hpcmips/tx/tx39var.h> /* suspend CPU */
|
||||
#endif
|
||||
|
||||
#define HPCAPMDEBUG
|
||||
#ifdef HPCAPMDEBUG
|
||||
#ifndef HPCAPMDEBUG_CONF
|
||||
@ -250,6 +255,9 @@ hpcapm_set_powstate(scx, devid, powstat)
|
||||
splhigh();
|
||||
vrip_intr_resume();
|
||||
}
|
||||
#endif /* NVRIP > 0 */
|
||||
#ifdef TX39XX
|
||||
tx39power_suspend_cpu();
|
||||
#endif
|
||||
config_hook_call(CONFIG_HOOK_PMEVENT,
|
||||
CONFIG_HOOK_PMEVENT_HARDPOWER,
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: plumpcmcia.c,v 1.4 2000/09/27 17:32:34 uch Exp $ */
|
||||
/* $NetBSD: plumpcmcia.c,v 1.5 2000/10/04 13:53:55 uch Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1999, 2000 UCHIYAMA Yasushi. All rights reserved.
|
||||
@ -38,6 +38,7 @@
|
||||
#include <sys/kthread.h>
|
||||
|
||||
#include <machine/bus.h>
|
||||
#include <machine/config_hook.h>
|
||||
|
||||
#include <dev/pcmcia/pcmciareg.h>
|
||||
#include <dev/pcmcia/pcmciavar.h>
|
||||
@ -60,6 +61,8 @@ void plumpcmcia_attach(struct device *, struct device *, void *);
|
||||
int plumpcmcia_print(void *, const char *);
|
||||
int plumpcmcia_submatch(struct device *, struct cfdata *, void *);
|
||||
|
||||
int plumpcmcia_power(void *, int, long, void *);
|
||||
|
||||
struct plumpcmcia_softc;
|
||||
|
||||
struct plumpcmcia_handle {
|
||||
@ -119,11 +122,14 @@ struct plumpcmcia_event {
|
||||
struct plumpcmcia_softc {
|
||||
struct device sc_dev;
|
||||
plum_chipset_tag_t sc_pc;
|
||||
|
||||
|
||||
/* Register space */
|
||||
bus_space_tag_t sc_regt;
|
||||
bus_space_handle_t sc_regh;
|
||||
|
||||
/* power management hook */
|
||||
void *sc_powerhook;
|
||||
|
||||
/* CSC event */
|
||||
struct proc *sc_event_thread;
|
||||
SIMPLEQ_HEAD (, plumpcmcia_event) sc_event_head;
|
||||
@ -211,11 +217,24 @@ plumpcmcia_attach(struct device *parent, struct device *self, void *aux)
|
||||
|
||||
sc->sc_pc = pa->pa_pc;
|
||||
sc->sc_regt = pa->pa_regt;
|
||||
|
||||
/* map register area */
|
||||
if (bus_space_map(sc->sc_regt, PLUM_PCMCIA_REGBASE,
|
||||
PLUM_PCMCIA_REGSIZE, 0, &sc->sc_regh)) {
|
||||
printf(": register map failed\n");
|
||||
}
|
||||
|
||||
/* power control */
|
||||
plumpcmcia_power(sc, 0, 0, (void *)PWR_RESUME);
|
||||
/* Add a hard power hook to power saving */
|
||||
#if notyet
|
||||
sc->sc_powerhook = config_hook(CONFIG_HOOK_PMEVENT,
|
||||
CONFIG_HOOK_PMEVENT_HARDPOWER,
|
||||
CONFIG_HOOK_SHARE,
|
||||
plumpcmcia_power, sc);
|
||||
if (sc->sc_powerhook == 0)
|
||||
printf(": WARNING unable to establish hard power hook");
|
||||
#endif
|
||||
printf("\n");
|
||||
|
||||
/* Slot0/1 CSC event queue */
|
||||
@ -965,6 +984,34 @@ plumpcmcia_event_thread(void *arg)
|
||||
/* NOTREACHED */
|
||||
}
|
||||
|
||||
/* power XXX notyet */
|
||||
int
|
||||
plumpcmcia_power(void *ctx, int type, long id, void *msg)
|
||||
{
|
||||
struct plumpcmcia_softc *sc = ctx;
|
||||
bus_space_tag_t regt = sc->sc_regt;
|
||||
bus_space_handle_t regh = sc->sc_regh;
|
||||
int why = (int)msg;
|
||||
|
||||
switch (why) {
|
||||
case PWR_RESUME:
|
||||
DPRINTF(("%s: ON\n", sc->sc_dev.dv_xname));
|
||||
/* power on */
|
||||
plum_conf_write(regt, regh, PLUM_PCMCIA_CARDPWRCTRL,
|
||||
PLUM_PCMCIA_CARDPWRCTRL_ON);
|
||||
break;
|
||||
case PWR_SUSPEND:
|
||||
/* FALLTHROUGH */
|
||||
case PWR_STANDBY:
|
||||
plum_conf_write(regt, regh, PLUM_PCMCIA_CARDPWRCTRL,
|
||||
PLUM_PCMCIA_CARDPWRCTRL_OFF);
|
||||
DPRINTF(("%s: OFF\n", sc->sc_dev.dv_xname));
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void
|
||||
__ioareadump(plumreg_t reg)
|
||||
{
|
||||
|
@ -1,30 +1,41 @@
|
||||
/* $NetBSD: plumpcmciareg.h,v 1.2 2000/09/27 17:32:34 uch Exp $ */
|
||||
/* $NetBSD: plumpcmciareg.h,v 1.3 2000/10/04 13:53:55 uch Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1999, by UCHIYAMA Yasushi
|
||||
/*-
|
||||
* Copyright (c) 1999, 2000 The NetBSD Foundation, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This code is derived from software contributed to The NetBSD Foundation
|
||||
* by UCHIYAMA Yasushi.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. The name of the developer may NOT be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* 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.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the NetBSD
|
||||
* Foundation, Inc. and its contributors.
|
||||
* 4. Neither the name of The NetBSD Foundation nor the names of its
|
||||
* contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
||||
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
|
||||
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT 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.
|
||||
*/
|
||||
|
||||
/* (CS3) */
|
||||
#define PLUM_PCMCIA_REGBASE 0x5000
|
||||
#define PLUM_PCMCIA_REGSIZE 0x1000
|
||||
@ -226,3 +237,5 @@
|
||||
#define PLUM_PCMCIA_BUFOFF 0x104
|
||||
#define PLUM_PCMCIA_CARDDETECTMODE 0x108
|
||||
#define PLUM_PCMCIA_CARDPWRCTRL 0x10c
|
||||
#define PLUM_PCMCIA_CARDPWRCTRL_OFF 1
|
||||
#define PLUM_PCMCIA_CARDPWRCTRL_ON 0
|
||||
|
@ -1,30 +1,41 @@
|
||||
/* $NetBSD: plumpower.c,v 1.4 2000/03/25 15:08:26 uch Exp $ */
|
||||
/* $NetBSD: plumpower.c,v 1.5 2000/10/04 13:53:55 uch Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1999, 2000, by UCHIYAMA Yasushi
|
||||
/*-
|
||||
* Copyright (c) 1999, 2000 The NetBSD Foundation, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This code is derived from software contributed to The NetBSD Foundation
|
||||
* by UCHIYAMA Yasushi.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. The name of the developer may NOT be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* 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.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the NetBSD
|
||||
* Foundation, Inc. and its contributors.
|
||||
* 4. Neither the name of The NetBSD Foundation nor the names of its
|
||||
* contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
||||
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
|
||||
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT 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.
|
||||
*/
|
||||
|
||||
#undef PLUMPOWERDEBUG
|
||||
#include "opt_tx39_debug.h"
|
||||
|
||||
@ -50,8 +61,8 @@ int plumpower_debug = 1;
|
||||
#define DPRINTFN(n, arg)
|
||||
#endif
|
||||
|
||||
int plumpower_match __P((struct device*, struct cfdata*, void*));
|
||||
void plumpower_attach __P((struct device*, struct device*, void*));
|
||||
int plumpower_match(struct device *, struct cfdata *, void *);
|
||||
void plumpower_attach(struct device *, struct device *, void *);
|
||||
|
||||
struct plumpower_softc {
|
||||
struct device sc_dev;
|
||||
@ -64,22 +75,18 @@ struct cfattach plumpower_ca = {
|
||||
sizeof(struct plumpower_softc), plumpower_match, plumpower_attach
|
||||
};
|
||||
|
||||
void plumpower_dump __P((struct plumpower_softc*));
|
||||
#ifdef PLUMPOWERDEBUG
|
||||
static void plumpower_dump(struct plumpower_softc *);
|
||||
#endif
|
||||
|
||||
int
|
||||
plumpower_match(parent, cf, aux)
|
||||
struct device *parent;
|
||||
struct cfdata *cf;
|
||||
void *aux;
|
||||
plumpower_match(struct device *parent, struct cfdata *cf, void *aux)
|
||||
{
|
||||
return 2; /* 1st attach group */
|
||||
}
|
||||
|
||||
void
|
||||
plumpower_attach(parent, self, aux)
|
||||
struct device *parent;
|
||||
struct device *self;
|
||||
void *aux;
|
||||
plumpower_attach(struct device *parent, struct device *self, void *aux)
|
||||
{
|
||||
struct plum_attach_args *pa = aux;
|
||||
struct plumpower_softc *sc = (void*)self;
|
||||
@ -102,7 +109,6 @@ plumpower_attach(parent, self, aux)
|
||||
PLUM_POWER_PWRCONT_REG, 0);
|
||||
plum_conf_write(sc->sc_regt, sc->sc_regh,
|
||||
PLUM_POWER_CLKCONT_REG, 0);
|
||||
delay(300 * 1000);
|
||||
|
||||
/* enable MCS interface from TX3922 */
|
||||
plum_conf_write(sc->sc_regt, sc->sc_regh, PLUM_POWER_INPENA_REG,
|
||||
@ -110,8 +116,7 @@ plumpower_attach(parent, self, aux)
|
||||
}
|
||||
|
||||
void
|
||||
plum_power_ioreset(pc)
|
||||
plum_chipset_tag_t pc;
|
||||
plum_power_ioreset(plum_chipset_tag_t pc)
|
||||
{
|
||||
struct plumpower_softc *sc = pc->pc_powert;
|
||||
bus_space_tag_t regt = sc->sc_regt;
|
||||
@ -120,15 +125,11 @@ plum_power_ioreset(pc)
|
||||
plum_conf_write(regt, regh, PLUM_POWER_RESETC_REG,
|
||||
PLUM_POWER_RESETC_IO5CL1 |
|
||||
PLUM_POWER_RESETC_IO5CL1);
|
||||
delay(100*1000);
|
||||
plum_conf_write(regt, regh, PLUM_POWER_RESETC_REG, 0);
|
||||
delay(100*1000);
|
||||
}
|
||||
|
||||
void*
|
||||
plum_power_establish(pc, src)
|
||||
plum_chipset_tag_t pc;
|
||||
int src;
|
||||
plum_power_establish(plum_chipset_tag_t pc, int src)
|
||||
{
|
||||
struct plumpower_softc *sc = pc->pc_powert;
|
||||
bus_space_tag_t regt = sc->sc_regt;
|
||||
@ -147,7 +148,6 @@ plum_power_establish(pc, src)
|
||||
pwrreg |= PLUM_POWER_PWRCONT_LCDDSP;
|
||||
plum_conf_write(regt, regh, PLUM_POWER_PWRCONT_REG, pwrreg);
|
||||
pwrreg |= PLUM_POWER_PWRCONT_LCDOE;
|
||||
plum_conf_write(regt, regh, PLUM_POWER_PWRCONT_REG, pwrreg);
|
||||
break;
|
||||
case PLUM_PWR_BKL:
|
||||
pwrreg |= PLUM_POWER_PWRCONT_BKLIGHT;
|
||||
@ -159,7 +159,6 @@ plum_power_establish(pc, src)
|
||||
/* supply power */
|
||||
pwrreg |= PLUM_POWER_PWRCONT_IO5PWR;
|
||||
plum_conf_write(regt, regh, PLUM_POWER_PWRCONT_REG, pwrreg);
|
||||
delay(300*1000);
|
||||
|
||||
/* output enable & supply clock */
|
||||
pwrreg |= PLUM_POWER_PWRCONT_IO5OE;
|
||||
@ -179,16 +178,11 @@ plum_power_establish(pc, src)
|
||||
pwrreg |= PLUM_POWER_PWRCONT_USBEN;
|
||||
/* supply clock to the USB host controller */
|
||||
clkreg |= PLUM_POWER_CLKCONT_USBCLK1;
|
||||
#if 1
|
||||
/*
|
||||
* clock supply is adaptively controlled by hardware
|
||||
* (recommended)
|
||||
*/
|
||||
clkreg &= ~PLUM_POWER_CLKCONT_USBCLK2;
|
||||
#else
|
||||
/* clock is always supplied while USBCLK=1 */
|
||||
clkreg |= PLUM_POWER_CLKCONT_USBCLK2;
|
||||
#endif
|
||||
break;
|
||||
case PLUM_PWR_SM:
|
||||
clkreg |= PLUM_POWER_CLKCONT_SMCLK;
|
||||
@ -202,10 +196,7 @@ plum_power_establish(pc, src)
|
||||
}
|
||||
|
||||
plum_conf_write(regt, regh, PLUM_POWER_PWRCONT_REG, pwrreg);
|
||||
delay(300*1000);
|
||||
|
||||
plum_conf_write(regt, regh, PLUM_POWER_CLKCONT_REG, clkreg);
|
||||
delay(300*1000);
|
||||
#ifdef PLUMPOWERDEBUG
|
||||
plumpower_dump(sc);
|
||||
#endif
|
||||
@ -213,9 +204,7 @@ plum_power_establish(pc, src)
|
||||
}
|
||||
|
||||
void
|
||||
plum_power_disestablish(pc, ph)
|
||||
plum_chipset_tag_t pc;
|
||||
int ph;
|
||||
plum_power_disestablish(plum_chipset_tag_t pc, int ph)
|
||||
{
|
||||
struct plumpower_softc *sc = pc->pc_powert;
|
||||
bus_space_tag_t regt = sc->sc_regt;
|
||||
@ -230,9 +219,11 @@ plum_power_disestablish(pc, ph)
|
||||
default:
|
||||
panic("plum_power_disestablish: unknown power source");
|
||||
case PLUM_PWR_LCD:
|
||||
pwrreg &= ~(PLUM_POWER_PWRCONT_LCDOE |
|
||||
PLUM_POWER_PWRCONT_LCDPWR |
|
||||
PLUM_POWER_PWRCONT_LCDDSP);
|
||||
pwrreg &= ~PLUM_POWER_PWRCONT_LCDOE;
|
||||
plum_conf_write(regt, regh, PLUM_POWER_PWRCONT_REG, pwrreg);
|
||||
pwrreg &= ~PLUM_POWER_PWRCONT_LCDDSP;
|
||||
plum_conf_write(regt, regh, PLUM_POWER_PWRCONT_REG, pwrreg);
|
||||
pwrreg &= ~PLUM_POWER_PWRCONT_LCDPWR;
|
||||
break;
|
||||
case PLUM_PWR_BKL:
|
||||
pwrreg &= ~PLUM_POWER_PWRCONT_BKLIGHT;
|
||||
@ -274,12 +265,11 @@ plum_power_disestablish(pc, ph)
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef PLUMPOWERDEBUG
|
||||
#define ISPOWERSUPPLY(r, m) __is_set_print(r, PLUM_POWER_PWRCONT_##m, #m)
|
||||
#define ISCLOCKSUPPLY(r, m) __is_set_print(r, PLUM_POWER_CLKCONT_##m, #m)
|
||||
|
||||
void
|
||||
plumpower_dump(sc)
|
||||
struct plumpower_softc *sc;
|
||||
static void
|
||||
plumpower_dump(struct plumpower_softc *sc)
|
||||
{
|
||||
bus_space_tag_t regt = sc->sc_regt;
|
||||
bus_space_handle_t regh = sc->sc_regh;
|
||||
@ -314,5 +304,5 @@ plumpower_dump(sc)
|
||||
reg & PLUM_POWER_RESETC_IO5CL1 ? "CLRH" : "");
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
#endif /* PLUMPOWERDEBUG */
|
||||
|
||||
|
@ -1,29 +1,39 @@
|
||||
/* $NetBSD: plumpowerreg.h,v 1.2 1999/12/07 17:21:45 uch Exp $ */
|
||||
/* $NetBSD: plumpowerreg.h,v 1.3 2000/10/04 13:53:55 uch Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1999, by UCHIYAMA Yasushi
|
||||
/*-
|
||||
* Copyright (c) 1999, 2000 The NetBSD Foundation, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This code is derived from software contributed to The NetBSD Foundation
|
||||
* by UCHIYAMA Yasushi.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. The name of the developer may NOT be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* 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.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the NetBSD
|
||||
* Foundation, Inc. and its contributors.
|
||||
* 4. Neither the name of The NetBSD Foundation nor the names of its
|
||||
* contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
||||
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
|
||||
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT 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.
|
||||
*/
|
||||
|
||||
/*
|
||||
@ -38,11 +48,9 @@
|
||||
#define PLUM_POWER_PWRCONT_USBEN 0x00000400
|
||||
#define PLUM_POWER_PWRCONT_IO5OE 0x00000200
|
||||
#define PLUM_POWER_PWRCONT_LCDOE 0x00000100
|
||||
/* Enable signal of oscillator for the VRAM control */
|
||||
/* EXTPW[0:2] Platform dependent control signal */
|
||||
#define PLUM_POWER_PWRCONT_EXTPW2 0x00000040
|
||||
/* Enable signal of the oscillator for LCD module */
|
||||
#define PLUM_POWER_PWRCONT_EXTPW1 0x00000020
|
||||
/* FET Switch that gates power line for RAMDAC */
|
||||
#define PLUM_POWER_PWRCONT_EXTPW0 0x00000010
|
||||
#define PLUM_POWER_PWRCONT_IO5PWR 0x00000008
|
||||
#define PLUM_POWER_PWRCONT_BKLIGHT 0x00000004
|
||||
|
@ -1,29 +1,39 @@
|
||||
/* $NetBSD: plumpowervar.h,v 1.1 1999/11/21 06:50:26 uch Exp $ */
|
||||
/* $NetBSD: plumpowervar.h,v 1.2 2000/10/04 13:53:55 uch Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1999, by UCHIYAMA Yasushi
|
||||
/*-
|
||||
* Copyright (c) 1999, 2000 The NetBSD Foundation, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This code is derived from software contributed to The NetBSD Foundation
|
||||
* by UCHIYAMA Yasushi.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. The name of the developer may NOT be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* 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.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the NetBSD
|
||||
* Foundation, Inc. and its contributors.
|
||||
* 4. Neither the name of The NetBSD Foundation nor the names of its
|
||||
* contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
||||
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
|
||||
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT 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.
|
||||
*/
|
||||
|
||||
/* Logical power source # */
|
||||
@ -38,7 +48,7 @@
|
||||
#define PLUM_PWR_PCC1 8
|
||||
#define PLUM_PWR_PCC2 9
|
||||
|
||||
void* plum_power_establish __P((plum_chipset_tag_t, int));
|
||||
void plum_power_disestablish __P((plum_chipset_tag_t, int));
|
||||
void plum_power_ioreset __P((plum_chipset_tag_t));
|
||||
void *plum_power_establish(plum_chipset_tag_t, int);
|
||||
void plum_power_disestablish(plum_chipset_tag_t, int);
|
||||
void plum_power_ioreset(plum_chipset_tag_t);
|
||||
|
||||
|
@ -1,7 +1,11 @@
|
||||
/* $NetBSD: plumvideo.c,v 1.13 2000/06/29 08:17:59 mrg Exp $ */
|
||||
/* $NetBSD: plumvideo.c,v 1.14 2000/10/04 13:53:55 uch Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1999, 2000 UCHIYAMA Yasushi. All rights reserved.
|
||||
* Copyright (c) 1999, 2000 The NetBSD Foundation, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This code is derived from software contributed to The NetBSD Foundation
|
||||
* by UCHIYAMA Yasushi.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
@ -11,23 +15,30 @@
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the NetBSD
|
||||
* Foundation, Inc. and its contributors.
|
||||
* 4. Neither the name of The NetBSD Foundation nor the names of its
|
||||
* contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 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.
|
||||
* THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
||||
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
|
||||
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT 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.
|
||||
*/
|
||||
#define PLUMVIDEODEBUG
|
||||
|
||||
#define PLUMVIDEODEBUG
|
||||
#include "opt_tx39_debug.h"
|
||||
#include "plumohci.h" /* Plum2 OHCI shared memory allocated on V-RAM */
|
||||
|
||||
#include <sys/param.h>
|
||||
#include <sys/systm.h>
|
||||
@ -41,6 +52,7 @@
|
||||
|
||||
#include <machine/bus.h>
|
||||
#include <machine/intr.h>
|
||||
#include <machine/config_hook.h>
|
||||
|
||||
#include <hpcmips/tx/tx39var.h>
|
||||
#include <hpcmips/dev/plumvar.h>
|
||||
@ -72,6 +84,8 @@ struct plumvideo_softc {
|
||||
tx_chipset_tag_t sc_tc;
|
||||
plum_chipset_tag_t sc_pc;
|
||||
|
||||
void *sc_powerhook; /* power management hook */
|
||||
|
||||
/* control register */
|
||||
bus_space_tag_t sc_regt;
|
||||
bus_space_handle_t sc_regh;
|
||||
@ -90,11 +104,11 @@ struct plumvideo_softc {
|
||||
struct hpcfb_dspconf sc_dspconf;
|
||||
};
|
||||
|
||||
int plumvideo_match __P((struct device*, struct cfdata*, void*));
|
||||
void plumvideo_attach __P((struct device*, struct device*, void*));
|
||||
int plumvideo_match(struct device*, struct cfdata*, void*);
|
||||
void plumvideo_attach(struct device*, struct device*, void*);
|
||||
|
||||
int plumvideo_ioctl __P((void *, u_long, caddr_t, int, struct proc *));
|
||||
paddr_t plumvideo_mmap __P((void *, off_t, int));
|
||||
int plumvideo_ioctl(void *, u_long, caddr_t, int, struct proc *);
|
||||
paddr_t plumvideo_mmap(void *, off_t, int);
|
||||
|
||||
struct cfattach plumvideo_ca = {
|
||||
sizeof(struct plumvideo_softc), plumvideo_match, plumvideo_attach
|
||||
@ -104,28 +118,27 @@ struct hpcfb_accessops plumvideo_ha = {
|
||||
plumvideo_ioctl, plumvideo_mmap
|
||||
};
|
||||
|
||||
int plumvideo_init __P((struct plumvideo_softc*));
|
||||
void plumvideo_hpcfbinit __P((struct plumvideo_softc *));
|
||||
int plumvideo_power(void *, int, long, void *);
|
||||
|
||||
void plumvideo_clut_default __P((struct plumvideo_softc *));
|
||||
void plumvideo_clut_set __P((struct plumvideo_softc *, u_int32_t *, int,
|
||||
int));
|
||||
void plumvideo_clut_get __P((struct plumvideo_softc *, u_int32_t *, int,
|
||||
int));
|
||||
void __plumvideo_clut_access __P((struct plumvideo_softc *,
|
||||
void (*) __P((bus_space_tag_t,
|
||||
bus_space_handle_t))));
|
||||
static void _flush_cache __P((void)) __attribute__((__unused__)); /* !!! */
|
||||
int plumvideo_init(struct plumvideo_softc *, int *);
|
||||
void plumvideo_hpcfbinit(struct plumvideo_softc *, int);
|
||||
|
||||
void plumvideo_clut_default(struct plumvideo_softc *);
|
||||
void plumvideo_clut_set(struct plumvideo_softc *, u_int32_t *, int, int);
|
||||
void plumvideo_clut_get(struct plumvideo_softc *, u_int32_t *, int, int);
|
||||
void __plumvideo_clut_access(struct plumvideo_softc *,
|
||||
void (*)(bus_space_tag_t, bus_space_handle_t));
|
||||
static void _flush_cache(void) __attribute__((__unused__)); /* !!! */
|
||||
|
||||
#ifdef PLUMVIDEODEBUG
|
||||
void plumvideo_dump __P((struct plumvideo_softc*));
|
||||
void plumvideo_dump(struct plumvideo_softc*);
|
||||
#endif
|
||||
|
||||
#define ON 1
|
||||
#define OFF 0
|
||||
|
||||
int
|
||||
plumvideo_match(parent, cf, aux)
|
||||
struct device *parent;
|
||||
struct cfdata *cf;
|
||||
void *aux;
|
||||
plumvideo_match(struct device *parent, struct cfdata *cf, void *aux)
|
||||
{
|
||||
/*
|
||||
* VRAM area also uses as UHOSTC shared RAM.
|
||||
@ -134,71 +147,54 @@ plumvideo_match(parent, cf, aux)
|
||||
}
|
||||
|
||||
void
|
||||
plumvideo_attach(parent, self, aux)
|
||||
struct device *parent;
|
||||
struct device *self;
|
||||
void *aux;
|
||||
plumvideo_attach(struct device *parent, struct device *self, void *aux)
|
||||
{
|
||||
struct plum_attach_args *pa = aux;
|
||||
struct plumvideo_softc *sc = (void*)self;
|
||||
struct hpcfb_attach_args ha;
|
||||
int console;
|
||||
int console, reverse_flag;
|
||||
|
||||
sc->sc_pc = pa->pa_pc;
|
||||
sc->sc_regt = pa->pa_regt;
|
||||
sc->sc_fbiot = sc->sc_clutiot = sc->sc_bitbltt = pa->pa_iot;
|
||||
|
||||
printf(": ");
|
||||
/*
|
||||
* map register area
|
||||
*/
|
||||
|
||||
/* map register area */
|
||||
if (bus_space_map(sc->sc_regt, PLUM_VIDEO_REGBASE,
|
||||
PLUM_VIDEO_REGSIZE, 0, &sc->sc_regh)) {
|
||||
printf(": register map failed\n");
|
||||
printf("register map failed\n");
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* Power control
|
||||
*/
|
||||
/* power control */
|
||||
#ifndef PLUMVIDEODEBUG
|
||||
if (bootinfo->bi_cnuse & BI_CNUSE_SERIAL) {
|
||||
/* LCD power on and display off */
|
||||
plum_power_disestablish(sc->sc_pc, PLUM_PWR_LCD);
|
||||
/* power off V-RAM */
|
||||
plum_power_disestablish(sc->sc_pc, PLUM_PWR_EXTPW2);
|
||||
/* power off LCD */
|
||||
plum_power_disestablish(sc->sc_pc, PLUM_PWR_EXTPW1);
|
||||
/* power off RAMDAC */
|
||||
plum_power_disestablish(sc->sc_pc, PLUM_PWR_EXTPW0);
|
||||
/* back-light off */
|
||||
plum_power_disestablish(sc->sc_pc, PLUM_PWR_BKL);
|
||||
} else
|
||||
if (bootinfo->bi_cnuse & BI_CNUSE_SERIAL)
|
||||
plumvideo_power(sc, 0, 0, (void *)PWR_SUSPEND);
|
||||
else
|
||||
#endif
|
||||
{
|
||||
/* LCD power on and display on */
|
||||
plum_power_establish(sc->sc_pc, PLUM_PWR_LCD);
|
||||
/* supply power to V-RAM */
|
||||
plum_power_establish(sc->sc_pc, PLUM_PWR_EXTPW2);
|
||||
/* supply power to LCD */
|
||||
plum_power_establish(sc->sc_pc, PLUM_PWR_EXTPW1);
|
||||
/* back-light on */
|
||||
plum_power_establish(sc->sc_pc, PLUM_PWR_BKL);
|
||||
}
|
||||
|
||||
plumvideo_power(sc, 0, 0, (void *)PWR_RESUME);
|
||||
/* Add a hard power hook to power saving */
|
||||
sc->sc_powerhook = config_hook(CONFIG_HOOK_PMEVENT,
|
||||
CONFIG_HOOK_PMEVENT_HARDPOWER,
|
||||
CONFIG_HOOK_SHARE,
|
||||
plumvideo_power, sc);
|
||||
if (sc->sc_powerhook == 0)
|
||||
printf("WARNING unable to establish hard power hook");
|
||||
|
||||
/*
|
||||
* Initialize LCD controller
|
||||
* map V-RAM area.
|
||||
* reinstall bootinfo structure.
|
||||
* some OHCI shared-buffer hack. XXX
|
||||
*/
|
||||
if (plumvideo_init(sc) != 0)
|
||||
if (plumvideo_init(sc, &reverse_flag) != 0)
|
||||
return;
|
||||
|
||||
printf("\n");
|
||||
|
||||
/* Attach frame buffer device */
|
||||
plumvideo_hpcfbinit(sc);
|
||||
plumvideo_hpcfbinit(sc, reverse_flag);
|
||||
|
||||
#ifdef PLUMVIDEODEBUG
|
||||
if (plumvideo_debug > 1)
|
||||
@ -227,8 +223,7 @@ plumvideo_attach(parent, self, aux)
|
||||
}
|
||||
|
||||
void
|
||||
plumvideo_hpcfbinit(sc)
|
||||
struct plumvideo_softc *sc;
|
||||
plumvideo_hpcfbinit(struct plumvideo_softc *sc, int reverse_flag)
|
||||
{
|
||||
struct hpcfb_fbconf *fb = &sc->sc_fbconf;
|
||||
struct video_chip *chip = &sc->sc_chip;
|
||||
@ -257,6 +252,8 @@ plumvideo_hpcfbinit(sc)
|
||||
fb->hf_access_flags |= HPCFB_ACCESS_BYTE;
|
||||
fb->hf_access_flags |= HPCFB_ACCESS_WORD;
|
||||
fb->hf_access_flags |= HPCFB_ACCESS_DWORD;
|
||||
if (reverse_flag)
|
||||
fb->hf_access_flags |= HPCFB_ACCESS_REVERSE;
|
||||
|
||||
switch (depth) {
|
||||
default:
|
||||
@ -297,15 +294,24 @@ plumvideo_hpcfbinit(sc)
|
||||
}
|
||||
|
||||
int
|
||||
plumvideo_init(sc)
|
||||
struct plumvideo_softc *sc;
|
||||
plumvideo_init(struct plumvideo_softc *sc, int *reverse)
|
||||
{
|
||||
struct {
|
||||
int reverse, normal;
|
||||
} ctype[] = {
|
||||
{ BIFB_D2_M2L_3, BIFB_D2_M2L_0 },
|
||||
{ BIFB_D2_M2L_3x2, BIFB_D2_M2L_0x2 },
|
||||
{ BIFB_D8_FF, BIFB_D8_00 },
|
||||
{ BIFB_D16_FFFF, BIFB_D16_0000, },
|
||||
{ -1, -1 } /* terminator */
|
||||
}, *ctypep;
|
||||
struct video_chip *chip = &sc->sc_chip;
|
||||
bus_space_tag_t regt = sc->sc_regt;
|
||||
bus_space_handle_t regh = sc->sc_regh;
|
||||
plumreg_t reg;
|
||||
size_t vram_size;
|
||||
int bpp, width, height, vram_pitch;
|
||||
struct video_chip *chip = &sc->sc_chip;
|
||||
u_int16_t fbtype;
|
||||
|
||||
chip->vc_v = sc->sc_pc->pc_tc;
|
||||
#if notyet
|
||||
@ -319,17 +325,32 @@ plumvideo_init(sc)
|
||||
}
|
||||
#endif
|
||||
reg = plum_conf_read(regt, regh, PLUM_VIDEO_PLGMD_REG);
|
||||
|
||||
/* check reverse color */
|
||||
fbtype = bootinfo->fb_type;
|
||||
for (ctypep = ctype; ctypep->normal != -1 ; ctypep++) {
|
||||
if (fbtype == ctypep->normal) {
|
||||
*reverse = 0;
|
||||
goto fbtype_found;
|
||||
} else if (fbtype == ctypep->reverse) {
|
||||
*reverse = 1;
|
||||
goto fbtype_found;
|
||||
}
|
||||
}
|
||||
printf(": unknown frame buffer type 0x%04x. attach failed.\n", fbtype);
|
||||
return (1);
|
||||
fbtype_found:
|
||||
|
||||
switch (reg & PLUM_VIDEO_PLGMD_GMODE_MASK) {
|
||||
case PLUM_VIDEO_PLGMD_16BPP:
|
||||
#ifdef PLUM_BIG_OHCI_BUFFER
|
||||
printf("(16bpp disabled) ");
|
||||
#if NPLUMOHCI > 0 /* reserve V-RAM for USB OHCI */
|
||||
/* FALLTHROUGH */
|
||||
#else /* PLUM_BIG_OHCI_BUFFER */
|
||||
#else
|
||||
bpp = 16;
|
||||
break;
|
||||
#endif /* PLUM_BIG_OHCI_BUFFER */
|
||||
#endif
|
||||
default:
|
||||
bootinfo->fb_type = BIFB_D8_FF; /* over ride */
|
||||
bootinfo->fb_type = *reverse ? BIFB_D8_FF : BIFB_D8_00;
|
||||
reg &= ~PLUM_VIDEO_PLGMD_GMODE_MASK;
|
||||
plum_conf_write(regt, regh, PLUM_VIDEO_PLGMD_REG, reg);
|
||||
reg |= PLUM_VIDEO_PLGMD_8BPP;
|
||||
@ -357,14 +378,12 @@ plumvideo_init(sc)
|
||||
/*
|
||||
* set line byte length to bootinfo and LCD controller.
|
||||
*/
|
||||
bootinfo->fb_line_bytes = (width * bpp) / NBBY;
|
||||
|
||||
vram_pitch = width / (8 / bpp);
|
||||
vram_pitch = bootinfo->fb_line_bytes = (width * bpp) / NBBY;
|
||||
plum_conf_write(regt, regh, PLUM_VIDEO_PLPIT1_REG, vram_pitch);
|
||||
plum_conf_write(regt, regh, PLUM_VIDEO_PLPIT2_REG,
|
||||
vram_pitch & PLUM_VIDEO_PLPIT2_MASK);
|
||||
plum_conf_write(regt, regh, PLUM_VIDEO_PLOFS_REG, vram_pitch);
|
||||
|
||||
|
||||
/*
|
||||
* boot messages and map CLUT(if any).
|
||||
*/
|
||||
@ -416,12 +435,7 @@ plumvideo_init(sc)
|
||||
}
|
||||
|
||||
int
|
||||
plumvideo_ioctl(v, cmd, data, flag, p)
|
||||
void *v;
|
||||
u_long cmd;
|
||||
caddr_t data;
|
||||
int flag;
|
||||
struct proc *p;
|
||||
plumvideo_ioctl(void *v, u_long cmd, caddr_t data, int flag, struct proc *p)
|
||||
{
|
||||
struct plumvideo_softc *sc = (struct plumvideo_softc *)v;
|
||||
struct hpcfb_fbconf *fbconf;
|
||||
@ -551,10 +565,7 @@ plumvideo_ioctl(v, cmd, data, flag, p)
|
||||
}
|
||||
|
||||
paddr_t
|
||||
plumvideo_mmap(ctx, offset, prot)
|
||||
void *ctx;
|
||||
off_t offset;
|
||||
int prot;
|
||||
plumvideo_mmap(void *ctx, off_t offset, int prot)
|
||||
{
|
||||
struct plumvideo_softc *sc = (struct plumvideo_softc *)ctx;
|
||||
|
||||
@ -567,13 +578,11 @@ plumvideo_mmap(ctx, offset, prot)
|
||||
}
|
||||
|
||||
void
|
||||
plumvideo_clut_get(sc, rgb, beg, cnt)
|
||||
struct plumvideo_softc *sc;
|
||||
u_int32_t *rgb;
|
||||
int beg, cnt;
|
||||
plumvideo_clut_get(struct plumvideo_softc *sc, u_int32_t *rgb, int beg,
|
||||
int cnt)
|
||||
{
|
||||
static void __plumvideo_clut_get __P((bus_space_tag_t,
|
||||
bus_space_handle_t));
|
||||
static void __plumvideo_clut_get(bus_space_tag_t,
|
||||
bus_space_handle_t);
|
||||
static void __plumvideo_clut_get(iot, ioh)
|
||||
bus_space_tag_t iot;
|
||||
bus_space_handle_t ioh;
|
||||
@ -593,13 +602,11 @@ plumvideo_clut_get(sc, rgb, beg, cnt)
|
||||
}
|
||||
|
||||
void
|
||||
plumvideo_clut_set(sc, rgb, beg, cnt)
|
||||
struct plumvideo_softc *sc;
|
||||
u_int32_t *rgb;
|
||||
int beg, cnt;
|
||||
plumvideo_clut_set(struct plumvideo_softc *sc, u_int32_t *rgb, int beg,
|
||||
int cnt)
|
||||
{
|
||||
static void __plumvideo_clut_set __P((bus_space_tag_t,
|
||||
bus_space_handle_t));
|
||||
static void __plumvideo_clut_set(bus_space_tag_t,
|
||||
bus_space_handle_t);
|
||||
static void __plumvideo_clut_set(iot, ioh)
|
||||
bus_space_tag_t iot;
|
||||
bus_space_handle_t ioh;
|
||||
@ -619,11 +626,10 @@ plumvideo_clut_set(sc, rgb, beg, cnt)
|
||||
}
|
||||
|
||||
void
|
||||
plumvideo_clut_default(sc)
|
||||
struct plumvideo_softc *sc;
|
||||
plumvideo_clut_default(struct plumvideo_softc *sc)
|
||||
{
|
||||
static void __plumvideo_clut_default __P((bus_space_tag_t,
|
||||
bus_space_handle_t));
|
||||
static void __plumvideo_clut_default(bus_space_tag_t,
|
||||
bus_space_handle_t);
|
||||
static void __plumvideo_clut_default(iot, ioh)
|
||||
bus_space_tag_t iot;
|
||||
bus_space_handle_t ioh;
|
||||
@ -668,9 +674,8 @@ plumvideo_clut_default(sc)
|
||||
}
|
||||
|
||||
void
|
||||
__plumvideo_clut_access(sc, palette_func)
|
||||
struct plumvideo_softc *sc;
|
||||
void (*palette_func) __P((bus_space_tag_t, bus_space_handle_t));
|
||||
__plumvideo_clut_access(struct plumvideo_softc *sc, void (*palette_func)
|
||||
(bus_space_tag_t, bus_space_handle_t))
|
||||
{
|
||||
bus_space_tag_t regt = sc->sc_regt;
|
||||
bus_space_handle_t regh = sc->sc_regh;
|
||||
@ -713,10 +718,45 @@ _flush_cache()
|
||||
MachFlushCache();
|
||||
}
|
||||
|
||||
int
|
||||
plumvideo_power(void *ctx, int type, long id, void *msg)
|
||||
{
|
||||
struct plumvideo_softc *sc = ctx;
|
||||
plum_chipset_tag_t pc = sc->sc_pc;
|
||||
bus_space_tag_t regt = sc->sc_regt;
|
||||
bus_space_handle_t regh = sc->sc_regh;
|
||||
int why = (int)msg;
|
||||
|
||||
switch (why) {
|
||||
case PWR_RESUME:
|
||||
DPRINTF(("%s: ON\n", sc->sc_dev.dv_xname));
|
||||
/* power on */
|
||||
/* LCD power on and display on */
|
||||
plum_power_establish(pc, PLUM_PWR_LCD);
|
||||
/* back-light on */
|
||||
plum_power_establish(pc, PLUM_PWR_BKL);
|
||||
plum_conf_write(regt, regh, PLUM_VIDEO_PLLUM_REG,
|
||||
PLUM_VIDEO_PLLUM_MAX);
|
||||
break;
|
||||
case PWR_SUSPEND:
|
||||
/* FALLTHROUGH */
|
||||
case PWR_STANDBY:
|
||||
DPRINTF(("%s: OFF\n", sc->sc_dev.dv_xname));
|
||||
/* back-light off */
|
||||
plum_conf_write(regt, regh, PLUM_VIDEO_PLLUM_REG,
|
||||
PLUM_VIDEO_PLLUM_MIN);
|
||||
plum_power_disestablish(pc, PLUM_PWR_BKL);
|
||||
/* power down */
|
||||
plum_power_disestablish(pc, PLUM_PWR_LCD);
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef PLUMVIDEODEBUG
|
||||
void
|
||||
plumvideo_dump(sc)
|
||||
struct plumvideo_softc *sc;
|
||||
plumvideo_dump(struct plumvideo_softc *sc)
|
||||
{
|
||||
bus_space_tag_t regt = sc->sc_regt;
|
||||
bus_space_handle_t regh = sc->sc_regh;
|
||||
|
@ -1,7 +1,11 @@
|
||||
/* $NetBSD: plumvideoreg.h,v 1.4 2000/05/08 21:57:57 uch Exp $ */
|
||||
/* $NetBSD: plumvideoreg.h,v 1.5 2000/10/04 13:53:55 uch Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1999, 2000 UCHIYAMA Yasushi. All rights reserved.
|
||||
* Copyright (c) 1999, 2000 The NetBSD Foundation, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This code is derived from software contributed to The NetBSD Foundation
|
||||
* by UCHIYAMA Yasushi.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
@ -11,19 +15,25 @@
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the NetBSD
|
||||
* Foundation, Inc. and its contributors.
|
||||
* 4. Neither the name of The NetBSD Foundation nor the names of its
|
||||
* contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 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.
|
||||
* THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
||||
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
|
||||
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT 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.
|
||||
*/
|
||||
|
||||
/* (CS3) */
|
||||
@ -76,6 +86,8 @@
|
||||
#define PLUM_VIDEO_PLLEV_REG 0x048
|
||||
/* LCD Luminance control */
|
||||
#define PLUM_VIDEO_PLLUM_REG 0x04c
|
||||
#define PLUM_VIDEO_PLLUM_MAX 0x3
|
||||
#define PLUM_VIDEO_PLLUM_MIN 0x0
|
||||
/* DSTN Dither Pattern base address */
|
||||
#define PLUM_VIDEO_PLDPA_REG 0x050
|
||||
/* DSTN VRAM Offscreen buffer address */
|
||||
|
@ -1,7 +1,11 @@
|
||||
/* $NetBSD: tx3912video.c,v 1.17 2000/06/29 08:18:00 mrg Exp $ */
|
||||
/* $NetBSD: tx3912video.c,v 1.18 2000/10/04 13:53:55 uch Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1999, 2000 UCHIYAMA Yasushi. All rights reserved.
|
||||
* Copyright (c) 1999, 2000 The NetBSD Foundation, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This code is derived from software contributed to The NetBSD Foundation
|
||||
* by UCHIYAMA Yasushi.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
@ -11,20 +15,27 @@
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the NetBSD
|
||||
* Foundation, Inc. and its contributors.
|
||||
* 4. Neither the name of The NetBSD Foundation nor the names of its
|
||||
* contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 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.
|
||||
* THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
||||
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
|
||||
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT 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.
|
||||
*/
|
||||
|
||||
#define TX3912VIDEO_DEBUG
|
||||
|
||||
#include "opt_tx39_debug.h"
|
||||
@ -42,6 +53,7 @@
|
||||
|
||||
#include <machine/bus.h>
|
||||
#include <machine/bootinfo.h>
|
||||
#include <machine/config_hook.h>
|
||||
|
||||
#include <hpcmips/tx/tx39var.h>
|
||||
#include <hpcmips/tx/tx3912videovar.h>
|
||||
@ -56,8 +68,18 @@
|
||||
#include <arch/hpcmips/dev/hpcfbvar.h>
|
||||
#include <arch/hpcmips/dev/hpcfbio.h>
|
||||
|
||||
#ifdef TX3912VIDEO_DEBUG
|
||||
int tx3912video_debug = 1;
|
||||
#define DPRINTF(arg) if (tx3912video_debug) printf arg;
|
||||
#define DPRINTFN(n, arg) if (tx3912video_debug > (n)) printf arg;
|
||||
#else
|
||||
#define DPRINTF(arg)
|
||||
#define DPRINTFN(n, arg)
|
||||
#endif
|
||||
|
||||
struct tx3912video_softc {
|
||||
struct device sc_dev;
|
||||
void *sc_powerhook; /* power management hook */
|
||||
struct hpcfb_fbconf sc_fbconf;
|
||||
struct hpcfb_dspconf sc_dspconf;
|
||||
struct video_chip *sc_chip;
|
||||
@ -66,26 +88,25 @@ struct tx3912video_softc {
|
||||
/* TX3912 built-in video chip itself */
|
||||
static struct video_chip tx3912video_chip;
|
||||
|
||||
void tx3912video_framebuffer_init __P((struct video_chip *));
|
||||
int tx3912video_framebuffer_alloc __P((struct video_chip *,
|
||||
paddr_t, paddr_t *));
|
||||
void tx3912video_reset __P((struct video_chip *));
|
||||
void tx3912video_resolution_init __P((struct video_chip *));
|
||||
int tx3912video_power(void *, int, long, void *);
|
||||
void tx3912video_framebuffer_init(struct video_chip *);
|
||||
int tx3912video_framebuffer_alloc(struct video_chip *, paddr_t, paddr_t *);
|
||||
void tx3912video_reset(struct video_chip *);
|
||||
void tx3912video_resolution_init(struct video_chip *);
|
||||
int tx3912video_match(struct device *, struct cfdata *, void *);
|
||||
void tx3912video_attach(struct device *, struct device *, void *);
|
||||
int tx3912video_print(void *, const char *);
|
||||
|
||||
int tx3912video_match __P((struct device *, struct cfdata *, void *));
|
||||
void tx3912video_attach __P((struct device *, struct device *, void *));
|
||||
int tx3912video_print __P((void *, const char *));
|
||||
void tx3912video_hpcfbinit(struct tx3912video_softc *);
|
||||
int tx3912video_ioctl(void *, u_long, caddr_t, int, struct proc *);
|
||||
paddr_t tx3912video_mmap(void *, off_t, int);
|
||||
|
||||
void tx3912video_hpcfbinit __P((struct tx3912video_softc *));
|
||||
int tx3912video_ioctl __P((void *, u_long, caddr_t, int, struct proc *));
|
||||
paddr_t tx3912video_mmap __P((void *, off_t, int));
|
||||
|
||||
void tx3912video_clut_init __P((struct tx3912video_softc *));
|
||||
void tx3912video_clut_install __P((void *, struct rasops_info *));
|
||||
void tx3912video_clut_get __P((struct tx3912video_softc *,
|
||||
u_int32_t *, int, int));
|
||||
static int __get_color8 __P((int));
|
||||
static int __get_color4 __P((int));
|
||||
void tx3912video_clut_init(struct tx3912video_softc *);
|
||||
void tx3912video_clut_install(void *, struct rasops_info *);
|
||||
void tx3912video_clut_get(struct tx3912video_softc *, u_int32_t *, int, int);
|
||||
|
||||
static int __get_color8(int);
|
||||
static int __get_color4(int);
|
||||
|
||||
struct cfattach tx3912video_ca = {
|
||||
sizeof(struct tx3912video_softc), tx3912video_match,
|
||||
@ -98,19 +119,13 @@ struct hpcfb_accessops tx3912video_ha = {
|
||||
};
|
||||
|
||||
int
|
||||
tx3912video_match(parent, cf, aux)
|
||||
struct device *parent;
|
||||
struct cfdata *cf;
|
||||
void *aux;
|
||||
tx3912video_match(struct device *parent, struct cfdata *cf, void *aux)
|
||||
{
|
||||
return (1);
|
||||
}
|
||||
|
||||
void
|
||||
tx3912video_attach(parent, self, aux)
|
||||
struct device *parent;
|
||||
struct device *self;
|
||||
void *aux;
|
||||
tx3912video_attach(struct device *parent, struct device *self, void *aux)
|
||||
{
|
||||
struct tx3912video_softc *sc = (void *)self;
|
||||
struct video_chip *chip;
|
||||
@ -144,14 +159,19 @@ tx3912video_attach(parent, self, aux)
|
||||
|
||||
/* if serial console, power off video module */
|
||||
#ifndef TX3912VIDEO_DEBUG
|
||||
if (!console) {
|
||||
printf("%s: power off\n", sc->sc_dev.dv_xname);
|
||||
val = tx_conf_read(tc, TX3912_VIDEOCTRL1_REG);
|
||||
val &= ~(TX3912_VIDEOCTRL1_DISPON |
|
||||
TX3912_VIDEOCTRL1_ENVID);
|
||||
tx_conf_write(tc, TX3912_VIDEOCTRL1_REG, val);
|
||||
}
|
||||
if (!console)
|
||||
tx3912video_power(sc, 0, 0, (void *)PWR_SUSPEND);
|
||||
else
|
||||
#endif /* TX3912VIDEO_DEBUG */
|
||||
tx3912video_power(sc, 0, 0, (void *)PWR_RESUME);
|
||||
|
||||
/* Add a hard power hook to power saving */
|
||||
sc->sc_powerhook = config_hook(CONFIG_HOOK_PMEVENT,
|
||||
CONFIG_HOOK_PMEVENT_HARDPOWER,
|
||||
CONFIG_HOOK_SHARE,
|
||||
tx3912video_power, sc);
|
||||
if (sc->sc_powerhook == 0)
|
||||
printf("WARNING unable to establish hard power hook");
|
||||
|
||||
#ifdef TX3912VIDEO_DEBUG
|
||||
/* attach debug draw routine (debugging use) */
|
||||
@ -179,6 +199,35 @@ tx3912video_attach(parent, self, aux)
|
||||
config_found(self, &ha, hpcfbprint);
|
||||
}
|
||||
|
||||
int
|
||||
tx3912video_power(void *ctx, int type, long id, void *msg)
|
||||
{
|
||||
struct tx3912video_softc *sc = ctx;
|
||||
struct video_chip *chip = sc->sc_chip;
|
||||
tx_chipset_tag_t tc = chip->vc_v;
|
||||
int why = (int)msg;
|
||||
txreg_t val;
|
||||
|
||||
switch (why) {
|
||||
case PWR_RESUME:
|
||||
DPRINTF(("%s: ON\n", sc->sc_dev.dv_xname));
|
||||
val = tx_conf_read(tc, TX3912_VIDEOCTRL1_REG);
|
||||
val |= (TX3912_VIDEOCTRL1_DISPON | TX3912_VIDEOCTRL1_ENVID);
|
||||
tx_conf_write(tc, TX3912_VIDEOCTRL1_REG, val);
|
||||
break;
|
||||
case PWR_SUSPEND:
|
||||
/* FALLTHROUGH */
|
||||
case PWR_STANDBY:
|
||||
DPRINTF(("%s: OFF\n", sc->sc_dev.dv_xname));
|
||||
val = tx_conf_read(tc, TX3912_VIDEOCTRL1_REG);
|
||||
val &= ~(TX3912_VIDEOCTRL1_DISPON | TX3912_VIDEOCTRL1_ENVID);
|
||||
tx_conf_write(tc, TX3912_VIDEOCTRL1_REG, val);
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
tx3912video_hpcfbinit(sc)
|
||||
struct tx3912video_softc *sc;
|
||||
@ -237,8 +286,7 @@ tx3912video_hpcfbinit(sc)
|
||||
}
|
||||
|
||||
int
|
||||
tx3912video_init(fb_start, fb_end)
|
||||
paddr_t fb_start, *fb_end;
|
||||
tx3912video_init(paddr_t fb_start, paddr_t *fb_end)
|
||||
{
|
||||
struct video_chip *chip = &tx3912video_chip;
|
||||
tx_chipset_tag_t tc;
|
||||
@ -297,9 +345,8 @@ tx3912video_init(fb_start, fb_end)
|
||||
}
|
||||
|
||||
int
|
||||
tx3912video_framebuffer_alloc(chip, fb_start, fb_end)
|
||||
struct video_chip *chip;
|
||||
paddr_t fb_start, *fb_end; /* buffer allocation hint */
|
||||
tx3912video_framebuffer_alloc(struct video_chip *chip, paddr_t fb_start,
|
||||
paddr_t *fb_end /* buffer allocation hint */)
|
||||
{
|
||||
struct extent_fixed ex_fixed[10];
|
||||
struct extent *ex;
|
||||
@ -337,9 +384,8 @@ tx3912video_framebuffer_alloc(chip, fb_start, fb_end)
|
||||
return (0);
|
||||
}
|
||||
|
||||
void
|
||||
tx3912video_framebuffer_init(chip)
|
||||
struct video_chip *chip;
|
||||
void
|
||||
tx3912video_framebuffer_init(struct video_chip *chip)
|
||||
{
|
||||
u_int32_t fb_addr, fb_size, vaddr, bank, base;
|
||||
txreg_t reg;
|
||||
@ -379,9 +425,8 @@ tx3912video_framebuffer_init(chip)
|
||||
memset((void*)vaddr, 0, fb_size);
|
||||
}
|
||||
|
||||
void
|
||||
tx3912video_resolution_init(chip)
|
||||
struct video_chip *chip;
|
||||
void
|
||||
tx3912video_resolution_init(struct video_chip *chip)
|
||||
{
|
||||
int h, v, split, bit8, horzval, lineval;
|
||||
tx_chipset_tag_t tc = chip->vc_v;
|
||||
@ -419,8 +464,7 @@ tx3912video_resolution_init(chip)
|
||||
}
|
||||
|
||||
void
|
||||
tx3912video_reset(chip)
|
||||
struct video_chip *chip;
|
||||
tx3912video_reset(struct video_chip *chip)
|
||||
{
|
||||
tx_chipset_tag_t tc = chip->vc_v;
|
||||
txreg_t reg;
|
||||
@ -449,12 +493,7 @@ tx3912video_reset(chip)
|
||||
}
|
||||
|
||||
int
|
||||
tx3912video_ioctl(v, cmd, data, flag, p)
|
||||
void *v;
|
||||
u_long cmd;
|
||||
caddr_t data;
|
||||
int flag;
|
||||
struct proc *p;
|
||||
tx3912video_ioctl(void *v, u_long cmd, caddr_t data, int flag, struct proc *p)
|
||||
{
|
||||
struct tx3912video_softc *sc = (struct tx3912video_softc *)v;
|
||||
struct hpcfb_fbconf *fbconf;
|
||||
@ -560,10 +599,7 @@ tx3912video_ioctl(v, cmd, data, flag, p)
|
||||
}
|
||||
|
||||
paddr_t
|
||||
tx3912video_mmap(ctx, offset, prot)
|
||||
void *ctx;
|
||||
off_t offset;
|
||||
int prot;
|
||||
tx3912video_mmap(void *ctx, off_t offset, int prot)
|
||||
{
|
||||
struct tx3912video_softc *sc = (struct tx3912video_softc *)ctx;
|
||||
|
||||
@ -618,8 +654,7 @@ static const int dither_level4[4] = {
|
||||
};
|
||||
|
||||
static int
|
||||
__get_color8(luti)
|
||||
int luti;
|
||||
__get_color8(int luti)
|
||||
{
|
||||
KASSERT(luti >=0 && luti < 8);
|
||||
dlp = &dither_list[dither_level8[luti]];
|
||||
@ -628,8 +663,7 @@ __get_color8(luti)
|
||||
}
|
||||
|
||||
static int
|
||||
__get_color4(luti)
|
||||
int luti;
|
||||
__get_color4(int luti)
|
||||
{
|
||||
KASSERT(luti >=0 && luti < 4);
|
||||
dlp = &dither_list[dither_level4[luti]];
|
||||
@ -638,10 +672,8 @@ __get_color4(luti)
|
||||
}
|
||||
|
||||
void
|
||||
tx3912video_clut_get(sc, rgb, beg, cnt)
|
||||
struct tx3912video_softc *sc;
|
||||
u_int32_t *rgb;
|
||||
int beg, cnt;
|
||||
tx3912video_clut_get(struct tx3912video_softc *sc, u_int32_t *rgb, int beg,
|
||||
int cnt)
|
||||
{
|
||||
int i;
|
||||
|
||||
@ -657,9 +689,7 @@ tx3912video_clut_get(sc, rgb, beg, cnt)
|
||||
}
|
||||
|
||||
void
|
||||
tx3912video_clut_install(ctx, ri)
|
||||
void *ctx;
|
||||
struct rasops_info *ri;
|
||||
tx3912video_clut_install(void *ctx, struct rasops_info *ri)
|
||||
{
|
||||
struct tx3912video_softc *sc = ctx;
|
||||
const int system_cmap[0x10] = {
|
||||
@ -690,8 +720,7 @@ tx3912video_clut_install(ctx, ri)
|
||||
}
|
||||
|
||||
void
|
||||
tx3912video_clut_init(sc)
|
||||
struct tx3912video_softc *sc;
|
||||
tx3912video_clut_init(struct tx3912video_softc *sc)
|
||||
{
|
||||
tx_chipset_tag_t tc = sc->sc_chip->vc_v;
|
||||
|
||||
|
@ -1,30 +1,41 @@
|
||||
/* $NetBSD: tx39icu.c,v 1.8 2000/07/20 03:44:46 deberg Exp $ */
|
||||
/* $NetBSD: tx39icu.c,v 1.9 2000/10/04 13:53:55 uch Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1999, 2000 by UCHIYAMA Yasushi
|
||||
/*-
|
||||
* Copyright (c) 1999, 2000 The NetBSD Foundation, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This code is derived from software contributed to The NetBSD Foundation
|
||||
* by UCHIYAMA Yasushi.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. The name of the developer may NOT be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* 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.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the NetBSD
|
||||
* Foundation, Inc. and its contributors.
|
||||
* 4. Neither the name of The NetBSD Foundation nor the names of its
|
||||
* contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
||||
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
|
||||
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT 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.
|
||||
*/
|
||||
|
||||
#include "opt_tx39_debug.h"
|
||||
#include "opt_use_poll.h"
|
||||
#include "opt_tx39icudebug.h"
|
||||
@ -191,21 +202,22 @@ tx39icu_attach(parent, self, aux)
|
||||
struct txsim_attach_args *ta = aux;
|
||||
struct tx39icu_softc *sc = (void*)self;
|
||||
tx_chipset_tag_t tc = ta->ta_tc;
|
||||
txreg_t reg;
|
||||
txreg_t reg, *regs;
|
||||
int i;
|
||||
|
||||
printf("\n");
|
||||
sc->sc_tc = ta->ta_tc;
|
||||
|
||||
sc->sc_regs[0] = tx_conf_read(tc, TX39_INTRSTATUS6_REG);
|
||||
sc->sc_regs[1] = tx_conf_read(tc, TX39_INTRSTATUS1_REG);
|
||||
sc->sc_regs[2] = tx_conf_read(tc, TX39_INTRSTATUS2_REG);
|
||||
sc->sc_regs[3] = tx_conf_read(tc, TX39_INTRSTATUS3_REG);
|
||||
sc->sc_regs[4] = tx_conf_read(tc, TX39_INTRSTATUS4_REG);
|
||||
sc->sc_regs[5] = tx_conf_read(tc, TX39_INTRSTATUS5_REG);
|
||||
regs = sc->sc_regs;
|
||||
regs[0] = tx_conf_read(tc, TX39_INTRSTATUS6_REG);
|
||||
regs[1] = tx_conf_read(tc, TX39_INTRSTATUS1_REG);
|
||||
regs[2] = tx_conf_read(tc, TX39_INTRSTATUS2_REG);
|
||||
regs[3] = tx_conf_read(tc, TX39_INTRSTATUS3_REG);
|
||||
regs[4] = tx_conf_read(tc, TX39_INTRSTATUS4_REG);
|
||||
regs[5] = tx_conf_read(tc, TX39_INTRSTATUS5_REG);
|
||||
#ifdef TX392X
|
||||
sc->sc_regs[7] = tx_conf_read(tc, TX39_INTRSTATUS7_REG);
|
||||
sc->sc_regs[8] = tx_conf_read(tc, TX39_INTRSTATUS8_REG);
|
||||
regs[7] = tx_conf_read(tc, TX39_INTRSTATUS7_REG);
|
||||
regs[8] = tx_conf_read(tc, TX39_INTRSTATUS8_REG);
|
||||
#endif
|
||||
#ifdef TX39ICUDEBUG
|
||||
printf("\t[Windows CE setting]\n");
|
||||
@ -274,7 +286,7 @@ tx39icu_intr(status, cause, pc, ipending)
|
||||
{
|
||||
struct tx39icu_softc *sc;
|
||||
tx_chipset_tag_t tc;
|
||||
txreg_t reg, pend;
|
||||
txreg_t reg, pend, *regs;
|
||||
int i, j;
|
||||
|
||||
tc = tx_conf_get_tag();
|
||||
@ -282,15 +294,16 @@ tx39icu_intr(status, cause, pc, ipending)
|
||||
/*
|
||||
* Read regsiter ASAP
|
||||
*/
|
||||
sc->sc_regs[0] = tx_conf_read(tc, TX39_INTRSTATUS6_REG);
|
||||
sc->sc_regs[1] = tx_conf_read(tc, TX39_INTRSTATUS1_REG);
|
||||
sc->sc_regs[2] = tx_conf_read(tc, TX39_INTRSTATUS2_REG);
|
||||
sc->sc_regs[3] = tx_conf_read(tc, TX39_INTRSTATUS3_REG);
|
||||
sc->sc_regs[4] = tx_conf_read(tc, TX39_INTRSTATUS4_REG);
|
||||
sc->sc_regs[5] = tx_conf_read(tc, TX39_INTRSTATUS5_REG);
|
||||
regs = sc->sc_regs;
|
||||
regs[0] = tx_conf_read(tc, TX39_INTRSTATUS6_REG);
|
||||
regs[1] = tx_conf_read(tc, TX39_INTRSTATUS1_REG);
|
||||
regs[2] = tx_conf_read(tc, TX39_INTRSTATUS2_REG);
|
||||
regs[3] = tx_conf_read(tc, TX39_INTRSTATUS3_REG);
|
||||
regs[4] = tx_conf_read(tc, TX39_INTRSTATUS4_REG);
|
||||
regs[5] = tx_conf_read(tc, TX39_INTRSTATUS5_REG);
|
||||
#ifdef TX392X
|
||||
sc->sc_regs[7] = tx_conf_read(tc, TX39_INTRSTATUS7_REG);
|
||||
sc->sc_regs[8] = tx_conf_read(tc, TX39_INTRSTATUS8_REG);
|
||||
regs[7] = tx_conf_read(tc, TX39_INTRSTATUS7_REG);
|
||||
regs[8] = tx_conf_read(tc, TX39_INTRSTATUS8_REG);
|
||||
#endif
|
||||
|
||||
#ifdef TX39ICUDEBUG
|
||||
|
@ -1,30 +1,41 @@
|
||||
/* $NetBSD: tx39icureg.h,v 1.2 1999/12/26 17:05:28 uch Exp $ */
|
||||
/* $NetBSD: tx39icureg.h,v 1.3 2000/10/04 13:53:56 uch Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1999, by UCHIYAMA Yasushi
|
||||
/*-
|
||||
* Copyright (c) 1999 The NetBSD Foundation, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This code is derived from software contributed to The NetBSD Foundation
|
||||
* by UCHIYAMA Yasushi.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. The name of the developer may NOT be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* 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.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the NetBSD
|
||||
* Foundation, Inc. and its contributors.
|
||||
* 4. Neither the name of The NetBSD Foundation nor the names of its
|
||||
* contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
||||
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
|
||||
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT 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.
|
||||
*/
|
||||
|
||||
/*
|
||||
* TOSHIBA TMPR3912/3922 interrupt module.
|
||||
*/
|
||||
|
@ -1,30 +1,41 @@
|
||||
/* $NetBSD: tx39io.c,v 1.5 2000/01/16 21:47:00 uch Exp $ */
|
||||
/* $NetBSD: tx39io.c,v 1.6 2000/10/04 13:53:56 uch Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1999, 2000, by UCHIYAMA Yasushi
|
||||
/*-
|
||||
* Copyright (c) 1999, 2000 The NetBSD Foundation, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This code is derived from software contributed to The NetBSD Foundation
|
||||
* by UCHIYAMA Yasushi.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. The name of the developer may NOT be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* 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.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the NetBSD
|
||||
* Foundation, Inc. and its contributors.
|
||||
* 4. Neither the name of The NetBSD Foundation nor the names of its
|
||||
* contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
||||
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
|
||||
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT 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.
|
||||
*/
|
||||
|
||||
#include "opt_tx39_debug.h"
|
||||
#include "opt_tx39iodebug.h"
|
||||
|
||||
@ -41,13 +52,14 @@
|
||||
|
||||
#include <hpcmips/tx/txiomanvar.h>
|
||||
|
||||
#undef TX39IODEBUG
|
||||
#define TX39IO_ATTACH_DUMMYHANDLER 0
|
||||
#undef TX39IO_MFIOOUTPORT_ON
|
||||
#undef TX39IO_MFIOOUTPORT_OFF
|
||||
|
||||
int tx39io_match __P((struct device*, struct cfdata*, void*));
|
||||
void tx39io_attach __P((struct device*, struct device*, void*));
|
||||
int tx39io_print __P((void*, const char*));
|
||||
int tx39io_match(struct device *, struct cfdata *, void *);
|
||||
void tx39io_attach(struct device *, struct device *, void *);
|
||||
int tx39io_print(void *, const char *);
|
||||
|
||||
struct tx39io_softc {
|
||||
struct device sc_dev;
|
||||
@ -59,14 +71,13 @@ struct cfattach tx39io_ca = {
|
||||
};
|
||||
|
||||
#ifdef TX39IODEBUG
|
||||
int tx39io_intr __P((void*));
|
||||
int tx39mfio_intr __P((void*));
|
||||
void tx39io_dump __P((struct tx39io_softc*));
|
||||
void tx39io_dump_and_attach_handler __P((struct tx39io_softc*, int));
|
||||
void __dump_and_attach_handler __P((tx_chipset_tag_t, u_int32_t,
|
||||
u_int32_t, u_int32_t, u_int32_t,
|
||||
int, int, int (*) __P((void*)),
|
||||
void*, int));
|
||||
int tx39io_intr(void *);
|
||||
int tx39mfio_intr(void *);
|
||||
void tx39io_dump(struct tx39io_softc *);
|
||||
void tx39io_dump_and_attach_handler(struct tx39io_softc *, int);
|
||||
void __dump_and_attach_handler(tx_chipset_tag_t, u_int32_t,
|
||||
u_int32_t, u_int32_t, u_int32_t,
|
||||
int, int, int (*)(void *), void *, int);
|
||||
#endif /* TX39IODEBUG */
|
||||
|
||||
#define ISSET(x, s) ((x) & (1 << (s)))
|
||||
@ -125,19 +136,13 @@ const struct {
|
||||
};
|
||||
|
||||
int
|
||||
tx39io_match(parent, cf, aux)
|
||||
struct device *parent;
|
||||
struct cfdata *cf;
|
||||
void *aux;
|
||||
tx39io_match(struct device *parent, struct cfdata *cf, void *aux)
|
||||
{
|
||||
return 2; /* 1st attach group of txsim */
|
||||
}
|
||||
|
||||
void
|
||||
tx39io_attach(parent, self, aux)
|
||||
struct device *parent;
|
||||
struct device *self;
|
||||
void *aux;
|
||||
tx39io_attach(struct device *parent, struct device *self, void *aux)
|
||||
{
|
||||
struct txsim_attach_args *ta = aux;
|
||||
struct tx39io_softc *sc = (void*)self;
|
||||
@ -158,17 +163,13 @@ tx39io_attach(parent, self, aux)
|
||||
}
|
||||
|
||||
int
|
||||
tx39io_print(aux, pnp)
|
||||
void *aux;
|
||||
const char *pnp;
|
||||
tx39io_print(void *aux, const char *pnp)
|
||||
{
|
||||
return pnp ? QUIET : UNCONF;
|
||||
}
|
||||
|
||||
void
|
||||
tx39io_portout(tc, port, onoff)
|
||||
tx_chipset_tag_t tc;
|
||||
int port, onoff;
|
||||
tx39io_portout(tx_chipset_tag_t tc, int port, int onoff)
|
||||
{
|
||||
txreg_t reg;
|
||||
|
||||
@ -203,8 +204,7 @@ tx39io_portout(tc, port, onoff)
|
||||
|
||||
#ifdef TX39IODEBUG
|
||||
int
|
||||
tx39io_intr(arg)
|
||||
void *arg;
|
||||
tx39io_intr(void *arg)
|
||||
{
|
||||
printf("io (%d:%d)\n", (tx39intrvec >> 16) & 0xffff,
|
||||
tx39intrvec & 0xfff);
|
||||
@ -213,8 +213,7 @@ tx39io_intr(arg)
|
||||
}
|
||||
|
||||
int
|
||||
tx39mfio_intr(arg)
|
||||
void *arg;
|
||||
tx39mfio_intr(void *arg)
|
||||
{
|
||||
printf("mfio (%d:%d)\n", (tx39intrvec >> 16) & 0xffff,
|
||||
tx39intrvec & 0xfff);
|
||||
@ -223,8 +222,7 @@ tx39mfio_intr(arg)
|
||||
}
|
||||
|
||||
void
|
||||
tx39io_dump(sc)
|
||||
struct tx39io_softc *sc;
|
||||
tx39io_dump(struct tx39io_softc *sc)
|
||||
{
|
||||
#ifdef COMPAQ_LOCAL_INTR /* for debug */
|
||||
/* 2010c Rec button */
|
||||
@ -279,15 +277,13 @@ tx39io_dump(sc)
|
||||
}
|
||||
|
||||
void
|
||||
tx39io_dump_and_attach_handler(sc, dummy)
|
||||
struct tx39io_softc *sc;
|
||||
int dummy;
|
||||
tx39io_dump_and_attach_handler(struct tx39io_softc *sc, int dummy)
|
||||
{
|
||||
tx_chipset_tag_t tc;
|
||||
u_int32_t reg, reg_out, reg_dir, reg_in, reg_sel, reg_pwr, reg_deb;
|
||||
int i;
|
||||
int (*iointr) __P((void*));
|
||||
int (*mfiointr) __P((void*));
|
||||
int (*iointr)(void*);
|
||||
int (*mfiointr)(void*);
|
||||
|
||||
tc = sc->sc_tc;
|
||||
if (dummy) {
|
||||
@ -346,14 +342,10 @@ tx39io_dump_and_attach_handler(sc, dummy)
|
||||
}
|
||||
|
||||
void
|
||||
__dump_and_attach_handler(tc, reg_dir, reg_out, reg_in, reg_pwr,
|
||||
i, io, func, arg, mf)
|
||||
tx_chipset_tag_t tc;
|
||||
u_int32_t reg_dir, reg_out, reg_in, reg_pwr;
|
||||
int i, io;
|
||||
int (*func) __P((void*));
|
||||
void *arg;
|
||||
int mf;
|
||||
__dump_and_attach_handler(tx_chipset_tag_t tc, u_int32_t reg_dir,
|
||||
u_int32_t reg_out, u_int32_t reg_in,
|
||||
u_int32_t reg_pwr, int i, int io,
|
||||
int (*func)(void*), void *arg, int mf)
|
||||
{
|
||||
int pset, nset, pofs, nofs;
|
||||
|
||||
@ -373,7 +365,7 @@ __dump_and_attach_handler(tc, reg_dir, reg_out, reg_in, reg_pwr,
|
||||
nset = 4;
|
||||
pofs = nofs = i;
|
||||
}
|
||||
|
||||
|
||||
if (ISSET(reg_dir, i)) {
|
||||
#if defined TX39IO_MFIOOUTPORT_ON || defined TX39IO_MFIOOUTPORT_OFF
|
||||
txreg_t reg;
|
||||
|
@ -1,7 +1,11 @@
|
||||
/* $NetBSD: tx39power.c,v 1.6 2000/05/22 17:17:44 uch Exp $ */
|
||||
/* $NetBSD: tx39power.c,v 1.7 2000/10/04 13:53:56 uch Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1999, 2000 UCHIYAMA Yasushi. All rights reserved.
|
||||
* Copyright (c) 1999, 2000 The NetBSD Foundation, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This code is derived from software contributed to The NetBSD Foundation
|
||||
* by UCHIYAMA Yasushi.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
@ -11,24 +15,29 @@
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the NetBSD
|
||||
* Foundation, Inc. and its contributors.
|
||||
* 4. Neither the name of The NetBSD Foundation nor the names of its
|
||||
* contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 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.
|
||||
* THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
||||
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
|
||||
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT 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.
|
||||
*/
|
||||
|
||||
#include "opt_tx39_debug.h"
|
||||
#include "opt_tx39powerdebug.h"
|
||||
#include "opt_ddb.h"
|
||||
|
||||
#include <sys/param.h>
|
||||
#include <sys/systm.h>
|
||||
@ -36,49 +45,51 @@
|
||||
|
||||
#include <machine/bus.h>
|
||||
#include <machine/intr.h>
|
||||
#include <machine/config_hook.h>
|
||||
|
||||
#include <hpcmips/tx/tx39var.h>
|
||||
#include <hpcmips/tx/tx39icureg.h>
|
||||
#include <hpcmips/tx/tx39powerreg.h>
|
||||
#include <hpcmips/tx/tx39spireg.h>
|
||||
|
||||
#include <hpcmips/dev/video_subr.h>
|
||||
#define ISSET(x, v) ((x) & (v))
|
||||
#define ISSETPRINT(r, m) __is_set_print(r, TX39_POWERCTRL_##m, #m)
|
||||
|
||||
#undef POWERBUTTON_IS_DEBUGGER
|
||||
|
||||
#define ISSET(x, v) ((x) & (v))
|
||||
#define ISSETPRINT(r, m) __is_set_print(r, TX39_POWERCTRL_##m, #m)
|
||||
|
||||
int tx39power_match __P((struct device*, struct cfdata*, void*));
|
||||
void tx39power_attach __P((struct device*, struct device*, void*));
|
||||
|
||||
int tx39power_intr __P((void*));
|
||||
int tx39power_ok_intr __P((void*));
|
||||
int tx39power_button_intr __P((void*));
|
||||
int tx39power_match(struct device *, struct cfdata *, void *);
|
||||
void tx39power_attach(struct device *, struct device *, void *);
|
||||
|
||||
struct tx39power_softc {
|
||||
struct device sc_dev;
|
||||
tx_chipset_tag_t sc_tc;
|
||||
|
||||
/* save interrupt status for resume */
|
||||
txreg_t sc_icu_state[TX39_INTRSET_MAX + 1];
|
||||
};
|
||||
|
||||
struct cfattach tx39power_ca = {
|
||||
sizeof(struct tx39power_softc), tx39power_match, tx39power_attach
|
||||
};
|
||||
|
||||
void tx39power_suspend_cpu(void); /* automatic hardware resume */
|
||||
|
||||
static int tx39power_intr_p(void *);
|
||||
static int tx39power_intr_n(void *);
|
||||
static int tx39power_ok_intr_p(void *);
|
||||
static int tx39power_ok_intr_n(void *);
|
||||
static int tx39power_button_intr_p(void *);
|
||||
static int tx39power_button_intr_n(void *);
|
||||
#ifdef TX39POWERDEBUG
|
||||
static void tx39power_dump(struct tx39power_softc *);
|
||||
#endif
|
||||
|
||||
int
|
||||
tx39power_match(parent, cf, aux)
|
||||
struct device *parent;
|
||||
struct cfdata *cf;
|
||||
void *aux;
|
||||
tx39power_match(struct device *parent, struct cfdata *cf, void *aux)
|
||||
{
|
||||
return 2; /* 1st attach group of txsim */
|
||||
}
|
||||
|
||||
void
|
||||
tx39power_attach(parent, self, aux)
|
||||
struct device *parent;
|
||||
struct device *self;
|
||||
void *aux;
|
||||
tx39power_attach(struct device *parent, struct device *self, void *aux)
|
||||
{
|
||||
struct txsim_attach_args *ta = aux;
|
||||
struct tx39power_softc *sc = (void*)self;
|
||||
@ -90,6 +101,167 @@ tx39power_attach(parent, self, aux)
|
||||
|
||||
printf("\n");
|
||||
#ifdef TX39POWERDEBUG
|
||||
__tx39power_dump (sc);
|
||||
#endif
|
||||
/*
|
||||
* Disable SPI module
|
||||
*/
|
||||
reg = tx_conf_read(tc, TX39_SPICTRL_REG);
|
||||
if (ISSET(reg, TX39_SPICTRL_ENSPI)) {
|
||||
reg &= ~TX39_SPICTRL_ENSPI;
|
||||
}
|
||||
printf("SPI module disabled\n");
|
||||
|
||||
/*
|
||||
* enable stop timer
|
||||
*/
|
||||
reg = tx_conf_read(tc, TX39_POWERCTRL_REG);
|
||||
|
||||
reg &= ~(TX39_POWERCTRL_STPTIMERVAL_MASK <<
|
||||
TX39_POWERCTRL_STPTIMERVAL_SHIFT);
|
||||
reg = TX39_POWERCTRL_STPTIMERVAL_SET(reg, 1);
|
||||
|
||||
reg |= TX39_POWERCTRL_ENSTPTIMER;
|
||||
tx_conf_write(tc, TX39_POWERCTRL_REG, reg);
|
||||
|
||||
tx_intr_establish(tc, MAKEINTR(5, TX39_INTRSTATUS5_POSPWRINT),
|
||||
IST_EDGE, IPL_CLOCK,
|
||||
tx39power_intr_p, sc);
|
||||
tx_intr_establish(tc, MAKEINTR(5, TX39_INTRSTATUS5_NEGPWRINT),
|
||||
IST_EDGE, IPL_CLOCK,
|
||||
tx39power_intr_n, sc);
|
||||
tx_intr_establish(tc, MAKEINTR(5, TX39_INTRSTATUS5_POSPWROKINT),
|
||||
IST_EDGE, IPL_CLOCK,
|
||||
tx39power_ok_intr_p, sc);
|
||||
tx_intr_establish(tc, MAKEINTR(5, TX39_INTRSTATUS5_NEGPWROKINT),
|
||||
IST_EDGE, IPL_CLOCK,
|
||||
tx39power_ok_intr_n, sc);
|
||||
tx_intr_establish(tc, MAKEINTR(5, TX39_INTRSTATUS5_POSONBUTNINT),
|
||||
IST_EDGE, IPL_CLOCK,
|
||||
tx39power_button_intr_p, sc);
|
||||
tx_intr_establish(tc, MAKEINTR(5, TX39_INTRSTATUS5_NEGONBUTNINT),
|
||||
IST_EDGE, IPL_CLOCK,
|
||||
tx39power_button_intr_n, sc);
|
||||
}
|
||||
|
||||
void
|
||||
tx39power_suspend_cpu() /* I assume already splhigh */
|
||||
{
|
||||
tx_chipset_tag_t tc = tx_conf_get_tag();
|
||||
struct tx39power_softc *sc = tc->tc_powert;
|
||||
txreg_t reg, *iregs = sc->sc_icu_state;
|
||||
|
||||
printf ("%s: CPU sleep\n", sc->sc_dev.dv_xname);
|
||||
__asm__ __volatile__(".set noreorder");
|
||||
reg = tx_conf_read(tc, TX39_POWERCTRL_REG);
|
||||
reg |= TX39_POWERCTRL_STOPCPU;
|
||||
#ifdef TX392X
|
||||
reg |= TX39_POWERCTRL_WARMSTART;
|
||||
#endif
|
||||
/* save interrupt state */
|
||||
iregs[0] = tx_conf_read(tc, TX39_INTRENABLE6_REG);
|
||||
iregs[1] = tx_conf_read(tc, TX39_INTRENABLE1_REG);
|
||||
iregs[2] = tx_conf_read(tc, TX39_INTRENABLE2_REG);
|
||||
iregs[3] = tx_conf_read(tc, TX39_INTRENABLE3_REG);
|
||||
iregs[4] = tx_conf_read(tc, TX39_INTRENABLE4_REG);
|
||||
iregs[5] = tx_conf_read(tc, TX39_INTRENABLE5_REG);
|
||||
#ifdef TX392X
|
||||
iregs[7] = tx_conf_read(tc, TX39_INTRENABLE7_REG);
|
||||
iregs[8] = tx_conf_read(tc, TX39_INTRENABLE8_REG);
|
||||
#endif
|
||||
/* disable all interrupt (don't disable GLOBALEN) */
|
||||
tx_conf_write(tc, TX39_INTRENABLE6_REG, TX39_INTRENABLE6_GLOBALEN);
|
||||
tx_conf_write(tc, TX39_INTRENABLE1_REG, 0);
|
||||
tx_conf_write(tc, TX39_INTRENABLE2_REG, 0);
|
||||
tx_conf_write(tc, TX39_INTRENABLE3_REG, 0);
|
||||
tx_conf_write(tc, TX39_INTRENABLE4_REG, 0);
|
||||
tx_conf_write(tc, TX39_INTRENABLE5_REG, 0);
|
||||
#ifdef TX392X
|
||||
tx_conf_write(tc, TX39_INTRENABLE7_REG, 0);
|
||||
tx_conf_write(tc, TX39_INTRENABLE8_REG, 0);
|
||||
#endif
|
||||
/* enable power button interrupt only */
|
||||
tx_conf_write(tc, TX39_INTRCLEAR5_REG, TX39_INTRSTATUS5_NEGONBUTNINT);
|
||||
tx_conf_write(tc, TX39_INTRENABLE5_REG, TX39_INTRSTATUS5_NEGONBUTNINT);
|
||||
__asm__ __volatile__("sync");
|
||||
|
||||
/* stop CPU clock */
|
||||
tx_conf_write(tc, TX39_POWERCTRL_REG, reg);
|
||||
__asm__ __volatile__("sync");
|
||||
/* wait until power button pressed */
|
||||
/* clear interrupt */
|
||||
tx_conf_write(tc, TX39_INTRCLEAR5_REG, TX39_INTRSTATUS5_NEGONBUTNINT);
|
||||
|
||||
/* restore interrupt state */
|
||||
tx_conf_write(tc, TX39_INTRENABLE6_REG, iregs[0]);
|
||||
tx_conf_write(tc, TX39_INTRENABLE1_REG, iregs[1]);
|
||||
tx_conf_write(tc, TX39_INTRENABLE2_REG, iregs[2]);
|
||||
tx_conf_write(tc, TX39_INTRENABLE3_REG, iregs[3]);
|
||||
tx_conf_write(tc, TX39_INTRENABLE4_REG, iregs[4]);
|
||||
tx_conf_write(tc, TX39_INTRENABLE5_REG, iregs[5]);
|
||||
#ifdef TX392X
|
||||
tx_conf_write(tc, TX39_INTRENABLE7_REG, iregs[7]);
|
||||
tx_conf_write(tc, TX39_INTRENABLE8_REG, iregs[8]);
|
||||
#endif
|
||||
__asm__ __volatile__(".set reorder");
|
||||
|
||||
printf ("%s: CPU wakeup\n", sc->sc_dev.dv_xname);
|
||||
}
|
||||
|
||||
static int
|
||||
tx39power_button_intr_p(void *arg)
|
||||
{
|
||||
config_hook_call(CONFIG_HOOK_BUTTONEVENT,
|
||||
CONFIG_HOOK_BUTTONEVENT_POWER,
|
||||
(void *)1 /* on */);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
tx39power_button_intr_n(void *arg)
|
||||
{
|
||||
config_hook_call(CONFIG_HOOK_BUTTONEVENT,
|
||||
CONFIG_HOOK_BUTTONEVENT_POWER,
|
||||
(void *)0 /* off */);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
tx39power_intr_p(void *arg)
|
||||
{
|
||||
printf("power_p\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
tx39power_intr_n(void *arg)
|
||||
{
|
||||
printf("power_n\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
tx39power_ok_intr_p(void *arg)
|
||||
{
|
||||
printf("power NG\n");
|
||||
config_hook_call(CONFIG_HOOK_PMEVENT,
|
||||
CONFIG_HOOK_PMEVENT_SUSPENDREQ, NULL);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
tx39power_ok_intr_n(void *arg)
|
||||
{
|
||||
printf("power OK\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef TX39POWERDEBUG
|
||||
static void
|
||||
__tx39power_dump (struct tx39power_softc *sc)
|
||||
{
|
||||
tx_chipset_tag_t tc = sc->sc_tc;
|
||||
|
||||
reg = tx_conf_read(tc, TX39_POWERCTRL_REG);
|
||||
ISSETPRINT(reg, ONBUTN);
|
||||
ISSETPRINT(reg, PWRINT);
|
||||
@ -120,88 +292,6 @@ tx39power_attach(parent, self, aux)
|
||||
#endif /* TX391X */
|
||||
printf("STPTIMERVAL=%d ", TX39_POWERCTRL_STPTIMERVAL(reg));
|
||||
printf("\n");
|
||||
}
|
||||
#endif /* TX39POWERDEBUG */
|
||||
#ifdef DISABLE_SPI_AND_DOZE /* XXX test XXX */
|
||||
/*
|
||||
* Disable SPI module
|
||||
*/
|
||||
reg = tx_conf_read(tc, TX39_SPICTRL_REG);
|
||||
if (ISSET(reg, TX39_SPICTRL_ENSPI)) {
|
||||
reg &= ~TX39_SPICTRL_ENSPI;
|
||||
}
|
||||
printf("SPI module disabled\n");
|
||||
|
||||
/*
|
||||
* Disable Stop timer (Doze CPU mode)
|
||||
*/
|
||||
reg = tx_conf_read(tc, TX39_POWERCTRL_REG);
|
||||
printf("STPTIMER disabled.\n");
|
||||
reg &= ~TX39_POWERCTRL_ENSTPTIMER;
|
||||
tx_conf_write(tc, TX39_POWERCTRL_REG, reg);
|
||||
#endif /* DISABLE_SPI_AND_DOZE */
|
||||
|
||||
/*
|
||||
* enable stop timer
|
||||
*/
|
||||
reg = tx_conf_read(tc, TX39_POWERCTRL_REG);
|
||||
|
||||
reg &= ~(TX39_POWERCTRL_STPTIMERVAL_MASK <<
|
||||
TX39_POWERCTRL_STPTIMERVAL_SHIFT);
|
||||
reg = TX39_POWERCTRL_STPTIMERVAL_SET(reg, 1);
|
||||
|
||||
reg |= TX39_POWERCTRL_ENSTPTIMER;
|
||||
tx_conf_write(tc, TX39_POWERCTRL_REG, reg);
|
||||
|
||||
tx_intr_establish(tc, MAKEINTR(5, TX39_INTRSTATUS5_POSPWRINT),
|
||||
IST_EDGE, IPL_CLOCK,
|
||||
tx39power_intr, sc);
|
||||
tx_intr_establish(tc, MAKEINTR(5, TX39_INTRSTATUS5_NEGPWRINT),
|
||||
IST_EDGE, IPL_CLOCK,
|
||||
tx39power_intr, sc);
|
||||
tx_intr_establish(tc, MAKEINTR(5, TX39_INTRSTATUS5_POSPWROKINT),
|
||||
IST_EDGE, IPL_CLOCK,
|
||||
tx39power_ok_intr, sc);
|
||||
tx_intr_establish(tc, MAKEINTR(5, TX39_INTRSTATUS5_NEGPWROKINT),
|
||||
IST_EDGE, IPL_CLOCK,
|
||||
tx39power_ok_intr, sc);
|
||||
#if 0
|
||||
tx_intr_establish(tc, MAKEINTR(5, TX39_INTRSTATUS5_POSONBUTNINT),
|
||||
IST_EDGE, IPL_CLOCK,
|
||||
tx39power_button_intr, sc);
|
||||
#endif
|
||||
tx_intr_establish(tc, MAKEINTR(5, TX39_INTRSTATUS5_NEGONBUTNINT),
|
||||
IST_EDGE, IPL_CLOCK,
|
||||
tx39power_button_intr, sc);
|
||||
|
||||
}
|
||||
|
||||
int
|
||||
tx39power_button_intr(arg)
|
||||
void *arg;
|
||||
{
|
||||
struct tx39power_softc *sc = arg;
|
||||
|
||||
if (sc->sc_tc->tc_videot)
|
||||
video_calibration_pattern(sc->sc_tc->tc_videot); /* debug */
|
||||
|
||||
#if defined DDB && defined POWERBUTTON_IS_DEBUGGER
|
||||
cpu_Debugger();
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
tx39power_intr(arg)
|
||||
void *arg;
|
||||
{
|
||||
printf("power\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
tx39power_ok_intr(arg)
|
||||
void *arg;
|
||||
{
|
||||
printf("power NG\n");
|
||||
return 0;
|
||||
}
|
||||
|
@ -1,30 +1,41 @@
|
||||
/* $NetBSD: tx39powerreg.h,v 1.1 1999/11/20 19:56:36 uch Exp $ */
|
||||
/* $NetBSD: tx39powerreg.h,v 1.2 2000/10/04 13:53:56 uch Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1999, by UCHIYAMA Yasushi
|
||||
/*-
|
||||
* Copyright (c) 1999 The NetBSD Foundation, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This code is derived from software contributed to The NetBSD Foundation
|
||||
* by UCHIYAMA Yasushi.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. The name of the developer may NOT be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* 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.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the NetBSD
|
||||
* Foundation, Inc. and its contributors.
|
||||
* 4. Neither the name of The NetBSD Foundation nor the names of its
|
||||
* contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
||||
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
|
||||
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT 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.
|
||||
*/
|
||||
|
||||
/*
|
||||
* TOSHIBA TX3912/3922 Power module
|
||||
*/
|
||||
|
@ -1,7 +1,11 @@
|
||||
/* $NetBSD: tx39var.h,v 1.6 2000/05/22 17:17:44 uch Exp $ */
|
||||
/* $NetBSD: tx39var.h,v 1.7 2000/10/04 13:53:56 uch Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1999, 2000 UCHIYAMA Yasushi. All rights reserved.
|
||||
* Copyright (c) 1999, 2000 The NetBSD Foundation, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This code is derived from software contributed to The NetBSD Foundation
|
||||
* by UCHIYAMA Yasushi.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
@ -11,19 +15,25 @@
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the NetBSD
|
||||
* Foundation, Inc. and its contributors.
|
||||
* 4. Neither the name of The NetBSD Foundation nor the names of its
|
||||
* contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 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.
|
||||
* THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
||||
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
|
||||
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT 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.
|
||||
*/
|
||||
|
||||
struct tx_chipset_tag {
|
||||
@ -38,12 +48,12 @@ struct tx_chipset_tag {
|
||||
typedef struct tx_chipset_tag* tx_chipset_tag_t;
|
||||
typedef u_int32_t txreg_t;
|
||||
|
||||
void tx_conf_register_intr __P((tx_chipset_tag_t, void*));
|
||||
void tx_conf_register_power __P((tx_chipset_tag_t, void*));
|
||||
void tx_conf_register_clock __P((tx_chipset_tag_t, void*));
|
||||
void tx_conf_register_sound __P((tx_chipset_tag_t, void*));
|
||||
void tx_conf_register_ioman __P((tx_chipset_tag_t, void*));
|
||||
void tx_conf_register_video __P((tx_chipset_tag_t, void*));
|
||||
void tx_conf_register_intr(tx_chipset_tag_t, void *);
|
||||
void tx_conf_register_power(tx_chipset_tag_t, void *);
|
||||
void tx_conf_register_clock(tx_chipset_tag_t, void *);
|
||||
void tx_conf_register_sound(tx_chipset_tag_t, void *);
|
||||
void tx_conf_register_ioman(tx_chipset_tag_t, void *);
|
||||
void tx_conf_register_video(tx_chipset_tag_t, void *);
|
||||
|
||||
/*
|
||||
* TX39 Internal Function Register access
|
||||
@ -51,21 +61,17 @@ void tx_conf_register_video __P((tx_chipset_tag_t, void*));
|
||||
#define TX39_SYSADDR_CONFIG_REG_KSEG1 0xb0c00000
|
||||
|
||||
#ifdef TX39_PREFER_FUNCTION
|
||||
|
||||
tx_chipset_tag_t tx_conf_get_tag __P((void));
|
||||
u_int32_t tx_conf_read __P((tx_chipset_tag_t, int));
|
||||
void tx_conf_write __P((tx_chipset_tag_t, int, txreg_t));
|
||||
|
||||
tx_chipset_tag_t tx_conf_get_tag(void);
|
||||
u_int32_t tx_conf_read(tx_chipset_tag_t, int);
|
||||
void tx_conf_write(tx_chipset_tag_t, int, txreg_t);
|
||||
#else /* TX39_PREFER_FUNCTION */
|
||||
|
||||
extern struct tx_chipset_tag tx_chipset;
|
||||
#define tx_conf_read(t, reg) ((void)(t), \
|
||||
(*((volatile txreg_t*)(TX39_SYSADDR_CONFIG_REG_KSEG1 + (reg)))))
|
||||
#define tx_conf_write(t, reg, val) ((void)(t), \
|
||||
(*((volatile txreg_t*)(TX39_SYSADDR_CONFIG_REG_KSEG1 + (reg))) \
|
||||
#define tx_conf_read(t, reg) ((void)(t), \
|
||||
(*((volatile txreg_t *)(TX39_SYSADDR_CONFIG_REG_KSEG1 + (reg)))))
|
||||
#define tx_conf_write(t, reg, val) ((void)(t), \
|
||||
(*((volatile txreg_t *)(TX39_SYSADDR_CONFIG_REG_KSEG1 + (reg))) \
|
||||
= (val)))
|
||||
#define tx_conf_get_tag() (&tx_chipset)
|
||||
|
||||
#endif /* TX39_PREFER_FUNCTION */
|
||||
|
||||
/*
|
||||
@ -85,22 +91,27 @@ struct txsim_attach_args {
|
||||
/*
|
||||
* Interrupt staff
|
||||
*/
|
||||
#define MAKEINTR(s, b) ((s) * 32 + (ffs(b) - 1))
|
||||
void* tx_intr_establish __P((tx_chipset_tag_t, int, int, int,
|
||||
int (*) __P((void*)), void*));
|
||||
void tx_intr_disestablish __P((tx_chipset_tag_t, void*));
|
||||
#define MAKEINTR(s, b) ((s) * 32 + (ffs(b) - 1))
|
||||
void* tx_intr_establish(tx_chipset_tag_t, int, int, int, int (*)(void *),
|
||||
void *);
|
||||
void tx_intr_disestablish(tx_chipset_tag_t, void *);
|
||||
|
||||
#ifdef USE_POLL
|
||||
void* tx39_poll_establish __P((tx_chipset_tag_t, int, int,
|
||||
int (*) __P((void*)), void*));
|
||||
void tx39_poll_disestablish __P((tx_chipset_tag_t, void*));
|
||||
void* tx39_poll_establish(tx_chipset_tag_t, int, int, int (*)(void *),
|
||||
void *);
|
||||
void tx39_poll_disestablish(tx_chipset_tag_t, void *);
|
||||
#define POLL_CONT 0
|
||||
#define POLL_END 1
|
||||
#endif /* USE_POLL */
|
||||
|
||||
u_int32_t tx_intr_status __P((tx_chipset_tag_t, int));
|
||||
u_int32_t tx_intr_status(tx_chipset_tag_t, int);
|
||||
extern u_int32_t tx39intrvec;
|
||||
|
||||
/*
|
||||
* Power management staff
|
||||
*/
|
||||
void tx39power_suspend_cpu(void);
|
||||
|
||||
#ifdef TX39_DEBUG
|
||||
extern u_int32_t tx39debugflag;
|
||||
/*
|
||||
@ -139,4 +150,4 @@ extern u_int32_t tx39debugflag;
|
||||
#define bitdisp(a)
|
||||
#endif /* TX39_DEBUG */
|
||||
|
||||
int __is_set_print __P((u_int32_t, int, char*));
|
||||
int __is_set_print(u_int32_t, int, char *);
|
||||
|
Loading…
Reference in New Issue
Block a user