Exemple #1
0
static int
sysctl_cpuspeed_temp(SYSCTLFN_ARGS)
{
    struct sysctlnode node = *rnode;
    struct obio_softc *sc = node.sysctl_data;
    int speed, mhz;

    speed = obio_get_cpu_speed(sc);
    switch (speed) {
    case 0:
        mhz = sc->sc_spd_lo;
        break;
    case 1:
        mhz = sc->sc_spd_hi;
        break;
    default:
        speed = -1;
    }
    node.sysctl_data = &mhz;
    if (sysctl_lookup(SYSCTLFN_CALL(&node)) == 0) {
        int new_reg;

        new_reg = *(int *)node.sysctl_data;
        if (new_reg == sc->sc_spd_lo) {
            obio_set_cpu_speed(sc, 0);
        } else if (new_reg == sc->sc_spd_hi) {
            obio_set_cpu_speed(sc, 1);
        } else {
            printf("%s: new_reg %d\n", __func__, new_reg);
            return EINVAL;
        }
        return 0;
    }
    return EINVAL;
}
Exemple #2
0
static void
obio_get_freq(void *cookie, void *spd)
{
    struct obio_softc *sc = cookie;
    uint32_t *freq;

    freq = spd;
    if (obio_get_cpu_speed(sc) == 0) {
        *freq = sc->sc_spd_lo;
    } else
        *freq = sc->sc_spd_hi;
}
Exemple #3
0
static int
sysctl_cpuspeed_available(SYSCTLFN_ARGS)
{
	struct sysctlnode node = *rnode;
	struct obio_softc *sc = node.sysctl_data;
	char buf[128];
	int speed;

	speed = obio_get_cpu_speed(sc);
	snprintf(buf, 128, "%d %d", sc->sc_spd_lo, sc->sc_spd_hi);	
	node.sysctl_data = buf;
	return(sysctl_lookup(SYSCTLFN_CALL(&node)));
}
Exemple #4
0
static int
sysctl_cpuspeed_cur(SYSCTLFN_ARGS)
{
    struct sysctlnode node = *rnode;
    struct obio_softc *sc = node.sysctl_data;
    int speed, mhz;

    speed = obio_get_cpu_speed(sc);
    switch (speed) {
    case 0:
        mhz = sc->sc_spd_lo;
        break;
    case 1:
        mhz = sc->sc_spd_hi;
        break;
    default:
        speed = -1;
    }
    node.sysctl_data = &mhz;
    return sysctl_lookup(SYSCTLFN_CALL(&node));
}