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; }
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); }