Lines Matching refs:level

50  * of the device.  If component 0 is to be set to power level 0 (off), then
53 * After setting component 0 from 0 to a non-zero power level, a call must be
98 * be brought back to the power level necessary for the use of the device
115 * and calling pm_set_power() as appropriate to change the power level.
129 * has any component that is at a non-zero power level, all components of the
216 * power level.
231 * pm_cfb_lock: (High level spin lock)
277 * power level, which is protected by ndi_devi_enter().
286 * Since changing power level is possibly a slow operation (30
288 * Since a call into the driver to change the power level of one
290 * the power level of another, this lock allows re-entrancy by
394 * participate in power level changes, so we bypass them when this is set.
772 * Given a pointer to a component struct, return the current power level
773 * (struct contains index unless it is a continuous level).
826 * Returns true if level is a possible (valid) power level for component
829 e_pm_valid_power(dev_info_t *dip, int cmpt, int level)
837 if (level < 0)
840 if (level == *ip++)
848 PMD(PMD_FAIL, ("%s: index=%d, level=%d\n",
904 dev_is_needed(dev_info_t *dip, int cmpt, int level, int direction)
913 !e_pm_valid_power(dip, cmpt, level))
918 level, cur_power(cp)))
920 if (pm_set_power(dip, cmpt, level, direction,
931 pm_decode_direction(direction), level, result))
1311 * scan to next lower level
1338 * if components are already at lowest level, timeleft is left 0
1397 * Converts a power level value to its index
1416 * Converts a numeric power level to a printable string
1496 * compatible device, calling into ppm to change power level.
1500 power_dev(dev_info_t *dip, int comp, int level, int old_level,
1524 if (bc && comp == 0 && POWERING_OFF(old_level, level)) {
1539 power_req.req.ppm_set_power_req.new_level = level;
1554 power_val_to_string(cp, level), level, ppmname, ppmaddr))
1562 (!bc && pm_all_components_off(dip) && level != 0) ||
1563 (bc && comp == 0 && POWERING_ON(old_level, level)))
1586 "to level %d (%s)\n", pmf, comp, cp->pmc_comp.pmc_name,
1587 PM_DEVICE(dip), level, power_val_to_string(cp, level)))
1608 if (POWERING_ON(old_level, level)) {
1621 if (POWERING_OFF(old_level, level)) {
1675 * pm_set_power: adjusts power level of device. Assumes device is power
1692 pm_set_power(dev_info_t *dip, int comp, int level, int direction,
1721 pmf, PM_DEVICE(dip), comp, pm_decode_direction(direction), level))
1728 bpc.bpc_nlevel = level;
2407 * Convert a power level to an index into the levels array (or
2411 pm_level_to_index(dev_info_t *dip, pm_component_t *cp, int level)
2418 if (level == PM_LEVEL_UNKNOWN)
2419 return (level);
2422 if (level == *ip++) {
2425 (int)(cp - DEVI(dip)->devi_pm_components), level))
2429 panic("pm_level_to_index: level %d not found for device "
2430 "%s@%s(%s#%d)", level, PM_DEVICE(dip));
2435 * Internal function to set current power level
2438 e_pm_set_cur_pwr(dev_info_t *dip, pm_component_t *cp, int level)
2448 level == cp->pmc_comp.pmc_lvals[curpwr])
2453 * level.
2457 } else if (level == cp->pmc_comp.pmc_lvals[0]) {
2461 cp->pmc_cur_pwr = pm_level_to_index(dip, cp, level);
2471 pm_power(dev_info_t *dip, int comp, int level)
2480 PMD(PMD_KIDSUP, ("%s: %s@%s(%s#%d), comp=%d, level=%d\n", pmf,
2481 PM_DEVICE(dip), comp, level))
2494 retval = (*fn)(dip, comp, level);
2497 e_pm_set_cur_pwr(dip, PM_CP(dip, comp), level);
2503 * updated only the power level of the component. If our attempt to
2504 * set the device new to a power level above has failed we sync the
2513 PMD(PMD_PHC, ("%s: phc %s@%s(%s#%d) comp=%d level=%d\n",
2518 "level=%d (%s)\n", pmf, comp, cp->pmc_comp.pmc_name, PM_DEVICE(dip),
2519 level, power_val_to_string(cp, level)));
2549 pm_raise_power(dev_info_t *dip, int comp, int level)
2551 if (level < 0)
2554 !e_pm_valid_power(dip, comp, level))
2557 return (dev_is_needed(dip, comp, level, PM_LEVEL_UPONLY));
2561 pm_lower_power(dev_info_t *dip, int comp, int level)
2566 !e_pm_valid_power(dip, comp, level)) {
2568 "comp=%d level=%d\n", pmf, PM_DEVICE(dip), comp, level))
2592 if (dev_is_needed(dip, comp, level, PM_LEVEL_DOWNONLY) != DDI_SUCCESS) {
2626 * Write an entry indicating a power level change (to be passed to a process
2725 * Create an entry for a process to pick up indicating a power level change.
2878 dev_info_t *pdip, int comp, int old_level, int level)
2889 bphc.bphc_nlevel = level;
2902 pm_check_and_resume(dev_info_t *dip, int comp, int old_level, int level)
2906 if (PM_ISBC(dip) && comp == 0 && old_level == 0 && level != 0) {
2940 pm_power_has_changed(dev_info_t *dip, int comp, int level)
2948 if (level < 0) {
2949 PMD(PMD_FAIL, ("%s: %s@%s(%s#%d): bad level=%d\n", pmf,
2950 PM_DEVICE(dip), level))
2954 PMD(PMD_KIDSUP | PMD_DEP, ("%s: %s@%s(%s#%d), comp=%d, level=%d\n", pmf,
2955 PM_DEVICE(dip), comp, level))
2958 !e_pm_valid_power(dip, comp, level))
2966 * and we are deadlocked, just update the component's level, do
2969 * desired level). If we were called because of a power change on a
2980 level, cur_power(cp), PM_CANBLOCK_BLOCK);
2985 pdip, comp, cur_power(cp), level);
2987 comp, cur_power(cp), level);
3003 pm_level_to_index(dip, cp, level);
3005 "level=%d\n", pmf, PM_DEVICE(dip), comp, level))
3014 comp, level, 1));
3019 POWERING_ON(old_level, level))
3021 ret = pm_phc_impl(dip, comp, level, 1);
3024 comp == 0) && level == 0 &&
3039 (!PM_ISBC(dip) || comp == 0) && POWERING_ON(old_level, level))
3041 ret = pm_phc_impl(dip, comp, level, 1);
3043 if ((!PM_ISBC(dip) || comp == 0) && level == 0 &&
3093 pm_phc_impl(dev_info_t *dip, int comp, int level, int notify)
3107 /* Must use "official" power level for this test. */
3114 if (level == old_level) {
3116 "level=%d\n", pmf, PM_DEVICE(dip), comp, level))
3126 power_req.req.ppm_notify_level_req.new_level = level;
3131 pmf, PM_DEVICE(dip), level))
3136 incr = calc_cfb_comps_incr(dip, comp, old_level, level);
3142 comp, old_level, level, pm_cfb_comps_off))
3145 e_pm_set_cur_pwr(dip, PM_CP(dip, comp), level);
3150 pm_notify_parent(dip, pdip, comp, old_level, level);
3151 (void) pm_check_and_resume(dip, comp, old_level, level);
3158 if (POWERING_OFF(old_level, level)) {
3176 if (POWERING_ON(old_level, level)) {
3200 if (notify && (level != old_level) && pm_watchers()) {
3202 pm_enqueue_notify(PSC_HAS_CHANGED, dip, comp, level, old_level,
3606 * Fetches the current power level. Return DDI_SUCCESS or DDI_FAILURE.
3649 * Compute next lower component power level given power index.
3668 * component's power level is only changed if it's current power level
3672 pm_update_maxpower(dev_info_t *dip, int comp, int level)
3679 !e_pm_valid_power(dip, comp, level)) {
3681 "comp=%d level=%d\n", pmf, PM_DEVICE(dip), comp, level))
3685 e_pm_set_max_power(dip, comp, level);
3687 if (pm_set_power(dip, comp, level, PM_LEVEL_DOWNONLY,
3876 compp->pmc_numlevels = level; \
3877 compp->pmc_lnames = kmem_alloc(level * sizeof (char *), KM_SLEEP); \
3878 compp->pmc_lvals = kmem_alloc(level * sizeof (int), KM_SLEEP); \
3879 compp->pmc_thresh = kmem_alloc(level * sizeof (int), KM_SLEEP); \
3881 for (j = 0; j < level; j++) { \
3988 e_pm_set_max_power(dev_info_t *dip, int component_number, int level)
3990 PM_CP(dip, component_number)->pmc_norm_pwr = level;
4052 int i, j, level, components = 0;
4089 level = 0;
4098 if (level == 0) { /* no level spec'd */
4099 PMD(PMD_ERROR, ("%s: no level spec'd\n",
4103 np[npi++] = lvals[level - 1];
4126 level = 0;
4127 } else { /* better be power level <num>=<name> */
4132 (cp = pm_parsenum(cp, &lvals[level])) == NULL) {
4144 lszs[level] = strlen(cp) + 1;
4145 size += lszs[level];
4146 lnames[level] = cp; /* points into prop string */
4147 level++;
4150 np[npi++] = lvals[level - 1];
4151 if (level == 0) { /* ended with a name */
4160 * array of them, but we can just copy the top level and leave
4280 int level, comp; /* loop counters */
4303 for (level = 1; level < pmc->pmc_numlevels;
4304 level++) {
4305 pmc->pmc_thresh[level] = thresh;
4374 for (level = 1; level < pmc->pmc_numlevels; level++) {
4375 pmc->pmc_thresh[level] = thresh;
4382 for (level = 1; level < pmc->pmc_numlevels; level++) {
4384 "comp=%d, level=%d, %d\n", pmf, PM_DEVICE(dip),
4385 comp, level, pmc->pmc_thresh[level]))
4393 level = 1;
4403 if (level < pmc->pmc_numlevels) {
4404 pmc->pmc_thresh[level] += 1;
4409 level++;
4414 for (level = 1; level < pmc->pmc_numlevels; level++) {
4416 "comp=%d level=%d, %d\n", pmf, PM_DEVICE(dip),
4417 comp, level, pmc->pmc_thresh[level]))
4440 * pm driver to bring the device component 'pm_cmpt' to power level 'pm_level'.
4454 ddi_dev_is_needed(dev_info_t *dip, int cmpt, int level)
4456 return (pm_raise_power(dip, cmpt, level));
4471 request.req.set_power_req.level = pm_level;
4681 pm_set_normal_power(dev_info_t *dip, int comp, int level)
4692 "level=%d\n", pmf, PM_DEVICE(dip), comp, level))
4693 e_pm_set_max_power(dip, comp, level);
4694 e_pm_default_levels(dip, PM_CP(dip, comp), level);
4796 * (or at least notified of) their child node's power level transitions.
4845 * The interface for doing the actual power level changes is now
5501 * External interface to sanity-check a power level.
5504 pm_valid_power(dev_info_t *dip, int comp, int level)
5508 if (comp >= 0 && comp < PM_NUMCMPTS(dip) && level >= 0)
5509 return (e_pm_valid_power(dip, comp, level));
5511 PMD(PMD_FAIL, ("%s: comp=%d, ncomp=%d, level=%d\n",
5512 pmf, comp, PM_NUMCMPTS(dip), level))
5568 * Returns true if the process is interested in power level changes (has issued
5877 * To be called when changing the power level of a component of a device.
6014 * Try to take the lock for changing the power level of a component.
6549 * Set the power level of the indicated device to unknown (if it is not a
7727 * bring up the frame buffer power from above lock level. So if we need to,
7813 * Must be called below lock level!
7861 * Trigger a low level interrupt to power up console frame buffer.
7872 * the console will cause a high level interrupt and go to debug_enter.
7880 panic(panicstr); /* does a power up at any intr level */
8080 "to restore power level of "
8426 * to its normal level
8738 * Since we don't know what the actual power level is,
8740 * component and level is changing.
8753 PMD(PMD_SET, ("%s: requested level is higher than normal.\n",
8766 PMD(PMD_SET, ("%s: current level is already "
8767 "at or above the requested level.\n", pmf))
8774 /* specific level request */
8776 PMD(PMD_SET, ("%s: current level is already "
8777 "at the requested level.\n", pmf))
8828 PMD(PMD_SET, ("%s: current level is already at "
8829 "or below the requested level.\n", pmf))
8973 * Update the old power level in the bus power structure with the
8974 * actual power level before the transition was made to the new level.
9015 * gives it up or makes the requested power level change, unless