[Top] [All Lists]

Re: [PATCH] OF: PCI: const usage needed by MIPS

To: John Crispin <>, Ralf Baechle <>
Subject: Re: [PATCH] OF: PCI: const usage needed by MIPS
From: David Daney <>
Date: Mon, 30 Apr 2012 10:54:36 -0700
Cc: Grant Likely <>,,,
Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=20120113; h=message-id:date:from:user-agent:mime-version:to:cc:subject :references:in-reply-to:content-type:content-transfer-encoding; bh=mSVGZSvrA5pkUI9h7K6YlIGO9Se6pf82/sBq+WA5J7A=; b=OqzqIDVdNqb/l75uEYIi6uza5wlaMFTa+9dFt0xauWSfurgaKKIFbRfczgEn4IFn07 hoTh8xFoTwISrOerYbtAZ7R4gZRvzQuTtap5OclRFXabLxsB+BKqx2p77MNI3lMEXOxt qPbjFHNIxb5dPd2JyIDpR1TXmJAG1xVrka4Uiv68hO+FxxgNXtpP1NSDbWqzH6m+a6fv jik7xN/mbK1qPTpq6iP0Vz6oV46eBqfDu4J6+/ahv2/g12fVSw0YPo/5AQ36Pa9b6gg+ LIRAZDdNVl4/mHvMq8Ej0eulBdewiwVmQIXt2psbymVm4/yUanCaiFGGzGchFl3L68z1 Z71w==
In-reply-to: <>
References: <>
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv: Gecko/20101027 Fedora/3.0.10-1.fc12 Thunderbird/3.0.10
On 04/30/2012 10:46 AM, John Crispin wrote:
On MIPS we want to call of_irq_map_pci from inside

arch/mips/include/asm/pci.h:extern int pcibios_map_irq(
                                const struct pci_dev *dev, u8 slot, u8 pin);

For this to work we need to change several functions to const usage.

I think there is a mismatch on this throughout the kernel.

Properly fixing it requires touching many more places than these. Although I haven't tried it, I wouldn't be surprised if doing this caused warnings to appear in non-MIPS code.

Ralf had a patch at one point that tried to make this consistent tree-wide, but it is not yet applied.

David Daney

Signed-off-by: John Crispin<>
I am not sure which tree this should go via. Grant, can you take it ?

  drivers/of/of_pci_irq.c |    2 +-
  drivers/pci/pci.c       |    2 +-
  include/linux/of_pci.h  |    2 +-
  include/linux/pci.h     |    5 +++--
  4 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/drivers/of/of_pci_irq.c b/drivers/of/of_pci_irq.c
index 9312516..6770538 100644
--- a/drivers/of/of_pci_irq.c
+++ b/drivers/of/of_pci_irq.c
@@ -15,7 +15,7 @@
   * PCI tree until an device-node is found, at which point it will finish
   * resolving using the OF tree walking.
-int of_irq_map_pci(struct pci_dev *pdev, struct of_irq *out_irq)
+int of_irq_map_pci(const struct pci_dev *pdev, struct of_irq *out_irq)
        struct device_node *dn, *ppnode;
        struct pci_dev *ppdev;
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
index d20f133..4c79586 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -2363,7 +2363,7 @@ void pci_enable_acs(struct pci_dev *dev)
   * number is always 0 (see the Implementation Note in section of
   * the PCI Express Base Specification, Revision 2.1)
-u8 pci_swizzle_interrupt_pin(struct pci_dev *dev, u8 pin)
+u8 pci_swizzle_interrupt_pin(const struct pci_dev *dev, u8 pin)
        int slot;

diff --git a/include/linux/of_pci.h b/include/linux/of_pci.h
index f93e217..bb115de 100644
--- a/include/linux/of_pci.h
+++ b/include/linux/of_pci.h
@@ -5,7 +5,7 @@

  struct pci_dev;
  struct of_irq;
-int of_irq_map_pci(struct pci_dev *pdev, struct of_irq *out_irq);
+int of_irq_map_pci(const struct pci_dev *pdev, struct of_irq *out_irq);

  struct device_node;
  struct device_node *of_pci_find_child_device(struct device_node *parent,
diff --git a/include/linux/pci.h b/include/linux/pci.h
index e444f5b..3bbc77e 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -680,7 +680,7 @@ int __must_check pci_bus_add_device(struct pci_dev *dev);
  void pci_read_bridge_bases(struct pci_bus *child);
  struct resource *pci_find_parent_resource(const struct pci_dev *dev,
                                          struct resource *res);
-u8 pci_swizzle_interrupt_pin(struct pci_dev *dev, u8 pin);
+u8 pci_swizzle_interrupt_pin(const struct pci_dev *dev, u8 pin);
  int pci_get_interrupt_pin(struct pci_dev *dev, struct pci_dev **bridge);
  u8 pci_common_swizzle(struct pci_dev *dev, u8 *pinp);
  extern struct pci_dev *pci_dev_get(struct pci_dev *dev);
@@ -1685,7 +1685,8 @@ extern void pci_release_bus_of_node(struct pci_bus *bus);
  /* Arch may override this (weak) */
  extern struct device_node * __weak pcibios_get_phb_of_node(struct pci_bus 

-static inline struct device_node *pci_device_to_OF_node(struct pci_dev *pdev)
+static inline struct device_node *
+pci_device_to_OF_node(const struct pci_dev *pdev)
        return pdev ? pdev->dev.of_node : NULL;

<Prev in Thread] Current Thread [Next in Thread>