Potential namespace problem for 'struct flash_platfrom_data'

H Hartley Sweeten hartleys at visionengravers.com
Thu Apr 29 16:35:07 EDT 2010


On Thursday, April 29, 2010 1:20 PM, Russell King wrote:
> On Thu, Apr 29, 2010 at 03:06:37PM -0500, H Hartley Sweeten wrote:
>> Hello all,
>> 
>> I was looking at an issue with a spi flash device and noticed a
>> potential namespace problem.
>> 
>> arch/arm/include/asm/mach/flash.h has this:
>> 
>> struct flash_platform_data {
>> 	const char	*map_name;
>> 	const char	*name;
>> 	unsigned int	width;
>> 	int		(*init)(void);
>> 	void		(*exit)(void);
>> 	void		(*set_vpp)(int on);
>> 	void		(*mmcontrol)(struct mtd_info *mtd, int sync_read);
>> 	struct mtd_partition *parts;
>> 	unsigned int	nr_parts;
>> };
>> 
>> and include/linux/spi/flash.h has this:
>> 
>> struct flash_platform_data {
>> 	char		*name;
>> 	struct mtd_partition *parts;
>> 	unsigned int	nr_parts;
>> 
>> 	char		*type;
>> 
>> 	/* we'll likely add more ... use JEDEC IDs, etc */
>> };
>> 
>> Should anything be done?
>
> How about unifying them both?

That would make sense.  But the include location would be strange.

The <asm/mach/flash.h> file is used by various arch/arm/mach-* files and in a
couple of drivers/mtd/maps/*.c files.

The <linux/spi/flash.h> file is also used by various arch/arm/mach-* files as
well as some arch/blackfin and arch/mips files.  It's also used by some
drivers in drivers/mtd/devices and by drivers/spi/spi_butterfly.c.

Because of the multi architecture use, the unifying should be done in the
include/linux/spi/flash.h file.  But this include in the various platform
init's might seem "strange" since the flash is not "spi".

I guess the other option would be to rename the spi version to something like:

struct spi_flash_data {
	...
};

Any comments from the mtd people?

Regards,
Hartley


More information about the linux-mtd mailing list