/* Get memory resource */
addr = devm_platform_ioremap_resource(pdev, 0); if (IS_ERR(addr)) return PTR_ERR(addr);
if (pdev->dev.of_node) {
plat_dat = devm_kzalloc(&pdev->dev, sizeof(struct sxgbe_plat_data),
GFP_KERNEL); if (!plat_dat) return -ENOMEM;
ret = sxgbe_probe_config_dt(pdev, plat_dat); if (ret) {
pr_err("%s: main dt probe failed\n", __func__); return ret;
}
}
priv = sxgbe_drv_probe(&(pdev->dev), plat_dat, addr); if (!priv) {
pr_err("%s: main driver probe failed\n", __func__); goto err_out;
}
/* Get the SXGBE common INT information */
priv->irq = irq_of_parse_and_map(node, 0); if (priv->irq <= 0) {
dev_err(dev, "sxgbe common irq parsing failed\n"); goto err_drv_remove;
}
/* Get MAC address if available (DT) */
of_get_ethdev_address(node, priv->dev);
/* Get the TX/RX IRQ numbers */ for (i = 0, chan = 1; i < SXGBE_TX_QUEUES; i++) {
priv->txq[i]->irq_no = irq_of_parse_and_map(node, chan++); if (priv->txq[i]->irq_no <= 0) {
dev_err(dev, "sxgbe tx irq parsing failed\n"); goto err_tx_irq_unmap;
}
}
for (i = 0; i < SXGBE_RX_QUEUES; i++) {
priv->rxq[i]->irq_no = irq_of_parse_and_map(node, chan++); if (priv->rxq[i]->irq_no <= 0) {
dev_err(dev, "sxgbe rx irq parsing failed\n"); goto err_rx_irq_unmap;
}
}
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.