[openib-general] [PATCH 1/6] Add pci_find_ht_capability() for finding Hypertransport capabilities
Segher Boessenkool
segher at kernel.crashing.org
Thu Nov 9 00:01:58 PST 2006
> +int pci_find_next_ht_capability(struct pci_dev *dev, int pos, int
> ht_cap)
> +{
> + int rc;
> + u8 cap, mask;
> +
> + if (ht_cap == HT_CAPTYPE_SLAVE || ht_cap == HT_CAPTYPE_HOST)
> + mask = HT_3BIT_CAP_MASK;
> + else
> + mask = HT_5BIT_CAP_MASK;
> +
+ pos = pci_find_next_capability(dev, pos, PCI_CAP_ID_HT);
or the caller will loop forever if a second same type HT cap is found.
> + while (pos) {
> + rc = pci_read_config_byte(dev, pos + 3, &cap);
> + if (rc != PCIBIOS_SUCCESSFUL)
> + return 0;
> +
> + if ((cap & mask) == ht_cap)
> + return pos;
> +
> + pos = pci_find_next_capability(dev, pos, PCI_CAP_ID_HT);
> + }
> +
> + return 0;
> +}
Segher
More information about the general
mailing list