Beispiel #1
0
int rpaphp_get_sensor_state(struct slot *slot, int *state)
{
	int rc;
	int setlevel;

	rc = rtas_get_sensor(DR_ENTITY_SENSE, slot->index, state);

	if (rc < 0) {
		if (rc == -EFAULT || rc == -EEXIST) {
			dbg("%s: slot must be power up to get sensor-state\n",
			    __func__);

			/* some slots have to be powered up
			 * before get-sensor will succeed.
			 */
			rc = rtas_set_power_level(slot->power_domain, POWER_ON,
						  &setlevel);
			if (rc < 0) {
				dbg("%s: power on slot[%s] failed rc=%d.\n",
				    __func__, slot->name, rc);
			} else {
				rc = rtas_get_sensor(DR_ENTITY_SENSE,
						     slot->index, state);
			}
		} else if (rc == -ENODEV)
			info("%s: slot is unusable\n", __func__);
		else
			err("%s failed to get sensor state\n", __func__);
	}
	return rc;
}
Beispiel #2
0
/**
 * set_power
 * @brief Sets the power level for the specified slot.
 *
 * @param domain power domain for the slot from "ibm,drc-power-domains"
 * @param level POWER_ON or POWER_OFF
 * @returns 0		Successful completion
 * @returns SPEED_ERROR	Inserted a PCI 33 MHz IOA into a PCIbus which is
 *                      operating at 66 MHz.
 * @returns HW_ERROR	Hardware error.
 * @returns SW_ERROR	Other errors.
 */
int
set_power(int domain, int level)
{
	int ret_level;

	return rtas_set_power_level(domain, level, &ret_level);
}
Beispiel #3
0
SaErrorT rtas_set_power_state(void *hnd,
                              SaHpiResourceIdT id,
                              SaHpiPowerStateT state)
{
        int setlevel, rc;

        if (state == SAHPI_POWER_OFF) {
                rc = rtas_set_power_level(0, 0, &setlevel);
                if (rc > -1 && setlevel == 0) return SA_OK;
                else if (rc > -1 && setlevel != 0) return SA_ERR_HPI_BUSY;
                else return SA_ERR_HPI_INTERNAL_ERROR;
        } else {
                return SA_ERR_HPI_INTERNAL_ERROR;
        }
}