of/address: merge of_iomap()
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.likely@secretlab.ca> Acked-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> CC: Michal Simek <monstr@monstr.eu> CC: Stephen Rothwell <sfr@canb.auug.org.au>
This commit is contained in:
@@ -20,6 +20,7 @@
|
|||||||
#ifndef __ASSEMBLY__
|
#ifndef __ASSEMBLY__
|
||||||
|
|
||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
|
#include <linux/of_address.h>
|
||||||
#include <linux/of_irq.h>
|
#include <linux/of_irq.h>
|
||||||
#include <linux/of_fdt.h>
|
#include <linux/of_fdt.h>
|
||||||
#include <linux/proc_fs.h>
|
#include <linux/proc_fs.h>
|
||||||
@@ -103,15 +104,6 @@ extern const void *of_get_mac_address(struct device_node *np);
|
|||||||
struct pci_dev;
|
struct pci_dev;
|
||||||
extern int of_irq_map_pci(struct pci_dev *pdev, struct of_irq *out_irq);
|
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 /* __ASSEMBLY__ */
|
||||||
#endif /* __KERNEL__ */
|
#endif /* __KERNEL__ */
|
||||||
#endif /* _ASM_MICROBLAZE_PROM_H */
|
#endif /* _ASM_MICROBLAZE_PROM_H */
|
||||||
|
@@ -681,14 +681,3 @@ const void *of_get_mac_address(struct device_node *np)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(of_get_mac_address);
|
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);
|
|
||||||
|
@@ -18,6 +18,7 @@
|
|||||||
*/
|
*/
|
||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
#include <linux/of_fdt.h>
|
#include <linux/of_fdt.h>
|
||||||
|
#include <linux/of_address.h>
|
||||||
#include <linux/of_irq.h>
|
#include <linux/of_irq.h>
|
||||||
#include <linux/proc_fs.h>
|
#include <linux/proc_fs.h>
|
||||||
#include <linux/platform_device.h>
|
#include <linux/platform_device.h>
|
||||||
@@ -119,14 +120,5 @@ extern const void *of_get_mac_address(struct device_node *np);
|
|||||||
struct pci_dev;
|
struct pci_dev;
|
||||||
extern int of_irq_map_pci(struct pci_dev *pdev, struct of_irq *out_irq);
|
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 /* __KERNEL__ */
|
||||||
#endif /* _POWERPC_PROM_H */
|
#endif /* _POWERPC_PROM_H */
|
||||||
|
@@ -715,14 +715,3 @@ const void *of_get_mac_address(struct device_node *np)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(of_get_mac_address);
|
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);
|
|
||||||
|
@@ -6,6 +6,10 @@ config OF_DYNAMIC
|
|||||||
def_bool y
|
def_bool y
|
||||||
depends on OF && PPC_OF
|
depends on OF && PPC_OF
|
||||||
|
|
||||||
|
config OF_ADDRESS
|
||||||
|
def_bool y
|
||||||
|
depends on OF && !SPARC
|
||||||
|
|
||||||
config OF_IRQ
|
config OF_IRQ
|
||||||
def_bool y
|
def_bool y
|
||||||
depends on OF && !SPARC
|
depends on OF && !SPARC
|
||||||
|
@@ -1,5 +1,6 @@
|
|||||||
obj-y = base.o
|
obj-y = base.o
|
||||||
obj-$(CONFIG_OF_FLATTREE) += fdt.o
|
obj-$(CONFIG_OF_FLATTREE) += fdt.o
|
||||||
|
obj-$(CONFIG_OF_ADDRESS) += address.o
|
||||||
obj-$(CONFIG_OF_IRQ) += irq.o
|
obj-$(CONFIG_OF_IRQ) += irq.o
|
||||||
obj-$(CONFIG_OF_DEVICE) += device.o platform.o
|
obj-$(CONFIG_OF_DEVICE) += device.o platform.o
|
||||||
obj-$(CONFIG_OF_GPIO) += gpio.o
|
obj-$(CONFIG_OF_GPIO) += gpio.o
|
||||||
|
22
drivers/of/address.c
Normal file
22
drivers/of/address.c
Normal file
@@ -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);
|
9
include/linux/of_address.h
Normal file
9
include/linux/of_address.h
Normal file
@@ -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 */
|
||||||
|
|
Reference in New Issue
Block a user