Merge branch 'next-devicetree' of git://git.secretlab.ca/git/linux-2.6
* 'next-devicetree' of git://git.secretlab.ca/git/linux-2.6: mtd/m25p80: add support to parse the partitions by OF node of/irq: of_irq.c needs to include linux/irq.h of/mips: Cleanup some include directives/files. of/mips: Add device tree support to MIPS of/flattree: Eliminate need to provide early_init_dt_scan_chosen_arch of/device: Rework to use common platform_device_alloc() for allocating devices of/xsysace: Fix OF probing on little-endian systems of: use __be32 types for big-endian device tree data of/irq: remove references to NO_IRQ in drivers/of/platform.c of/promtree: add package-to-path support to pdt of/promtree: add of_pdt namespace to pdt code of/promtree: no longer call prom_ functions directly; use an ops structure of/promtree: make drivers/of/pdt.c no longer sparc-only sparc: break out some PROM device-tree building code out into drivers/of of/sparc: convert various prom_* functions to use phandle sparc: stop exporting openprom.h header powerpc, of_serial: Endianness issues setting up the serial ports of: MTD: Fix OF probing on little-endian systems of: GPIO: Fix OF probing on little-endian systems
This commit is contained in:
commit
51f00a471c
60 changed files with 805 additions and 422 deletions
|
|
@ -27,20 +27,19 @@ static inline int of_driver_match_device(const struct device *dev,
|
|||
extern struct platform_device *of_dev_get(struct platform_device *dev);
|
||||
extern void of_dev_put(struct platform_device *dev);
|
||||
|
||||
extern int of_device_add(struct platform_device *pdev);
|
||||
extern int of_device_register(struct platform_device *ofdev);
|
||||
extern void of_device_unregister(struct platform_device *ofdev);
|
||||
extern void of_release_dev(struct device *dev);
|
||||
|
||||
static inline void of_device_free(struct platform_device *dev)
|
||||
{
|
||||
of_release_dev(&dev->dev);
|
||||
}
|
||||
|
||||
extern ssize_t of_device_get_modalias(struct device *dev,
|
||||
char *str, ssize_t len);
|
||||
|
||||
extern int of_device_uevent(struct device *dev, struct kobj_uevent_env *env);
|
||||
|
||||
static inline void of_device_node_put(struct device *dev)
|
||||
{
|
||||
of_node_put(dev->of_node);
|
||||
}
|
||||
|
||||
#else /* CONFIG_OF_DEVICE */
|
||||
|
||||
|
|
@ -56,6 +55,8 @@ static inline int of_device_uevent(struct device *dev,
|
|||
return -ENODEV;
|
||||
}
|
||||
|
||||
static inline void of_device_node_put(struct device *dev) { }
|
||||
|
||||
#endif /* CONFIG_OF_DEVICE */
|
||||
|
||||
#endif /* _LINUX_OF_DEVICE_H */
|
||||
|
|
|
|||
|
|
@ -72,7 +72,7 @@ extern void *of_get_flat_dt_prop(unsigned long node, const char *name,
|
|||
unsigned long *size);
|
||||
extern int of_flat_dt_is_compatible(unsigned long node, const char *name);
|
||||
extern unsigned long of_get_flat_dt_root(void);
|
||||
extern void early_init_dt_scan_chosen_arch(unsigned long node);
|
||||
|
||||
extern int early_init_dt_scan_chosen(unsigned long node, const char *uname,
|
||||
int depth, void *data);
|
||||
extern void early_init_dt_check_for_initrd(unsigned long node);
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@
|
|||
struct of_irq;
|
||||
#include <linux/types.h>
|
||||
#include <linux/errno.h>
|
||||
#include <linux/irq.h>
|
||||
#include <linux/ioport.h>
|
||||
#include <linux/of.h>
|
||||
|
||||
|
|
@ -64,6 +65,9 @@ extern unsigned int irq_create_of_mapping(struct device_node *controller,
|
|||
unsigned int intsize);
|
||||
extern int of_irq_to_resource(struct device_node *dev, int index,
|
||||
struct resource *r);
|
||||
extern int of_irq_count(struct device_node *dev);
|
||||
extern int of_irq_to_resource_table(struct device_node *dev,
|
||||
struct resource *res, int nr_irqs);
|
||||
|
||||
#endif /* CONFIG_OF_IRQ */
|
||||
#endif /* CONFIG_OF */
|
||||
|
|
|
|||
45
include/linux/of_pdt.h
Normal file
45
include/linux/of_pdt.h
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
/*
|
||||
* Definitions for building a device tree by calling into the
|
||||
* Open Firmware PROM.
|
||||
*
|
||||
* Copyright (C) 2010 Andres Salomon <dilinger@queued.net>
|
||||
*
|
||||
* 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 _LINUX_OF_PDT_H
|
||||
#define _LINUX_OF_PDT_H
|
||||
|
||||
/* overridable operations for calling into the PROM */
|
||||
struct of_pdt_ops {
|
||||
/*
|
||||
* buf should be 32 bytes; return 0 on success.
|
||||
* If prev is NULL, the first property will be returned.
|
||||
*/
|
||||
int (*nextprop)(phandle node, char *prev, char *buf);
|
||||
|
||||
/* for both functions, return proplen on success; -1 on error */
|
||||
int (*getproplen)(phandle node, const char *prop);
|
||||
int (*getproperty)(phandle node, const char *prop, char *buf,
|
||||
int bufsize);
|
||||
|
||||
/* phandles are 0 if no child or sibling exists */
|
||||
phandle (*getchild)(phandle parent);
|
||||
phandle (*getsibling)(phandle node);
|
||||
|
||||
/* return 0 on success; fill in 'len' with number of bytes in path */
|
||||
int (*pkg2path)(phandle node, char *buf, const int buflen, int *len);
|
||||
};
|
||||
|
||||
extern void *prom_early_alloc(unsigned long size);
|
||||
|
||||
/* for building the device tree */
|
||||
extern void of_pdt_build_devicetree(phandle root_node, struct of_pdt_ops *ops);
|
||||
|
||||
extern void (*of_pdt_build_more)(struct device_node *dp,
|
||||
struct device_node ***nextp);
|
||||
|
||||
#endif /* _LINUX_OF_PDT_H */
|
||||
Loading…
Add table
Add a link
Reference in a new issue