mcan_class = m_can_class_allocate_dev(&pdev->dev, sizeof(struct m_can_plat_priv)); if (!mcan_class) return -ENOMEM;
priv = cdev_to_priv(mcan_class);
ret = m_can_class_get_clocks(mcan_class); if (ret) goto probe_fail;
addr = devm_platform_ioremap_resource_byname(pdev, "m_can"); if (IS_ERR(addr)) {
ret = PTR_ERR(addr); goto probe_fail;
}
if (device_property_present(mcan_class->dev, "interrupts") ||
device_property_present(mcan_class->dev, "interrupt-names")) {
irq = platform_get_irq_byname(pdev, "int0"); if (irq < 0) {
ret = irq; goto probe_fail;
}
}
/* message ram could be shared */
res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "message_ram"); if (!res) {
ret = -ENODEV; goto probe_fail;
}
mram_addr = devm_ioremap(&pdev->dev, res->start, resource_size(res)); if (!mram_addr) {
ret = -ENOMEM; goto probe_fail;
}
transceiver = devm_phy_optional_get(&pdev->dev, NULL); if (IS_ERR(transceiver)) {
ret = PTR_ERR(transceiver);
dev_err_probe(&pdev->dev, ret, "failed to get phy\n"); goto probe_fail;
}
if (transceiver)
mcan_class->can.bitrate_max = transceiver->attrs.max_link_rate;
¤ Diese beiden folgenden Angebotsgruppen bietet das Unternehmen0.14Angebot
(Wie Sie bei der Firma Beratungs- und Dienstleistungen beauftragen können 2026-10-12)
¤
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.