diff mbox

[1/6] microblaze: move pci flag functions into asm-generic

Message ID 1309366019-24379-2-git-send-email-robherring2@gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Rob Herring June 29, 2011, 4:46 p.m. UTC
From: Rob Herring <rob.herring@calxeda.com>

Move pci_set_flags, pci_add_flags, and pci_has_flag into
asm-generic/pci-bridge.h so other archs can use them.

Signed-off-by: Rob Herring <rob.herring@calxeda.com>
Acked-by: Nicolas Pitre <nicolas.pitre@linaro.org>
Cc: Jesse Barnes <jbarnes@virtuousgeek.org>
---
 arch/microblaze/include/asm/pci-bridge.h |   36 +-----------------
 include/asm-generic/pci-bridge.h         |   62 ++++++++++++++++++++++++++++++
 2 files changed, 63 insertions(+), 35 deletions(-)
 create mode 100644 include/asm-generic/pci-bridge.h

Comments

Jesse Barnes June 29, 2011, 4:54 p.m. UTC | #1
On Wed, 29 Jun 2011 11:46:54 -0500
Rob Herring <robherring2@gmail.com> wrote:

> From: Rob Herring <rob.herring@calxeda.com>
> 
> Move pci_set_flags, pci_add_flags, and pci_has_flag into
> asm-generic/pci-bridge.h so other archs can use them.

Looks like something Ram may be able to re-use when adding resource
alloc behavior flags for the new bridge realloc code.
Michal Simek July 5, 2011, 10:36 a.m. UTC | #2
Hi Arnd and Ben,

Ben: how is it going with your OF pci redesigning patches?

Rob Herring wrote:
> From: Rob Herring <rob.herring@calxeda.com>
> 
> Move pci_set_flags, pci_add_flags, and pci_has_flag into
> asm-generic/pci-bridge.h so other archs can use them.
 >
> Signed-off-by: Rob Herring <rob.herring@calxeda.com>
> Acked-by: Nicolas Pitre <nicolas.pitre@linaro.org>
> Cc: Jesse Barnes <jbarnes@virtuousgeek.org>
> ---
>  arch/microblaze/include/asm/pci-bridge.h |   36 +-----------------
>  include/asm-generic/pci-bridge.h         |   62 ++++++++++++++++++++++++++++++
>  2 files changed, 63 insertions(+), 35 deletions(-)
>  create mode 100644 include/asm-generic/pci-bridge.h
> 
> diff --git a/arch/microblaze/include/asm/pci-bridge.h b/arch/microblaze/include/asm/pci-bridge.h
> index 746df91..ad1480f 100644
> --- a/arch/microblaze/include/asm/pci-bridge.h
> +++ b/arch/microblaze/include/asm/pci-bridge.h
> @@ -10,6 +10,7 @@
>  #include <linux/pci.h>
>  #include <linux/list.h>
>  #include <linux/ioport.h>
> +#include <asm-generic/pci-bridge.h>
>  
>  struct device_node;
>  
> @@ -164,40 +165,5 @@ extern struct pci_controller *pcibios_alloc_controller(struct device_node *dev);
>  extern void pcibios_free_controller(struct pci_controller *phb);
>  extern void pcibios_setup_phb_resources(struct pci_controller *hose);
>  
> -#ifdef CONFIG_PCI
> -extern unsigned int pci_flags;
> -
> -static inline void pci_set_flags(int flags)
> -{
> -	pci_flags = flags;
> -}
> -
> -static inline void pci_add_flags(int flags)
> -{
> -	pci_flags |= flags;
> -}
> -
> -static inline int pci_has_flag(int flag)
> -{
> -	return pci_flags & flag;
> -}
> -
> -extern struct list_head hose_list;
> -
> -extern int pcibios_vaddr_is_ioport(void __iomem *address);
> -#else
> -static inline int pcibios_vaddr_is_ioport(void __iomem *address)
> -{
> -	return 0;
> -}
> -
> -static inline void pci_set_flags(int flags) { }
> -static inline void pci_add_flags(int flags) { }
> -static inline int pci_has_flag(int flag)
> -{
> -	return 0;
> -}
> -#endif	/* CONFIG_PCI */
> -
>  #endif	/* __KERNEL__ */
>  #endif	/* _ASM_MICROBLAZE_PCI_BRIDGE_H */
> diff --git a/include/asm-generic/pci-bridge.h b/include/asm-generic/pci-bridge.h
> new file mode 100644
> index 0000000..4a5aca2
> --- /dev/null
> +++ b/include/asm-generic/pci-bridge.h
> @@ -0,0 +1,62 @@
> +/*
> + * This program is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU General Public License
> + * as published by the Free Software Foundation; either version
> + * 2 of the License, or (at your option) any later version.
> + */
> +#ifndef _ASM_GENERIC_PCI_BRIDGE_H
> +#define _ASM_GENERIC_PCI_BRIDGE_H
> +
> +#ifdef __KERNEL__
> +
> +enum {
> +	/* Force re-assigning all resources (ignore firmware
> +	 * setup completely)
> +	 */
> +	PCI_REASSIGN_ALL_RSRC	= 0x00000001,
> +
> +	/* Re-assign all bus numbers */
> +	PCI_REASSIGN_ALL_BUS	= 0x00000002,
> +
> +	/* Do not try to assign, just use existing setup */
> +	PCI_PROBE_ONLY		= 0x00000004,
> +
> +	/* Don't bother with ISA alignment unless the bridge has
> +	 * ISA forwarding enabled
> +	 */
> +	PCI_CAN_SKIP_ISA_ALIGN	= 0x00000008,
> +
> +	/* Enable domain numbers in /proc */
> +	PCI_ENABLE_PROC_DOMAINS	= 0x00000010,
> +	/* ... except for domain 0 */
> +	PCI_COMPAT_DOMAIN_0	= 0x00000020,
> +};
> +
> +#ifdef CONFIG_PCI
> +extern unsigned int pci_flags;
> +
> +static inline void pci_set_flags(int flags)
> +{
> +	pci_flags = flags;
> +}
> +
> +static inline void pci_add_flags(int flags)
> +{
> +	pci_flags |= flags;
> +}
> +
> +static inline int pci_has_flag(int flag)
> +{
> +	return pci_flags & flag;
> +}
> +#else
> +static inline void pci_set_flags(int flags) { }
> +static inline void pci_add_flags(int flags) { }
> +static inline int pci_has_flag(int flag)
> +{
> +	return 0;
> +}
> +#endif	/* CONFIG_PCI */
> +
> +#endif	/* __KERNEL__ */
> +#endif	/* _ASM_GENERIC_PCI_BRIDGE_H */


Rob has sent some patches about introducing asm-generic/pci-bridge.h.
Interesting is that Microblaze doesn't use that functions (pci_set/add/has_flag).
There are some points where we could use that generic functions.

Almost the same case is for ppc - especially pci_has_flag function should be 
used more.

New pci-bridge could be used just by Microblaze. For PPC you will have to change 
variable name.

Anyway. If you want to add this patch to the mainline you should change ppc code 
  and get ACK from them. I am not pci expert to tell you if is the right thing 
to do it. Ben?

Thanks,
Michal
Ram Pai July 25, 2011, 7:17 p.m. UTC | #3
On Wed, Jun 29, 2011 at 09:54:36AM -0700, Jesse Barnes wrote:
> On Wed, 29 Jun 2011 11:46:54 -0500
> Rob Herring <robherring2@gmail.com> wrote:
> 
> > From: Rob Herring <rob.herring@calxeda.com>
> > 
> > Move pci_set_flags, pci_add_flags, and pci_has_flag into
> > asm-generic/pci-bridge.h so other archs can use them.
> 
> Looks like something Ram may be able to re-use when adding resource
> alloc behavior flags for the new bridge realloc code.
> 
Hmm..these functions modify the global pci_flags variable.  If there
were macros that helped check/set/reset for flags in a given variable,
I could use them.

RP
diff mbox

Patch

diff --git a/arch/microblaze/include/asm/pci-bridge.h b/arch/microblaze/include/asm/pci-bridge.h
index 746df91..ad1480f 100644
--- a/arch/microblaze/include/asm/pci-bridge.h
+++ b/arch/microblaze/include/asm/pci-bridge.h
@@ -10,6 +10,7 @@ 
 #include <linux/pci.h>
 #include <linux/list.h>
 #include <linux/ioport.h>
+#include <asm-generic/pci-bridge.h>
 
 struct device_node;
 
@@ -164,40 +165,5 @@  extern struct pci_controller *pcibios_alloc_controller(struct device_node *dev);
 extern void pcibios_free_controller(struct pci_controller *phb);
 extern void pcibios_setup_phb_resources(struct pci_controller *hose);
 
-#ifdef CONFIG_PCI
-extern unsigned int pci_flags;
-
-static inline void pci_set_flags(int flags)
-{
-	pci_flags = flags;
-}
-
-static inline void pci_add_flags(int flags)
-{
-	pci_flags |= flags;
-}
-
-static inline int pci_has_flag(int flag)
-{
-	return pci_flags & flag;
-}
-
-extern struct list_head hose_list;
-
-extern int pcibios_vaddr_is_ioport(void __iomem *address);
-#else
-static inline int pcibios_vaddr_is_ioport(void __iomem *address)
-{
-	return 0;
-}
-
-static inline void pci_set_flags(int flags) { }
-static inline void pci_add_flags(int flags) { }
-static inline int pci_has_flag(int flag)
-{
-	return 0;
-}
-#endif	/* CONFIG_PCI */
-
 #endif	/* __KERNEL__ */
 #endif	/* _ASM_MICROBLAZE_PCI_BRIDGE_H */
diff --git a/include/asm-generic/pci-bridge.h b/include/asm-generic/pci-bridge.h
new file mode 100644
index 0000000..4a5aca2
--- /dev/null
+++ b/include/asm-generic/pci-bridge.h
@@ -0,0 +1,62 @@ 
+/*
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+#ifndef _ASM_GENERIC_PCI_BRIDGE_H
+#define _ASM_GENERIC_PCI_BRIDGE_H
+
+#ifdef __KERNEL__
+
+enum {
+	/* Force re-assigning all resources (ignore firmware
+	 * setup completely)
+	 */
+	PCI_REASSIGN_ALL_RSRC	= 0x00000001,
+
+	/* Re-assign all bus numbers */
+	PCI_REASSIGN_ALL_BUS	= 0x00000002,
+
+	/* Do not try to assign, just use existing setup */
+	PCI_PROBE_ONLY		= 0x00000004,
+
+	/* Don't bother with ISA alignment unless the bridge has
+	 * ISA forwarding enabled
+	 */
+	PCI_CAN_SKIP_ISA_ALIGN	= 0x00000008,
+
+	/* Enable domain numbers in /proc */
+	PCI_ENABLE_PROC_DOMAINS	= 0x00000010,
+	/* ... except for domain 0 */
+	PCI_COMPAT_DOMAIN_0	= 0x00000020,
+};
+
+#ifdef CONFIG_PCI
+extern unsigned int pci_flags;
+
+static inline void pci_set_flags(int flags)
+{
+	pci_flags = flags;
+}
+
+static inline void pci_add_flags(int flags)
+{
+	pci_flags |= flags;
+}
+
+static inline int pci_has_flag(int flag)
+{
+	return pci_flags & flag;
+}
+#else
+static inline void pci_set_flags(int flags) { }
+static inline void pci_add_flags(int flags) { }
+static inline int pci_has_flag(int flag)
+{
+	return 0;
+}
+#endif	/* CONFIG_PCI */
+
+#endif	/* __KERNEL__ */
+#endif	/* _ASM_GENERIC_PCI_BRIDGE_H */