Ejemplo n.º 1
0
int
acpitimer_init(struct acpi_softc *sc)
{
	ACPI_STATUS rv;
	uint32_t bits;
	int i, j;

	rv = AcpiGetTimerResolution(&bits);

	if (ACPI_FAILURE(rv))
		return -1;

	if (bits == 32)
		acpi_timecounter.tc_counter_mask = 0xffffffff;

	for (i = j = 0; i < 10; i++)
		j += acpitimer_test();

	if (j >= 10) {
		acpi_timecounter.tc_name = "ACPI-Fast";
		acpi_timecounter.tc_get_timecount = acpitimer_read_fast;
		acpi_timecounter.tc_quality = 1000;
	}

	tc_init(&acpi_timecounter);

	aprint_debug_dev(sc->sc_dev, "%s %d-bit timer\n",
	    acpi_timecounter.tc_name, bits);

	return 0;
}
Ejemplo n.º 2
0
static int
acpi_timer_probe(device_t dev)
{
    ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__);

    if (dev != acpi_timer_dev)
	return (ENXIO);

    if (ACPI_FAILURE(AcpiGetTimerResolution(&acpi_timer_resolution)))
	return (ENXIO);

    return (0);
}