diff options
| author | Grant Likely <grant.likely@secretlab.ca> | 2010-06-18 11:09:58 -0600 | 
|---|---|---|
| committer | Grant Likely <grant.likely@secretlab.ca> | 2010-06-28 12:41:33 -0700 | 
| commit | 1636f8ac2b08410df4766449f7c86b912443cd99 (patch) | |
| tree | 9c923c017e956779f237d4ffa51d49beb3de6d3e /arch/sparc/kernel/of_device_64.c | |
| parent | 2b07be2493681220cac4d185494a4edb0b8efd1e (diff) | |
| download | olio-linux-3.10-1636f8ac2b08410df4766449f7c86b912443cd99.tar.xz olio-linux-3.10-1636f8ac2b08410df4766449f7c86b912443cd99.zip  | |
sparc/of: Move of_device fields into struct pdev_archdata
This patch moves SPARC architecture specific data members out of
struct of_device and into the pdev_archdata structure.  The reason
for this change is to unify the struct of_device definition amongst
all the architectures.  It also remvoes the .sysdata, .slot, .portid
and .clock_freq properties because they aren't actually used by
anything.
A subsequent patch will replace struct of_device entirely with struct
platform_device and the of_platform support code will share common
routines with the platform bus (but the bus instances themselves can
remain separate).
This patch also adds 'struct resources *resource' and num_resources
to match the fields defined in struct platform_device.  After this
change, 'struct platform_device' can be used as a drop-in replacement
for 'struct of_platform'.
This change is in preparation for merging the of_platform_bus_type
with the platform_bus_type.
Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
Acked-by: David S. Miller <davem@davemloft.net>
Cc: Stephen Rothwell <sfr@canb.auug.org.au>
Diffstat (limited to 'arch/sparc/kernel/of_device_64.c')
| -rw-r--r-- | arch/sparc/kernel/of_device_64.c | 24 | 
1 files changed, 10 insertions, 14 deletions
diff --git a/arch/sparc/kernel/of_device_64.c b/arch/sparc/kernel/of_device_64.c index 1dae8079f72..5e8cbb942d3 100644 --- a/arch/sparc/kernel/of_device_64.c +++ b/arch/sparc/kernel/of_device_64.c @@ -344,6 +344,8 @@ static void __init build_device_resources(struct of_device *op,  		num_reg = PROMREG_MAX;  	} +	op->resource = op->archdata.resource; +	op->num_resources = num_reg;  	for (index = 0; index < num_reg; index++) {  		struct resource *r = &op->resource[index];  		u32 addr[OF_MAX_ADDR_CELLS]; @@ -644,31 +646,25 @@ static struct of_device * __init scan_one_device(struct device_node *dp,  	op->dev.of_node = dp; -	op->clock_freq = of_getintprop_default(dp, "clock-frequency", -					       (25*1000*1000)); -	op->portid = of_getintprop_default(dp, "upa-portid", -1); -	if (op->portid == -1) -		op->portid = of_getintprop_default(dp, "portid", -1); -  	irq = of_get_property(dp, "interrupts", &len);  	if (irq) { -		op->num_irqs = len / 4; +		op->archdata.num_irqs = len / 4;  		/* Prevent overrunning the op->irqs[] array.  */ -		if (op->num_irqs > PROMINTR_MAX) { +		if (op->archdata.num_irqs > PROMINTR_MAX) {  			printk(KERN_WARNING "%s: Too many irqs (%d), "  			       "limiting to %d.\n", -			       dp->full_name, op->num_irqs, PROMINTR_MAX); -			op->num_irqs = PROMINTR_MAX; +			       dp->full_name, op->archdata.num_irqs, PROMINTR_MAX); +			op->archdata.num_irqs = PROMINTR_MAX;  		} -		memcpy(op->irqs, irq, op->num_irqs * 4); +		memcpy(op->archdata.irqs, irq, op->archdata.num_irqs * 4);  	} else { -		op->num_irqs = 0; +		op->archdata.num_irqs = 0;  	}  	build_device_resources(op, parent); -	for (i = 0; i < op->num_irqs; i++) -		op->irqs[i] = build_one_device_irq(op, parent, op->irqs[i]); +	for (i = 0; i < op->archdata.num_irqs; i++) +		op->archdata.irqs[i] = build_one_device_irq(op, parent, op->archdata.irqs[i]);  	op->dev.parent = parent;  	op->dev.bus = &of_platform_bus_type;  |