ARM: 6910/1: MTD: physmap: let set_vpp() pass a platform_device instead of a map_info

The set_vpp() method provided by physmap passes a map_info back to
the platform code, which has little relevance as far as the platform
is concerned (this parameter is completely unused).

Instead, pass the platform_device, which can be used in the pismo
driver to retrieve some important information in a nicer way, instead
of the hack that was in place.

The empty set_vpp function in board-at572d940hf_ek.c is left untouched,
as the board/SoC is scheduled for removal.

Cc: Andrew Victor <linux@maxim.org.za>
Cc: Nicolas Ferre <nicolas.ferre@atmel.com>
Acked-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Cc: Philipp Zabel <philipp.zabel@gmail.com>
Cc: Eric Miao <eric.y.miao@gmail.com>
Cc: Ben Dooks <ben-linux@fluff.org>
Acked-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
Acked-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
This commit is contained in:
Marc Zyngier
2011-05-18 10:51:55 +01:00
committed by Russell King
parent adf0040096
commit 667f390bee
13 changed files with 29 additions and 53 deletions

View File

@@ -50,39 +50,13 @@ struct pismo_data {
struct platform_device *dev[PISMO_NUM_CS];
};
/* FIXME: set_vpp could do with a better calling convention */
static struct pismo_data *vpp_pismo;
static DEFINE_MUTEX(pismo_mutex);
static int pismo_setvpp_probe_fix(struct pismo_data *pismo)
static void pismo_set_vpp(struct platform_device *pdev, int on)
{
mutex_lock(&pismo_mutex);
if (vpp_pismo) {
mutex_unlock(&pismo_mutex);
kfree(pismo);
return -EBUSY;
}
vpp_pismo = pismo;
mutex_unlock(&pismo_mutex);
return 0;
}
static void pismo_setvpp_remove_fix(struct pismo_data *pismo)
{
mutex_lock(&pismo_mutex);
if (vpp_pismo == pismo)
vpp_pismo = NULL;
mutex_unlock(&pismo_mutex);
}
static void pismo_set_vpp(struct map_info *map, int on)
{
struct pismo_data *pismo = vpp_pismo;
struct i2c_client *client = to_i2c_client(pdev->dev.parent);
struct pismo_data *pismo = i2c_get_clientdata(client);
pismo->vpp(pismo->vpp_data, on);
}
/* end of hack */
static unsigned int __devinit pismo_width_to_bytes(unsigned int width)
{
@@ -231,9 +205,6 @@ static int __devexit pismo_remove(struct i2c_client *client)
for (i = 0; i < ARRAY_SIZE(pismo->dev); i++)
platform_device_unregister(pismo->dev[i]);
/* FIXME: set_vpp needs saner arguments */
pismo_setvpp_remove_fix(pismo);
kfree(pismo);
return 0;
@@ -257,11 +228,6 @@ static int __devinit pismo_probe(struct i2c_client *client,
if (!pismo)
return -ENOMEM;
/* FIXME: set_vpp needs saner arguments */
ret = pismo_setvpp_probe_fix(pismo);
if (ret)
return ret;
pismo->client = client;
if (pdata) {
pismo->vpp = pdata->set_vpp;