Skip to content

Commit

Permalink
PCI: artpec6: Pass device-specific struct to internal functions
Browse files Browse the repository at this point in the history
Only interfaces used from outside the driver, e.g., those called by the
DesignWare core, need to accept pointers to the generic struct pcie_port.
Internal interfaces can accept pointers to the device-specific struct,
which makes them more straightforward.  No functional change intended.

Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Acked-by: Jesper Nilsson <jesper.nilsson@axis.com>
  • Loading branch information
Bjorn Helgaas committed Oct 12, 2016
1 parent acaa88e commit b6f5f43
Showing 1 changed file with 15 additions and 9 deletions.
24 changes: 15 additions & 9 deletions drivers/pci/host/pcie-artpec6.c
Original file line number Diff line number Diff line change
Expand Up @@ -78,9 +78,9 @@ static void artpec6_pcie_writel(struct artpec6_pcie *artpec6_pcie, u32 offset, u
regmap_write(artpec6_pcie->regmap, offset, val);
}

static int artpec6_pcie_establish_link(struct pcie_port *pp)
static int artpec6_pcie_establish_link(struct artpec6_pcie *artpec6_pcie)
{
struct artpec6_pcie *artpec6_pcie = to_artpec6_pcie(pp);
struct pcie_port *pp = &artpec6_pcie->pp;
u32 val;
unsigned int retries;

Expand Down Expand Up @@ -165,16 +165,20 @@ static int artpec6_pcie_establish_link(struct pcie_port *pp)
return -ETIMEDOUT;
}

static void artpec6_pcie_enable_interrupts(struct pcie_port *pp)
static void artpec6_pcie_enable_interrupts(struct artpec6_pcie *artpec6_pcie)
{
struct pcie_port *pp = &artpec6_pcie->pp;

if (IS_ENABLED(CONFIG_PCI_MSI))
dw_pcie_msi_init(pp);
}

static void artpec6_pcie_host_init(struct pcie_port *pp)
{
artpec6_pcie_establish_link(pp);
artpec6_pcie_enable_interrupts(pp);
struct artpec6_pcie *artpec6_pcie = to_artpec6_pcie(pp);

artpec6_pcie_establish_link(artpec6_pcie);
artpec6_pcie_enable_interrupts(artpec6_pcie);
}

static struct pcie_host_ops artpec6_pcie_host_ops = {
Expand All @@ -183,14 +187,16 @@ static struct pcie_host_ops artpec6_pcie_host_ops = {

static irqreturn_t artpec6_pcie_msi_handler(int irq, void *arg)
{
struct pcie_port *pp = arg;
struct artpec6_pcie *artpec6_pcie = arg;
struct pcie_port *pp = &artpec6_pcie->pp;

return dw_handle_msi_irq(pp);
}

static int artpec6_add_pcie_port(struct pcie_port *pp,
static int artpec6_add_pcie_port(struct artpec6_pcie *artpec6_pcie,
struct platform_device *pdev)
{
struct pcie_port *pp = &artpec6_pcie->pp;
struct device *dev = pp->dev;
int ret;

Expand All @@ -204,7 +210,7 @@ static int artpec6_add_pcie_port(struct pcie_port *pp,
ret = devm_request_irq(dev, pp->msi_irq,
artpec6_pcie_msi_handler,
IRQF_SHARED | IRQF_NO_THREAD,
"artpec6-pcie-msi", pp);
"artpec6-pcie-msi", artpec6_pcie);
if (ret) {
dev_err(dev, "failed to request MSI irq\n");
return ret;
Expand Down Expand Up @@ -255,7 +261,7 @@ static int artpec6_pcie_probe(struct platform_device *pdev)
if (IS_ERR(artpec6_pcie->regmap))
return PTR_ERR(artpec6_pcie->regmap);

ret = artpec6_add_pcie_port(pp, pdev);
ret = artpec6_add_pcie_port(artpec6_pcie, pdev);
if (ret < 0)
return ret;

Expand Down

0 comments on commit b6f5f43

Please sign in to comment.