On Tue, 2010-06-08 at 08:09 -0600, Grant Likely wrote: > Merge common code between Microblaze and PowerPC. This patch creates > new of_address.h and address.c files to containing address translation > and mapping routines. First routine to be moved it of_iomap() > > Signed-off-by: Grant Likely <grant.lik...@secretlab.ca> > CC: Michal Simek <mon...@monstr.eu> > CC: Wolfram Sang <w.s...@pengutronix.de> > CC: Stephen Rothwell <s...@canb.auug.org.au>
Acked-by: Benjamin Herrenschmidt <b...@kernel.crashing.org> > CC: microblaze-ucli...@itee.uq.edu.au > CC: linuxppc-...@ozlabs.org > --- > arch/microblaze/include/asm/prom.h | 10 +--------- > arch/microblaze/kernel/prom_parse.c | 11 ----------- > arch/powerpc/include/asm/prom.h | 10 +--------- > arch/powerpc/kernel/prom_parse.c | 11 ----------- > drivers/of/Kconfig | 4 ++++ > drivers/of/Makefile | 1 + > drivers/of/address.c | 22 ++++++++++++++++++++++ > include/linux/of_address.h | 9 +++++++++ > 8 files changed, 38 insertions(+), 40 deletions(-) > create mode 100644 drivers/of/address.c > create mode 100644 include/linux/of_address.h > > diff --git a/arch/microblaze/include/asm/prom.h > b/arch/microblaze/include/asm/prom.h > index 3659930..b6698ef 100644 > --- a/arch/microblaze/include/asm/prom.h > +++ b/arch/microblaze/include/asm/prom.h > @@ -20,6 +20,7 @@ > #ifndef __ASSEMBLY__ > > #include <linux/types.h> > +#include <linux/of_address.h> > #include <linux/of_irq.h> > #include <linux/of_fdt.h> > #include <linux/proc_fs.h> > @@ -107,15 +108,6 @@ extern const void *of_get_mac_address(struct device_node > *np); > struct pci_dev; > extern int of_irq_map_pci(struct pci_dev *pdev, struct of_irq *out_irq); > > -/** > - * of_iomap - Maps the memory mapped IO for a given device_node > - * @device: the device whose io range will be mapped > - * @index: index of the io range > - * > - * Returns a pointer to the mapped memory > - */ > -extern void __iomem *of_iomap(struct device_node *device, int index); > - > #endif /* __ASSEMBLY__ */ > #endif /* __KERNEL__ */ > #endif /* _ASM_MICROBLAZE_PROM_H */ > diff --git a/arch/microblaze/kernel/prom_parse.c > b/arch/microblaze/kernel/prom_parse.c > index 70c0471..5003ee8 100644 > --- a/arch/microblaze/kernel/prom_parse.c > +++ b/arch/microblaze/kernel/prom_parse.c > @@ -697,14 +697,3 @@ const void *of_get_mac_address(struct device_node *np) > return NULL; > } > EXPORT_SYMBOL(of_get_mac_address); > - > -void __iomem *of_iomap(struct device_node *np, int index) > -{ > - struct resource res; > - > - if (of_address_to_resource(np, index, &res)) > - return NULL; > - > - return ioremap(res.start, 1 + res.end - res.start); > -} > -EXPORT_SYMBOL(of_iomap); > diff --git a/arch/powerpc/include/asm/prom.h b/arch/powerpc/include/asm/prom.h > index 2440984..e0bdbc6 100644 > --- a/arch/powerpc/include/asm/prom.h > +++ b/arch/powerpc/include/asm/prom.h > @@ -18,6 +18,7 @@ > */ > #include <linux/types.h> > #include <linux/of_fdt.h> > +#include <linux/of_address.h> > #include <linux/of_irq.h> > #include <linux/proc_fs.h> > #include <linux/platform_device.h> > @@ -136,14 +137,5 @@ extern void of_irq_map_init(unsigned int flags); > struct pci_dev; > extern int of_irq_map_pci(struct pci_dev *pdev, struct of_irq *out_irq); > > -/** > - * of_iomap - Maps the memory mapped IO for a given device_node > - * @device: the device whose io range will be mapped > - * @index: index of the io range > - * > - * Returns a pointer to the mapped memory > - */ > -extern void __iomem *of_iomap(struct device_node *device, int index); > - > #endif /* __KERNEL__ */ > #endif /* _POWERPC_PROM_H */ > diff --git a/arch/powerpc/kernel/prom_parse.c > b/arch/powerpc/kernel/prom_parse.c > index ef518e3..dfb73c4 100644 > --- a/arch/powerpc/kernel/prom_parse.c > +++ b/arch/powerpc/kernel/prom_parse.c > @@ -822,14 +822,3 @@ const void *of_get_mac_address(struct device_node *np) > return NULL; > } > EXPORT_SYMBOL(of_get_mac_address); > - > -void __iomem *of_iomap(struct device_node *np, int index) > -{ > - struct resource res; > - > - if (of_address_to_resource(np, index, &res)) > - return NULL; > - > - return ioremap(res.start, 1 + res.end - res.start); > -} > -EXPORT_SYMBOL(of_iomap); > diff --git a/drivers/of/Kconfig b/drivers/of/Kconfig > index b87495e..097f42a 100644 > --- a/drivers/of/Kconfig > +++ b/drivers/of/Kconfig > @@ -6,6 +6,10 @@ config OF_DYNAMIC > def_bool y > depends on OF && PPC_OF > > +config OF_ADDRESS > + def_bool y > + depends on OF && !SPARC > + > config OF_IRQ > def_bool y > depends on OF && !SPARC > diff --git a/drivers/of/Makefile b/drivers/of/Makefile > index 3631a5e..0052c40 100644 > --- a/drivers/of/Makefile > +++ b/drivers/of/Makefile > @@ -1,5 +1,6 @@ > obj-y = base.o > obj-$(CONFIG_OF_FLATTREE) += fdt.o > +obj-$(CONFIG_OF_ADDRESS) += address.o > obj-$(CONFIG_OF_IRQ) += irq.o > obj-$(CONFIG_OF_DEVICE) += device.o platform.o > obj-$(CONFIG_OF_GPIO) += gpio.o > diff --git a/drivers/of/address.c b/drivers/of/address.c > new file mode 100644 > index 0000000..258528d > --- /dev/null > +++ b/drivers/of/address.c > @@ -0,0 +1,22 @@ > + > +#include <linux/io.h> > +#include <linux/ioport.h> > +#include <linux/of_address.h> > + > +/** > + * of_iomap - Maps the memory mapped IO for a given device_node > + * @device: the device whose io range will be mapped > + * @index: index of the io range > + * > + * Returns a pointer to the mapped memory > + */ > +void __iomem *of_iomap(struct device_node *np, int index) > +{ > + struct resource res; > + > + if (of_address_to_resource(np, index, &res)) > + return NULL; > + > + return ioremap(res.start, 1 + res.end - res.start); > +} > +EXPORT_SYMBOL(of_iomap); > diff --git a/include/linux/of_address.h b/include/linux/of_address.h > new file mode 100644 > index 0000000..570831d > --- /dev/null > +++ b/include/linux/of_address.h > @@ -0,0 +1,9 @@ > +#ifndef __OF_ADDRESS_H > +#define __OF_ADDRESS_H > +#include <linux/ioport.h> > +#include <linux/of.h> > + > +extern void __iomem *of_iomap(struct device_node *device, int index); > + > +#endif /* __OF_ADDRESS_H */ > + _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev