Hello Russell,

On Sat, 14 Jun 2008, Russell King - ARM Linux wrote:

> On Fri, Jun 06, 2008 at 06:30:53PM -0700, Tony Lindgren wrote:
> > omap_chip is set in mach-omap2/id.c by _set_omap_chip(). Other
> > code should use the omap_chip_is() function to test against omap_chip.
> 
> > +/**
> > + * omap_chip_is - test whether currently running OMAP matches a chip type
> > + * @oc: omap_chip_t to test against
> > + *
> > + * Test whether the currently-running OMAP chip matches the supplied
> > + * chip type 'oc'.  Returns 1 upon a match; 0 upon failure.
> > + */
> > +int omap_chip_is(struct omap_chip_id oci)
> > +{
> > +   return (oci.oc & omap_chip.oc) ? 1 : 0;
> > +}
> > +EXPORT_SYMBOL(omap_chip_is);
> 
> I've not seen any use cases for this function, so I don't know how it's
> intended to be used.  However, is it really sensible for this to take a
> structure rather than just a value?

It was created as a structure so the size of the underlying bitmask can be 
increased later without patching all of the structure definitions that use 
it in other code.  (Originally it was a typedef.)  Here's a basic use 
case:

struct foo {
        ...
        struct omap_chip_id omap_chip;
};

static const struct foo foo_instance_omap2420 = {
        ...
        .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420)
};

static const struct foo foo_instance_omap3430 = {
        ...
        .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
};

static const struct foo *foo_instances[] = {
        &foo_instance_omap2420,
        &foo_instance_omap3430,
        NULL
};

void fn(void) {
        for (p = foo_instances; p; p++) {
                if (omap_chip_is(p->omap_chip) 
                        pr_debug("Chip type matches - use this structure");
}


- Paul

--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to