This patch completely refactors DMA operations for 64 bits powerpc. 32 bits is untouched for now. We use the new dev_archdata structure to add the dma operations pointer and associated data to struct device. While at it, we also add the OF node pointer and numa node. In the future, we might want to look into merging that with pci_dn as well. The old vio, pci-iommu and pci-direct DMA ops are gone. They are now replaced by a set of generic iommu and direct DMA ops (non PCI specific) that can be used by bus types. The toplevel implementation is now inline. Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: Paul Mackerras <paulus@samba.org>
36 lines
1.1 KiB
C
36 lines
1.1 KiB
C
#ifndef _ASM_POWERPC_OF_DEVICE_H
|
|
#define _ASM_POWERPC_OF_DEVICE_H
|
|
#ifdef __KERNEL__
|
|
|
|
#include <linux/device.h>
|
|
#include <linux/mod_devicetable.h>
|
|
#include <asm/prom.h>
|
|
|
|
|
|
/*
|
|
* The of_device is a kind of "base class" that is a superset of
|
|
* struct device for use by devices attached to an OF node and
|
|
* probed using OF properties
|
|
*/
|
|
struct of_device
|
|
{
|
|
struct device_node *node; /* to be obsoleted */
|
|
u64 dma_mask; /* DMA mask */
|
|
struct device dev; /* Generic device interface */
|
|
};
|
|
#define to_of_device(d) container_of(d, struct of_device, dev)
|
|
|
|
extern const struct of_device_id *of_match_node(
|
|
const struct of_device_id *matches, const struct device_node *node);
|
|
extern const struct of_device_id *of_match_device(
|
|
const struct of_device_id *matches, const struct of_device *dev);
|
|
|
|
extern struct of_device *of_dev_get(struct of_device *dev);
|
|
extern void of_dev_put(struct of_device *dev);
|
|
|
|
extern int of_device_register(struct of_device *ofdev);
|
|
extern void of_device_unregister(struct of_device *ofdev);
|
|
extern void of_release_dev(struct device *dev);
|
|
|
|
#endif /* __KERNEL__ */
|
|
#endif /* _ASM_POWERPC_OF_DEVICE_H */
|