status = hbg_hw_get_irq_status(priv); for (i = 0; i < priv->vectors.info_array_len; i++) {
info = &priv->vectors.info_array[i]; if (status & info->mask) { if (!hbg_hw_irq_is_enabled(priv, info->mask)) continue;
int hbg_irq_init(struct hbg_priv *priv)
{ struct hbg_vector *vectors = &priv->vectors; struct device *dev = &priv->pdev->dev; int ret, id;
u32 i;
/* used pcim_enable_device(), so the vectors become device managed */
ret = pci_alloc_irq_vectors(priv->pdev, HBG_VECTOR_NUM, HBG_VECTOR_NUM,
PCI_IRQ_MSI | PCI_IRQ_MSIX); if (ret < 0) return dev_err_probe(dev, ret, "failed to allocate vectors\n");
if (ret != HBG_VECTOR_NUM) return dev_err_probe(dev, -EINVAL, "requested %u MSI, but allocated %d MSI\n",
HBG_VECTOR_NUM, ret);
/* mdio irq not requested, so the number of requested interrupts * is HBG_VECTOR_NUM - 1.
*/ for (i = 0; i < HBG_VECTOR_NUM - 1; i++) {
id = pci_irq_vector(priv->pdev, i); if (id < 0) return dev_err_probe(dev, id, "failed to get irq id\n");
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.