Exemplo n.º 1
0
int geode_mfgpt_alloc_timer(int timer, int domain)
{
    int i;

    if (timers == -1) {
        /* timers haven't been detected yet */
        geode_mfgpt_detect();
    }

    if (!timers)
        return -1;

    if (timer >= MFGPT_MAX_TIMERS)
        return -1;

    if (timer < 0) {
        /* Try to find an available timer */
        for (i = 0; i < MFGPT_MAX_TIMERS; i++) {
            if (mfgpt_timers[i].avail)
                return mfgpt_get(i);

            if (i == 5 && domain == MFGPT_DOMAIN_WORKING)
                break;
        }
    } else {
        /* If they requested a specific timer, try to honor that */
        if (mfgpt_timers[timer].avail)
            return mfgpt_get(timer);
    }

    /* No timers available - too bad */
    return -1;
}
Exemplo n.º 2
0
static int __init geode_southbridge_init(void)
{
	int timers;

	if (!is_geode())
		return -ENODEV;

	init_lbars();
	timers = geode_mfgpt_detect();
	printk(KERN_INFO "geode:  %d MFGPT timers available.\n", timers);
	return 0;
}