int k7pnow_acpi_init(struct k7pnow_cpu_state *cstate, uint64_t status) { int curs; uint32_t ctrl; struct acpicpu_pss *pss; int mfid; cstate->n_states = acpicpu_fetch_pss(&pss); if (cstate->n_states == 0) return 0; curs = k7pnow_acpi_states(cstate, pss, cstate->n_states, status); /* * XXX: Some BIOS supplied _PSS implementations have the wrong * maximum frequency, if we encounter one of these punt and * hope the legacy tables have correct values. */ mfid = PN7_STA_MFID(status); if (mfid != cstate->state_table[cstate->n_states - 1].fid) { return 0; } acpicpu_set_notify(k7pnow_acpi_pss_changed); ctrl = pss[curs].pss_ctrl; cstate->sgtc = PN7_ACPI_CTRL_TO_SGTC(ctrl); return 1; }
int k8pnow_acpi_init(struct k8pnow_cpu_state * cstate, uint64_t status) { int curs; uint32_t ctrl; struct acpicpu_pss *pss; cstate->n_states = acpicpu_fetch_pss(&pss); if (cstate->n_states == 0) return 0; acpicpu_set_notify(k8pnow_acpi_pss_changed); curs = k8pnow_acpi_states(cstate, pss, cstate->n_states, status); ctrl = pss[curs].pss_ctrl; cstate->rvo = PN8_ACPI_CTRL_TO_RVO(ctrl); cstate->vst = PN8_ACPI_CTRL_TO_VST(ctrl); cstate->mvs = PN8_ACPI_CTRL_TO_MVS(ctrl); cstate->pll = PN8_ACPI_CTRL_TO_PLL(ctrl); cstate->irt = PN8_ACPI_CTRL_TO_IRT(ctrl); cstate->low = 0; return 1; }