Skip to content

Commit d1d6a0c

Browse files
Daire McNamaraLorenzo Pieralisi
authored andcommitted
PCI: microchip: Enable event handlers to access bridge and control pointers
Minor re-organisation so that event handlers can access both a pointer to the bridge area of the PCIe Root Port and the control area of the PCIe Root Port. Link: https://lore.kernel.org/r/20230728131401.1615724-5-daire.mcnamara@microchip.com Signed-off-by: Daire McNamara <daire.mcnamara@microchip.com> Signed-off-by: Lorenzo Pieralisi <lpieralisi@kernel.org> Reviewed-by: Conor Dooley <conor.dooley@microchip.com>
1 parent 4d6bf4c commit d1d6a0c

File tree

1 file changed

+16
-15
lines changed

1 file changed

+16
-15
lines changed

drivers/pci/controller/pcie-microchip-host.c

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -654,9 +654,10 @@ static inline u32 reg_to_event(u32 reg, struct event_map field)
654654
return (reg & field.reg_mask) ? BIT(field.event_bit) : 0;
655655
}
656656

657-
static u32 pcie_events(void __iomem *addr)
657+
static u32 pcie_events(struct mc_pcie *port)
658658
{
659-
u32 reg = readl_relaxed(addr);
659+
void __iomem *ctrl_base_addr = port->axi_base_addr + MC_PCIE_CTRL_ADDR;
660+
u32 reg = readl_relaxed(ctrl_base_addr + PCIE_EVENT_INT);
660661
u32 val = 0;
661662
int i;
662663

@@ -666,9 +667,10 @@ static u32 pcie_events(void __iomem *addr)
666667
return val;
667668
}
668669

669-
static u32 sec_errors(void __iomem *addr)
670+
static u32 sec_errors(struct mc_pcie *port)
670671
{
671-
u32 reg = readl_relaxed(addr);
672+
void __iomem *ctrl_base_addr = port->axi_base_addr + MC_PCIE_CTRL_ADDR;
673+
u32 reg = readl_relaxed(ctrl_base_addr + SEC_ERROR_INT);
672674
u32 val = 0;
673675
int i;
674676

@@ -678,9 +680,10 @@ static u32 sec_errors(void __iomem *addr)
678680
return val;
679681
}
680682

681-
static u32 ded_errors(void __iomem *addr)
683+
static u32 ded_errors(struct mc_pcie *port)
682684
{
683-
u32 reg = readl_relaxed(addr);
685+
void __iomem *ctrl_base_addr = port->axi_base_addr + MC_PCIE_CTRL_ADDR;
686+
u32 reg = readl_relaxed(ctrl_base_addr + DED_ERROR_INT);
684687
u32 val = 0;
685688
int i;
686689

@@ -690,9 +693,10 @@ static u32 ded_errors(void __iomem *addr)
690693
return val;
691694
}
692695

693-
static u32 local_events(void __iomem *addr)
696+
static u32 local_events(struct mc_pcie *port)
694697
{
695-
u32 reg = readl_relaxed(addr);
698+
void __iomem *bridge_base_addr = port->axi_base_addr + MC_PCIE_BRIDGE_ADDR;
699+
u32 reg = readl_relaxed(bridge_base_addr + ISTATUS_LOCAL);
696700
u32 val = 0;
697701
int i;
698702

@@ -704,15 +708,12 @@ static u32 local_events(void __iomem *addr)
704708

705709
static u32 get_events(struct mc_pcie *port)
706710
{
707-
void __iomem *bridge_base_addr =
708-
port->axi_base_addr + MC_PCIE_BRIDGE_ADDR;
709-
void __iomem *ctrl_base_addr = port->axi_base_addr + MC_PCIE_CTRL_ADDR;
710711
u32 events = 0;
711712

712-
events |= pcie_events(ctrl_base_addr + PCIE_EVENT_INT);
713-
events |= sec_errors(ctrl_base_addr + SEC_ERROR_INT);
714-
events |= ded_errors(ctrl_base_addr + DED_ERROR_INT);
715-
events |= local_events(bridge_base_addr + ISTATUS_LOCAL);
713+
events |= pcie_events(port);
714+
events |= sec_errors(port);
715+
events |= ded_errors(port);
716+
events |= local_events(port);
716717

717718
return events;
718719
}

0 commit comments

Comments
 (0)