/* Try to find the app ID, skip device if not found */
ret = qcom_scm_qseecom_app_get_id(desc->app_name, &app_id); if (ret) return ret == -ENOENT ? 0 : ret;
dev_info(&qseecom_dev->dev, "setting up client for %s\n", desc->app_name);
/* Allocate and set-up the client device */
client = kzalloc(sizeof(*client), GFP_KERNEL); if (!client) return -ENOMEM;
ret = auxiliary_device_init(&client->aux_dev); if (ret) {
kfree(client); return ret;
}
ret = auxiliary_device_add(&client->aux_dev); if (ret) {
auxiliary_device_uninit(&client->aux_dev); return ret;
}
ret = devm_add_action_or_reset(&qseecom_dev->dev, qseecom_client_remove, client); if (ret) return ret;
return 0;
}
/* * List of supported applications. One client device will be created per entry, * assuming the app has already been loaded (usually by firmware bootloaders) * and its ID can be queried successfully.
*/ staticconststruct qseecom_app_desc qcom_qseecom_apps[] = {
{ "qcom.tz.uefisecapp", "uefisecapp" },
};
staticint qcom_qseecom_probe(struct platform_device *qseecom_dev)
{ int ret; int i;
/* Set up client devices for each base application */ for (i = 0; i < ARRAY_SIZE(qcom_qseecom_apps); i++) {
ret = qseecom_client_register(qseecom_dev, &qcom_qseecom_apps[i]); if (ret) return ret;
}
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.