PCI: mobiveil: Add Header Type field check
Check the Header Type and exit from the host driver initialization if it is not in host mode. Signed-off-by: Hou Zhiqiang <Zhiqiang.Hou@nxp.com> Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> Reviewed-by: Andrew Murray <amurray@thegoodpenguin.co.uk>
This commit is contained in:
parent
029dea3cdc
commit
11d22cc395
@ -554,6 +554,16 @@ static int mobiveil_pcie_interrupt_init(struct mobiveil_pcie *pcie)
|
||||
return mobiveil_pcie_integrated_interrupt_init(pcie);
|
||||
}
|
||||
|
||||
static bool mobiveil_pcie_is_bridge(struct mobiveil_pcie *pcie)
|
||||
{
|
||||
u32 header_type;
|
||||
|
||||
header_type = mobiveil_csr_readb(pcie, PCI_HEADER_TYPE);
|
||||
header_type &= 0x7f;
|
||||
|
||||
return header_type == PCI_HEADER_TYPE_BRIDGE;
|
||||
}
|
||||
|
||||
int mobiveil_pcie_host_probe(struct mobiveil_pcie *pcie)
|
||||
{
|
||||
struct mobiveil_root_port *rp = &pcie->rp;
|
||||
@ -569,6 +579,9 @@ int mobiveil_pcie_host_probe(struct mobiveil_pcie *pcie)
|
||||
return ret;
|
||||
}
|
||||
|
||||
if (!mobiveil_pcie_is_bridge(pcie))
|
||||
return -ENODEV;
|
||||
|
||||
/* parse the host bridge base addresses from the device tree file */
|
||||
ret = pci_parse_request_of_pci_ranges(dev, &bridge->windows,
|
||||
&bridge->dma_ranges, NULL);
|
||||
|
Loading…
Reference in New Issue
Block a user