staticint imx_sc_thermal_probe(struct platform_device *pdev)
{ struct imx_sc_sensor *sensor; constint *resource_id; int i, ret;
ret = imx_scu_get_handle(&thermal_ipc_handle); if (ret) return ret;
resource_id = of_device_get_match_data(&pdev->dev); if (!resource_id) return -EINVAL;
for (i = 0; resource_id[i] >= 0; i++) {
sensor = devm_kzalloc(&pdev->dev, sizeof(*sensor), GFP_KERNEL); if (!sensor) return -ENOMEM;
sensor->resource_id = resource_id[i];
sensor->tzd = devm_thermal_of_zone_register(&pdev->dev, sensor->resource_id,
sensor, &imx_sc_thermal_ops); if (IS_ERR(sensor->tzd)) { /* * Save the error value before freeing the * sensor pointer, otherwise we endup with a * use-after-free error
*/
ret = PTR_ERR(sensor->tzd);
devm_kfree(&pdev->dev, sensor);
/* * The thermal framework notifies us there is * no thermal zone description for such a * sensor id
*/ if (ret == -ENODEV) continue;
return dev_err_probe(&pdev->dev, ret, "failed to register thermal zone\n");
}
MODULE_AUTHOR("Anson Huang <Anson.Huang@nxp.com>");
MODULE_DESCRIPTION("Thermal driver for NXP i.MX SoCs with system controller");
MODULE_LICENSE("GPL v2");
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.11 Sekunden
(vorverarbeitet am 2026-04-28)
¤
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.