From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from gate.crashing.org (gate.crashing.org [63.228.1.57]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id BCB071007F0 for ; Thu, 10 Jun 2010 16:41:08 +1000 (EST) Subject: Re: [PATCH 1/5] of/address: merge of_iomap() From: Benjamin Herrenschmidt To: Grant Likely In-Reply-To: <20100608140957.25879.98286.stgit@angua> References: <20100608140917.25879.67745.stgit@angua> <20100608140957.25879.98286.stgit@angua> Content-Type: text/plain; charset="UTF-8" Date: Thu, 10 Jun 2010 16:40:53 +1000 Message-ID: <1276152053.1962.56.camel@pasglop> Mime-Version: 1.0 Cc: linuxppc-dev@ozlabs.org, Stephen Rothwell , Michal Simek , microblaze-uclinux@itee.uq.edu.au List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , 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 > CC: Michal Simek > CC: Wolfram Sang > CC: Stephen Rothwell Acked-by: Benjamin Herrenschmidt > CC: microblaze-uclinux@itee.uq.edu.au > CC: linuxppc-dev@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 > +#include > #include > #include > #include > @@ -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 > #include > +#include > #include > #include > #include > @@ -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 > +#include > +#include > + > +/** > + * 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 > +#include > + > +extern void __iomem *of_iomap(struct device_node *device, int index); > + > +#endif /* __OF_ADDRESS_H */ > +