#include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: dec_550.c,v 1.39 2025/03/09 01:06:41 thorpej Exp $");
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/device.h>
#include <uvm/uvm_extern.h>
#include <machine/rpb.h>
#include <machine/autoconf.h>
#include <machine/cpuconf.h>
#include <dev/pci/pcivar.h>
#include <alpha/pci/ciareg.h>
#include <alpha/pci/ciavar.h>
#define DEC_550_PYXIS_GPO_POWERDOWN 0x00000400
void dec_550_init(void);
static void dec_550_cons_init(void);
static void dec_550_device_register(device_t, void *);
static void dec_550_powerdown(void);
void
dec_550_init(void)
{
platform.family = "Digital Personal Workstation";
if ((platform.model = alpha_dsr_sysname()) == NULL) {
platform.model = alpha_unknown_sysname();
}
platform.iobus = "cia";
platform.cons_init = dec_550_cons_init;
platform.device_register = dec_550_device_register;
platform.powerdown = dec_550_powerdown;
uvmexp.ncolors = atop(2 * 1024 * 1024);
}
static void
dec_550_cons_init(void)
{
struct cia_config *ccp;
extern struct cia_config cia_configuration;
ccp = &cia_configuration;
cia_init(ccp);
pci_consinit(&ccp->cc_pc, &ccp->cc_iot, &ccp->cc_memt,
&ccp->cc_iot, &ccp->cc_memt);
}
static void
dec_550_device_register(device_t dev, void *aux)
{
pci_find_bootdev(NULL, dev, aux);
}
static void
dec_550_powerdown(void)
{
REGVAL(PYXIS_GPO) = DEC_550_PYXIS_GPO_POWERDOWN;
alpha_mb();
}