Lines Matching +full:- +full:75 +full:mv

1 /*-
2 * SPDX-License-Identifier: BSD-2-Clause
4 * Copyright (c) 2004-2005 Bruno Ducrot
30 * to Jung-uk Kim for testing.
158 * Some of those tables are the same as the Linux powernow-k7
163 70, 75, 80, 85, 90, 95, 100, 105,
169 40, 45, 50, 55, 60, 65, 70, 75,
180 * Units are in mV.
289 ctl |= PN7_CTR_SGTC(sc->sgtc); in pn7_setfidvid()
291 if (sc->errata & A0_ERRATA) in pn7_setfidvid()
304 if (sc->errata & A0_ERRATA) in pn7_setfidvid()
317 while (PN8_STA_PENDING(*status) && --i); in pn8_read_pending_wait()
329 while (pn8_read_pending_wait(status) && --i); in pn8_write_fidvid()
358 val = cvid - (1 << sc->mvs); in pn8_setfidvid()
361 sc->errata |= PENDING_STUCK; in pn8_setfidvid()
365 COUNT_OFF_VST(sc->vst); in pn8_setfidvid()
369 for (rvo = sc->rvo; rvo > 0 && cvid > 0; --rvo) { in pn8_setfidvid()
373 rv = pn8_write_fidvid(cfid, cvid - 1, 1ULL, &status); in pn8_setfidvid()
375 sc->errata |= PENDING_STUCK; in pn8_setfidvid()
379 COUNT_OFF_VST(sc->vst); in pn8_setfidvid()
389 while (abs(vco_fid - vco_cfid) > 2) { in pn8_setfidvid()
397 val = cfid - fid_delta; in pn8_setfidvid()
399 sc->pll * (uint64_t) sc->fsb, in pn8_setfidvid()
402 sc->errata |= PENDING_STUCK; in pn8_setfidvid()
406 COUNT_OFF_IRT(sc->irt); in pn8_setfidvid()
412 sc->pll * (uint64_t) sc->fsb, in pn8_setfidvid()
415 sc->errata |= PENDING_STUCK; in pn8_setfidvid()
419 COUNT_OFF_IRT(sc->irt); in pn8_setfidvid()
426 COUNT_OFF_VST(sc->vst); in pn8_setfidvid()
448 if (sc->errata & PENDING_STUCK) in pn_set()
451 for (i = 0; i < sc->powernow_max_states; ++i) in pn_set()
452 if (CPUFREQ_CMP(sc->powernow_states[i].freq / 1000, cf->freq)) in pn_set()
455 fid = sc->powernow_states[i].fid; in pn_set()
456 vid = sc->powernow_states[i].vid; in pn_set()
460 switch (sc->pn_type) { in pn_set()
483 if (sc->errata & PENDING_STUCK) in pn_get()
488 switch (sc->pn_type) { in pn_get()
498 for (i = 0; i < sc->powernow_max_states; ++i) in pn_get()
499 if (cfid == sc->powernow_states[i].fid && in pn_get()
500 cvid == sc->powernow_states[i].vid) in pn_get()
503 if (i < sc->powernow_max_states) { in pn_get()
504 cf->freq = sc->powernow_states[i].freq / 1000; in pn_get()
505 cf->power = sc->powernow_states[i].power; in pn_get()
506 cf->lat = 200; in pn_get()
507 cf->volts = sc->vid_to_volts[cvid]; in pn_get()
508 cf->dev = dev; in pn_get()
511 cf->dev = NULL; in pn_get()
526 if (*count < sc->powernow_max_states) in pn_settings()
528 for (i = 0; i < sc->powernow_max_states; ++i) { in pn_settings()
529 sets[i].freq = sc->powernow_states[i].freq / 1000; in pn_settings()
530 sets[i].power = sc->powernow_states[i].power; in pn_settings()
532 sets[i].volts = sc->vid_to_volts[sc->powernow_states[i].vid]; in pn_settings()
535 *count = sc->powernow_max_states; in pn_settings()
562 sc->powernow_states[i].freq = CPUFREQ_VAL_UNKNOWN; in decode_pst()
569 switch (sc->pn_type) { in decode_pst()
571 state.freq = 100 * pn7_fid_to_mult[state.fid] * sc->fsb; in decode_pst()
572 if ((sc->errata & A0_ERRATA) && in decode_pst()
577 state.freq = 100 * pn8_fid_to_mult[state.fid] * sc->fsb; in decode_pst()
582 while (j > 0 && sc->powernow_states[j - 1].freq < state.freq) { in decode_pst()
583 memcpy(&sc->powernow_states[j], in decode_pst()
584 &sc->powernow_states[j - 1], in decode_pst()
586 --j; in decode_pst()
588 memcpy(&sc->powernow_states[j], &state, in decode_pst()
597 sc->powernow_max_states = n; in decode_pst()
600 for (i = 0; i < sc->powernow_max_states; ++i) { in decode_pst()
601 int fid = sc->powernow_states[i].fid; in decode_pst()
602 int vid = sc->powernow_states[i].vid; in decode_pst()
606 sc->powernow_states[i].freq, in decode_pst()
650 sc->errata |= A0_ERRATA; in pn_decode_pst()
654 switch (sc->pn_type) { in pn_decode_pst()
675 sc->pn_type == PN7_TYPE ? "startvid" : "maxvid", in pn_decode_pst()
685 switch (psb->version) { in pn_decode_pst()
695 if (sc->pn_type != PN8_TYPE) in pn_decode_pst()
697 sc->vst = psb->settlingtime; in pn_decode_pst()
698 sc->rvo = PN8_PSB_TO_RVO(psb->res1); in pn_decode_pst()
699 sc->irt = PN8_PSB_TO_IRT(psb->res1); in pn_decode_pst()
700 sc->mvs = PN8_PSB_TO_MVS(psb->res1); in pn_decode_pst()
701 sc->low = PN8_PSB_TO_BATT(psb->res1); in pn_decode_pst()
704 psb->settlingtime); in pn_decode_pst()
707 sc->rvo, in pn_decode_pst()
708 sc->irt, in pn_decode_pst()
709 sc->mvs, in pn_decode_pst()
710 sc->low); in pn_decode_pst()
714 if (sc->pn_type != PN7_TYPE) in pn_decode_pst()
716 sc->sgtc = psb->settlingtime * sc->fsb; in pn_decode_pst()
717 if (sc->sgtc < 100 * sc->fsb) in pn_decode_pst()
718 sc->sgtc = 100 * sc->fsb; in pn_decode_pst()
730 if (cpuid == pst->cpuid && in pn_decode_pst()
731 maxfid == pst->maxfid && in pn_decode_pst()
732 startvid == pst->startvid) { in pn_decode_pst()
733 sc->powernow_max_states = pst->numpstates; in pn_decode_pst()
734 switch (sc->pn_type) { in pn_decode_pst()
736 if (abs(sc->fsb - pst->fsb) > 5) in pn_decode_pst()
744 sc->powernow_max_states)); in pn_decode_pst()
747 p += sizeof(struct pst_header) + (2 * pst->numpstates); in pn_decode_pst()
748 } while (cpuid_is_k7(pst->cpuid) && maxpst--); in pn_decode_pst()
786 sc->errata |= A0_ERRATA; in pn_decode_acpi()
789 sc->sgtc = 0; in pn_decode_acpi()
792 switch (sc->pn_type) { in pn_decode_acpi()
796 if ((sc->errata & A0_ERRATA) && in pn_decode_acpi()
809 while (j > 0 && sc->powernow_states[j - 1].freq < state.freq) { in pn_decode_acpi()
810 memcpy(&sc->powernow_states[j], in pn_decode_acpi()
811 &sc->powernow_states[j - 1], in pn_decode_acpi()
813 --j; in pn_decode_acpi()
815 memcpy(&sc->powernow_states[j], &state, in pn_decode_acpi()
820 sc->powernow_max_states = n; in pn_decode_acpi()
821 state = sc->powernow_states[0]; in pn_decode_acpi()
824 switch (sc->pn_type) { in pn_decode_acpi()
826 sc->sgtc = ACPI_PN7_CTRL_TO_SGTC(ctrl); in pn_decode_acpi()
837 sc->fsb = state.freq / 100 / pn7_fid_to_mult[state.fid]; in pn_decode_acpi()
840 sc->vst = ACPI_PN8_CTRL_TO_VST(ctrl), in pn_decode_acpi()
841 sc->mvs = ACPI_PN8_CTRL_TO_MVS(ctrl), in pn_decode_acpi()
842 sc->pll = ACPI_PN8_CTRL_TO_PLL(ctrl), in pn_decode_acpi()
843 sc->rvo = ACPI_PN8_CTRL_TO_RVO(ctrl), in pn_decode_acpi()
844 sc->irt = ACPI_PN8_CTRL_TO_IRT(ctrl); in pn_decode_acpi()
845 sc->low = 0; /* XXX */ in pn_decode_acpi()
850 if (sc->powernow_max_states >= 2 && in pn_decode_acpi()
851 (sc->powernow_states[sc->powernow_max_states - 2].fid < 8)) in pn_decode_acpi()
853 sc->fsb = state.freq / 100 / pn8_fid_to_mult[state.fid]; in pn_decode_acpi()
890 sc->errata = 0; in pn_probe()
897 cpu_est_clockrate(pc->pc_cpuid, &rate); in pn_probe()
904 sc->pn_type = PN7_TYPE; in pn_probe()
905 sc->fsb = rate / 100000 / pn7_fid_to_mult[cfid]; in pn_probe()
913 sc->vid_to_volts = pn7_mobile_vid_to_volts; in pn_probe()
916 sc->vid_to_volts = pn7_desktop_vid_to_volts; in pn_probe()
925 sc->pn_type = PN8_TYPE; in pn_probe()
926 sc->vid_to_volts = pn8_vid_to_volts; in pn_probe()
927 sc->fsb = rate / 100000 / pn8_fid_to_mult[cfid]; in pn_probe()