/** * DOC: IPA Resources * * The IPA manages a set of resources internally for various purposes. * A given IPA version has a fixed number of resource types, and a fixed * total number of resources of each type. "Source" resource types * are separate from "destination" resource types. * * Each version of IPA also has some number of resource groups. Each * endpoint is assigned to a resource group, and all endpoints in the * same group share pools of each type of resource. A subset of the * total resources of each type is assigned for use by each group.
*/
/* We program at most 8 source or destination resource group limits */
BUILD_BUG_ON(IPA_RESOURCE_GROUP_MAX > 8);
group_count = data->rsrc_group_src_count; if (!group_count || group_count > IPA_RESOURCE_GROUP_MAX) returnfalse;
/* Return an error if a non-zero resource limit is specified * for a resource group not supported by hardware.
*/ for (i = 0; i < data->resource_src_count; i++) { conststruct ipa_resource *resource;
resource = &data->resource_src[i]; for (j = group_count; j < IPA_RESOURCE_GROUP_MAX; j++) if (resource->limits[j].min || resource->limits[j].max) returnfalse;
}
group_count = data->rsrc_group_dst_count; if (!group_count || group_count > IPA_RESOURCE_GROUP_MAX) returnfalse;
for (i = 0; i < data->resource_dst_count; i++) { conststruct ipa_resource *resource;
resource = &data->resource_dst[i]; for (j = group_count; j < IPA_RESOURCE_GROUP_MAX; j++) if (resource->limits[j].min || resource->limits[j].max) returnfalse;
}
val = reg_encode(reg, X_MIN_LIM, xlimits->min);
val |= reg_encode(reg, X_MAX_LIM, xlimits->max); if (ylimits) {
val |= reg_encode(reg, Y_MIN_LIM, ylimits->min);
val |= reg_encode(reg, Y_MAX_LIM, ylimits->max);
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.