mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-11-01 09:13:37 +00:00
PCI: of_property: Add support for NULL pdev in of_pci_set_address()
The pdev (pointer to a struct pci_dev) parameter of of_pci_set_address() cannot be NULL. In order to use of_pci_set_address() when creating the PCI root bus node, it needs to support a NULL pdev parameter. Indeed, in the case of the PCI root bus node creation, no pdev is available and of_pci_set_address() will be used with the bridge windows. Allow to call of_pci_set_address() with a NULL pdev. Link: https://lore.kernel.org/r/20250224141356.36325-4-herve.codina@bootlin.com Signed-off-by: Herve Codina <herve.codina@bootlin.com> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> Reviewed-by: Rob Herring (Arm) <robh@kernel.org>
This commit is contained in:
parent
e2267841fe
commit
c5785a165f
1 changed files with 7 additions and 3 deletions
|
|
@ -54,9 +54,13 @@ enum of_pci_prop_compatible {
|
|||
static void of_pci_set_address(struct pci_dev *pdev, u32 *prop, u64 addr,
|
||||
u32 reg_num, u32 flags, bool reloc)
|
||||
{
|
||||
prop[0] = FIELD_PREP(OF_PCI_ADDR_FIELD_BUS, pdev->bus->number) |
|
||||
FIELD_PREP(OF_PCI_ADDR_FIELD_DEV, PCI_SLOT(pdev->devfn)) |
|
||||
FIELD_PREP(OF_PCI_ADDR_FIELD_FUNC, PCI_FUNC(pdev->devfn));
|
||||
if (pdev) {
|
||||
prop[0] = FIELD_PREP(OF_PCI_ADDR_FIELD_BUS, pdev->bus->number) |
|
||||
FIELD_PREP(OF_PCI_ADDR_FIELD_DEV, PCI_SLOT(pdev->devfn)) |
|
||||
FIELD_PREP(OF_PCI_ADDR_FIELD_FUNC, PCI_FUNC(pdev->devfn));
|
||||
} else
|
||||
prop[0] = 0;
|
||||
|
||||
prop[0] |= flags | reg_num;
|
||||
if (!reloc) {
|
||||
prop[0] |= OF_PCI_ADDR_FIELD_NONRELOC;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue