Re: [PATCH 21/21] ARM: OMAP: Add OMAP chip type structure; clean up mach-omap2/id.c

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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 majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux