On Mon, 10 Aug 2009 11:30:24 -0700 David Daney <ddaney@xxxxxxxxxxxxxxxxxx> wrote: > Add a platform device for the Octeon Random Number Generator (RNG). > > ... > > device_initcall(octeon_cf_device_init); > + > +/* Octeon Random Number Generator. */ > +static int __init octeon_rng_device_init(void) > +{ > + struct platform_device *pd; > + struct resource rng_resources[2]; > + unsigned int res_count; > + int ret = 0; > + > + memset(rng_resources, 0, sizeof(rng_resources)); > + res_count = 0; > + rng_resources[res_count].flags = IORESOURCE_MEM; > + rng_resources[res_count].start = XKPHYS_TO_PHYS(CVMX_RNM_CTL_STATUS); > + rng_resources[res_count].end = rng_resources[res_count].start + 0xf; > + res_count++; > + > + rng_resources[res_count].flags = IORESOURCE_MEM; > + rng_resources[res_count].start = cvmx_build_io_address(8, 0); > + rng_resources[res_count].end = rng_resources[res_count].start + 0x7; > + res_count++; You could do strut resource rng_resources[2] = { { .flags = IORESOURCE_MEM, .start = XKPHYS_TO_PHYS(CVMX_RNM_CTL_STATUS), {etc} here. > + pd = platform_device_alloc("octeon_rng", -1); > + if (!pd) { > + ret = -ENOMEM; > + goto out; > + } > + > + ret = platform_device_add_resources(pd, rng_resources, res_count); use ARRAY_SIZE() here. > + if (ret) > + goto fail; > + > + ret = platform_device_add(pd); > + if (ret) > + goto fail; > + > + return ret; > +fail: > + platform_device_put(pd); > + > +out: > + return ret; > +} Or not bother ;) It doesn't make any difference. > --- /dev/null > +++ b/arch/mips/include/asm/octeon/cvmx-rnm-defs.h > > ... > > + uint64_t u64; > > ... > This file should include types.h (at least).