Skip to content

Commit

Permalink
of: kill struct of_device
Browse files Browse the repository at this point in the history
Now that the device tree node pointer has been moved out of struct
of_device and into the common struct device, there isn't anything
unique about of_device anymore.  In fact, there isn't much need
for a separate of_bus when all busses have access to OF style
probing.

arch/powerpc and arch/microblaze are moving away from using the of_bus
and using the regular platform bus instead for mmio devices.  This
patch makes of_device the same as platform_device as a stepping stone
in migrating of_platform_drivers over to the platform bus.

Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
Acked-by: David S. Miller <davem@davemloft.net>
Cc: Michal Simek <monstr@monstr.eu>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Stephen Rothwell <sfr@canb.auug.org.au>
  • Loading branch information
Grant Likely committed Jun 28, 2010
1 parent 1636f8a commit b505ff5
Show file tree
Hide file tree
Showing 7 changed files with 23 additions and 41 deletions.
10 changes: 0 additions & 10 deletions arch/microblaze/include/asm/of_device.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,16 +15,6 @@
#include <linux/device.h>
#include <linux/of.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 dev; /* Generic device interface */
struct pdev_archdata archdata;
};

extern ssize_t of_device_get_modalias(struct of_device *ofdev,
char *str, ssize_t len);

Expand Down
11 changes: 0 additions & 11 deletions arch/powerpc/include/asm/of_device.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,6 @@
#include <linux/device.h>
#include <linux/of.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 dev; /* Generic device interface */
struct pdev_archdata archdata;
};

extern struct of_device *of_device_alloc(struct device_node *np,
const char *bus_id,
struct device *parent);
Expand Down
4 changes: 2 additions & 2 deletions arch/powerpc/include/asm/smu.h
Original file line number Diff line number Diff line change
Expand Up @@ -457,8 +457,8 @@ extern void smu_poll(void);
*/
extern int smu_init(void);
extern int smu_present(void);
struct of_device;
extern struct of_device *smu_get_ofdev(void);
struct platform_device;
extern struct platform_device *smu_get_ofdev(void);


/*
Expand Down
4 changes: 2 additions & 2 deletions arch/sparc/include/asm/device.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,13 @@
#include <asm/openprom.h>

struct device_node;
struct of_device;
struct platform_device;

struct dev_archdata {
void *iommu;
void *stc;
void *host_controller;
struct of_device *op;
struct platform_device *op;
int numa_node;
};

Expand Down
14 changes: 0 additions & 14 deletions arch/sparc/include/asm/of_device.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,20 +7,6 @@
#include <linux/mod_devicetable.h>
#include <asm/openprom.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 dev;
u32 num_resources;
struct resource *resource;

struct pdev_archdata archdata;
};

extern void __iomem *of_ioremap(struct resource *res, unsigned long offset, unsigned long size, char *name);
extern void of_iounmap(struct resource *res, void __iomem *base, unsigned long size);

Expand Down
4 changes: 2 additions & 2 deletions drivers/net/niu.h
Original file line number Diff line number Diff line change
Expand Up @@ -3236,7 +3236,7 @@ struct niu_phy_ops {
int (*link_status)(struct niu *np, int *);
};

struct of_device;
struct platform_device;
struct niu {
void __iomem *regs;
struct net_device *dev;
Expand Down Expand Up @@ -3297,7 +3297,7 @@ struct niu {
struct niu_vpd vpd;
u32 eeprom_len;

struct of_device *op;
struct platform_device *op;
void __iomem *vir_regs_1;
void __iomem *vir_regs_2;
};
Expand Down
17 changes: 17 additions & 0 deletions include/linux/of_device.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,26 @@

#ifdef CONFIG_OF_DEVICE
#include <linux/device.h>
#include <linux/platform_device.h>
#include <linux/of.h>
#include <linux/mod_devicetable.h>


/*
* The of_device *was* a kind of "base class" that was a superset of
* struct device for use by devices attached to an OF node and probed
* using OF properties. However, the important bit of OF-style
* probing, namely the device node pointer, has been moved into the
* common struct device when CONFIG_OF is set to make OF-style probing
* available to all bus types. So now, just make of_device and
* platform_device equivalent so that current of_platform bus users
* can be transparently migrated over to using the platform bus.
*
* This line will go away once all references to of_device are removed
* from the kernel.
*/
#define of_device platform_device

#include <asm/of_device.h>

#define to_of_device(d) container_of(d, struct of_device, dev)
Expand Down

0 comments on commit b505ff5

Please sign in to comment.