On 04/17/2011 12:01 PM, Kevin Cernekee wrote:
MIPS Linux is unique in that it uses a "const struct pci_dev *" argument
to discourage bad coding practices in pcibios_map_irq(). Add a cast so
that this warning goes away:
arch/mips/pci/pci.c: In function 'pcibios_init':
arch/mips/pci/pci.c:165:45: warning: passing argument 2 of 'pci_fixup_irqs' from incompatible pointer type
include/linux/pci.h:856:6: note: expected 'int (*)(struct pci_dev *, u8, u8)' but argument is of type 'struct pci_dev *'
Signed-off-by: Kevin Cernekee<cernekee@xxxxxxxxx>
---
Reference:
http://www.mail-archive.com/gnewsense-dev@xxxxxxxxxx/msg00706.html
It's been two years since the original discussion, and the warning is
still there. It is now the only warning left in my kernel build.
I was hoping we could get this resolved for good (one way or another).
arch/mips/pci/pci.c | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/arch/mips/pci/pci.c b/arch/mips/pci/pci.c
index 33bba7b..9a35cd6 100644
--- a/arch/mips/pci/pci.c
+++ b/arch/mips/pci/pci.c
@@ -157,7 +157,8 @@ static int __init pcibios_init(void)
for (hose = hose_head; hose; hose = hose->next)
pcibios_scanbus(hose);
- pci_fixup_irqs(pci_common_swizzle, pcibios_map_irq);
+ pci_fixup_irqs(pci_common_swizzle,
+ (int (*)(struct pci_dev *, u8, u8))pcibios_map_irq);
NAK.
I think Ralf's idea in the e-mail you referenced is the proper approach.
Change pci_fixup_irqs(...) to take a 'const struct pci_dev *' instead.
There is a lot of work going on in the kernel to constify things. This
should be fairly easy to get accepted.
The alternative is to change all the pcibios_map_irq to match what is
expected by pci_fixup_irqs().
David Daney
pci_initialized = 1;