[ARM] Allow MTD device name to be passed via platform data
Allow SA1100 devices to pass the name of the flash device to the SA1100 map driver. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
This commit is contained in:
parent
822e5e7269
commit
14e66f767f
3 changed files with 7 additions and 3 deletions
|
@ -23,6 +23,7 @@
|
||||||
#include <asm/system.h>
|
#include <asm/system.h>
|
||||||
#include <asm/pgtable.h>
|
#include <asm/pgtable.h>
|
||||||
#include <asm/mach/map.h>
|
#include <asm/mach/map.h>
|
||||||
|
#include <asm/mach/flash.h>
|
||||||
#include <asm/irq.h>
|
#include <asm/irq.h>
|
||||||
|
|
||||||
#include "generic.h"
|
#include "generic.h"
|
||||||
|
@ -283,6 +284,7 @@ static struct platform_device sa11x0mtd_device = {
|
||||||
void sa11x0_set_flash_data(struct flash_platform_data *flash,
|
void sa11x0_set_flash_data(struct flash_platform_data *flash,
|
||||||
struct resource *res, int nr)
|
struct resource *res, int nr)
|
||||||
{
|
{
|
||||||
|
flash->name = "sa1100";
|
||||||
sa11x0mtd_device.dev.platform_data = flash;
|
sa11x0mtd_device.dev.platform_data = flash;
|
||||||
sa11x0mtd_device.resource = res;
|
sa11x0mtd_device.resource = res;
|
||||||
sa11x0mtd_device.num_resources = nr;
|
sa11x0mtd_device.num_resources = nr;
|
||||||
|
|
|
@ -301,7 +301,7 @@ sa1100_setup_mtd(struct platform_device *pdev, struct flash_platform_data *plat)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
subdev->map.name = subdev->name;
|
subdev->map.name = subdev->name;
|
||||||
sprintf(subdev->name, "sa1100-%d", i);
|
sprintf(subdev->name, "%s-%d", plat->name, i);
|
||||||
subdev->plat = plat;
|
subdev->plat = plat;
|
||||||
|
|
||||||
ret = sa1100_probe_subdev(subdev, res);
|
ret = sa1100_probe_subdev(subdev, res);
|
||||||
|
@ -323,7 +323,7 @@ sa1100_setup_mtd(struct platform_device *pdev, struct flash_platform_data *plat)
|
||||||
* otherwise fail. Either way, it'll be called "sa1100".
|
* otherwise fail. Either way, it'll be called "sa1100".
|
||||||
*/
|
*/
|
||||||
if (info->num_subdev == 1) {
|
if (info->num_subdev == 1) {
|
||||||
strcpy(info->subdev[0].name, "sa1100");
|
strcpy(info->subdev[0].name, plat->name);
|
||||||
info->mtd = info->subdev[0].mtd;
|
info->mtd = info->subdev[0].mtd;
|
||||||
ret = 0;
|
ret = 0;
|
||||||
} else if (info->num_subdev > 1) {
|
} else if (info->num_subdev > 1) {
|
||||||
|
@ -336,7 +336,7 @@ sa1100_setup_mtd(struct platform_device *pdev, struct flash_platform_data *plat)
|
||||||
cdev[i] = info->subdev[i].mtd;
|
cdev[i] = info->subdev[i].mtd;
|
||||||
|
|
||||||
info->mtd = mtd_concat_create(cdev, info->num_subdev,
|
info->mtd = mtd_concat_create(cdev, info->num_subdev,
|
||||||
"sa1100");
|
plat->name);
|
||||||
if (info->mtd == NULL)
|
if (info->mtd == NULL)
|
||||||
ret = -ENXIO;
|
ret = -ENXIO;
|
||||||
#else
|
#else
|
||||||
|
|
|
@ -14,6 +14,7 @@ struct mtd_partition;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* map_name: the map probe function name
|
* map_name: the map probe function name
|
||||||
|
* name: flash device name (eg, as used with mtdparts=)
|
||||||
* width: width of mapped device
|
* width: width of mapped device
|
||||||
* init: method called at driver/device initialisation
|
* init: method called at driver/device initialisation
|
||||||
* exit: method called at driver/device removal
|
* exit: method called at driver/device removal
|
||||||
|
@ -23,6 +24,7 @@ struct mtd_partition;
|
||||||
*/
|
*/
|
||||||
struct flash_platform_data {
|
struct flash_platform_data {
|
||||||
const char *map_name;
|
const char *map_name;
|
||||||
|
const char *name;
|
||||||
unsigned int width;
|
unsigned int width;
|
||||||
int (*init)(void);
|
int (*init)(void);
|
||||||
void (*exit)(void);
|
void (*exit)(void);
|
||||||
|
|
Loading…
Add table
Reference in a new issue