diff --git a/sys/arch/macppc/dev/obio.c b/sys/arch/macppc/dev/obio.c index cdae5ef4740d..8752d1370f6f 100644 --- a/sys/arch/macppc/dev/obio.c +++ b/sys/arch/macppc/dev/obio.c @@ -1,4 +1,4 @@ -/* $NetBSD: obio.c,v 1.25 2007/01/18 00:17:22 macallan Exp $ */ +/* $NetBSD: obio.c,v 1.26 2007/01/18 00:19:30 macallan Exp $ */ /*- * Copyright (C) 1998 Internet Research Institute, Inc. @@ -32,7 +32,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: obio.c,v 1.25 2007/01/18 00:17:22 macallan Exp $"); +__KERNEL_RCSID(0, "$NetBSD: obio.c,v 1.26 2007/01/18 00:19:30 macallan Exp $"); #include #include @@ -46,8 +46,6 @@ __KERNEL_RCSID(0, "$NetBSD: obio.c,v 1.25 2007/01/18 00:17:22 macallan Exp $"); #include -#include - static void obio_attach __P((struct device *, struct device *, void *)); static int obio_match __P((struct device *, struct cfdata *, void *)); static int obio_print __P((void *, const char *)); @@ -57,10 +55,6 @@ struct obio_softc { int sc_node; }; -static void obio_setup_ohare2(struct obio_softc *, struct confargs *); -static int obio_get_cpu_speed(paddr_t); -static void obio_set_cpu_speed(paddr_t, int); -static void setup_sysctl(paddr_t); CFATTACH_DECL(obio, sizeof(struct obio_softc), obio_match, obio_attach, NULL, NULL); @@ -154,20 +148,7 @@ obio_attach(parent, self, aux) out32rb(ca.ca_baseaddr + 0x40, in32rb(ca.ca_baseaddr + 0x40) & ~((u_int32_t)1<<25)); } - - if (PCI_PRODUCT(pa->pa_id) == PCI_PRODUCT_APPLE_INTREPID) { - paddr_t addr; - - printf("enabling Intrepid CPU speed control\nCPU speed is "); - addr = ca.ca_baseaddr + 0x6a; - if (obio_get_cpu_speed(addr)) { - printf("high\n"); - } else { - printf("low\n"); - } - setup_sysctl(addr); - } - + /* Enable internal modem (Pangea) */ if (PCI_PRODUCT(pa->pa_id) == PCI_PRODUCT_APPLE_PANGEA_MACIO) { out8(ca.ca_baseaddr + 0x006a + 0x03, 0x04); /* set reset */ @@ -187,22 +168,7 @@ obio_attach(parent, self, aux) if (PCI_PRODUCT(pa->pa_id) == PCI_PRODUCT_APPLE_PADDINGTON) out8(ca.ca_baseaddr + 0x37, 0x03); } - - if (PCI_PRODUCT(pa->pa_id) == PCI_PRODUCT_APPLE_OHARE) { - uint32_t freg; - - freg = in32rb(ca.ca_baseaddr + 0x38); - printf("%s: FCR %08x\n", sc->sc_dev.dv_xname, freg); - - if (ca.ca_baseaddr != 0xf3000000) { - obio_setup_ohare2(sc, &ca); - return; - } - printf("enabling 2nd IDE channel on ohare\n"); - freg |= 8; - out32rb(ca.ca_baseaddr + 0x38, freg); - } - + for (child = OF_child(node); child; child = OF_peer(child)) { namelen = OF_getprop(child, "name", name, sizeof(name)); if (namelen < 0) @@ -214,12 +180,9 @@ obio_attach(parent, self, aux) ca.ca_name = name; ca.ca_node = child; ca.ca_tag = pa->pa_memt; - + ca.ca_nreg = OF_getprop(child, "reg", reg, sizeof(reg)); - if (strcmp(name, "backlight") == 0) { - paddr_t addr = (ca.ca_baseaddr + reg[0]); - printf("backlight: %08x %08x\n",(uint32_t)addr, in32rb(addr)); - } + if (strcmp(compat, "gatwick") != 0) { ca.ca_nintr = OF_getprop(child, "AAPL,interrupts", intr, sizeof(intr)); @@ -270,89 +233,3 @@ obio_print(aux, obio) return UNCONF; } - -static void -obio_setup_ohare2(struct obio_softc *sc, struct confargs *ca) -{ - printf("ohare2: %08x\n", ca->ca_baseaddr); -} - -static void -obio_set_cpu_speed(paddr_t addr, int fast) -{ - - if(addr != 0) { - if (fast) { - out8rb(addr + 1, 5); /* bump Vcore */ - out8rb(addr, 5); /* bump CPU speed */ - } else { - out8rb(addr, 4); /* lower CPU speed */ - out8rb(addr + 1, 4); /* lower Vcore */ - } - } -} - -static int -obio_get_cpu_speed(paddr_t addr) -{ - - if(addr != 0) { - if(in8rb(addr) & 1) - return 1; - } - return 0; -} - -SYSCTL_SETUP(sysctl_cpuspeed_setup, "sysctl cpu speed setup") -{ - - sysctl_createv(NULL, 0, NULL, NULL, - CTLFLAG_PERMANENT, - CTLTYPE_NODE, "machdep", NULL, - NULL, 0, NULL, 0, - CTL_MACHDEP, CTL_EOL); -} - -static int -sysctl_cpuspeed_temp(SYSCTLFN_ARGS) -{ - struct sysctlnode node = *rnode; - paddr_t addr = (paddr_t)node.sysctl_data; - const int *np = newp; - int speed, nd = 0; - - speed = obio_get_cpu_speed(addr); - node.sysctl_idata = speed; - if (np) { - /* we're asked to write */ - nd = *np; - node.sysctl_data = &speed; - if (sysctl_lookup(SYSCTLFN_CALL(&node)) == 0) { - int new_reg; - - new_reg = (max(0, min(1, node.sysctl_idata))); - obio_set_cpu_speed(addr, new_reg); - return 0; - } - return EINVAL; - } else { - node.sysctl_size = 4; - return(sysctl_lookup(SYSCTLFN_CALL(&node))); - } -} - -static void -setup_sysctl(paddr_t addr) -{ - struct sysctlnode *node=NULL; - int ret; - - ret = sysctl_createv(NULL, 0, NULL, - (const struct sysctlnode **)&node, - CTLFLAG_READWRITE | CTLFLAG_OWNDESC | CTLFLAG_IMMEDIATE, - CTLTYPE_INT, "cpu_speed", "CPU speed", sysctl_cpuspeed_temp, - addr , NULL, 0, CTL_MACHDEP, CTL_CREATE, CTL_EOL); - if (node != NULL) { - node->sysctl_data = (void *)addr; - } -}