> Index: dev/dfs.c > +static int voltage;
There is no reason for this variable to be global. You should put it in your device' softc instead. > +int > +dfs_match(struct device *parent, void *arg, void *aux) > +{ > + struct confargs *ca = aux; > + uint16_t cpu; > + > + if (strcmp(ca->ca_name, "cpu-vcore-select") != 0) > + return (0); > + > + cpu = ppc_mfpvr() >> 16; Is there any possibility for this device to attach to multiprocessor machines? If so, what if there are multiple cpu-vcore-select nodes, one per processor? Oh well, I suppose there won't be multiprocessor systems with different cpu models... at least not on macppc. > + cpu = ppc_mfpvr() >> 16; > + if (cpu == PPC_CPU_MPC7448) > + printf(", %d MHz\n", ppc_maxfreq / 4); > + else > + printf(" MHz\n"); Nitpicking, but I'd rather see the optional /4 freq be printed as ", %d" and an unconditional " MHz\n" in all cases. > +void > +dfs_setperf(int perflevel) > +{ > + if (perflevel > 50) { > + if (ppc_curfreq != ppc_maxfreq) { > + macobio_write(voltage, GPIO_DDR_OUTPUT | 1); > + DELAY(1000); Speaking of DELAY()... it is implemented using the processor internal counter register. Is this register impacted by frequency changes? If so, shouldn't you update the computed ns_per_tick delay() constant? Also, this register is used to feed the timecounter. Is the clock still accurate after running for a while at a lower frequency? Is there any other, fixed, clock source which can be used as a safe monotonic clock source? Miod