Skip to content

Commit

Permalink
mtd: nand: ams-delta: convert to platform driver
Browse files Browse the repository at this point in the history
In its current form, the driver may interfere with different hardware on
different boards if built into the kernel, hence is not suitable for
inclusion into a defconfig, inteded to be usable with multiple OMAP1 cpu and
machine types.

Convert it to a platform driver, that should be free from this issue.

Created and tested against linux-2.6.37-rc5 on Amstrad Delta.

Signed-off-by: Janusz Krzysztofik <jkrzyszt@tis.icnet.pl>
Acked-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
  • Loading branch information
Janusz Krzysztofik authored and David Woodhouse committed Jan 6, 2011
1 parent 75c52a4 commit 7e95d1f
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 5 deletions.
6 changes: 6 additions & 0 deletions arch/arm/mach-omap1/board-ams-delta.c
Original file line number Diff line number Diff line change
Expand Up @@ -181,6 +181,11 @@ static struct omap_board_config_kernel ams_delta_config[] = {
{ OMAP_TAG_LCD, &ams_delta_lcd_config },
};

static struct platform_device ams_delta_nand_device = {
.name = "ams-delta-nand",
.id = -1
};

static struct resource ams_delta_kp_resources[] = {
[0] = {
.start = INT_KEYBOARD,
Expand Down Expand Up @@ -263,6 +268,7 @@ static struct omap1_cam_platform_data ams_delta_camera_platform_data = {
};

static struct platform_device *ams_delta_devices[] __initdata = {
&ams_delta_nand_device,
&ams_delta_kp_device,
&ams_delta_lcd_device,
&ams_delta_led_device,
Expand Down
31 changes: 26 additions & 5 deletions drivers/mtd/nand/ams-delta.c
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
* Copyright (C) 2006 Jonathan McDowell <noodles@earth.li>
*
* Derived from drivers/mtd/toto.c
* Converted to platform driver by Janusz Krzysztofik <jkrzyszt@tis.icnet.pl>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
Expand Down Expand Up @@ -151,7 +152,7 @@ static int ams_delta_nand_ready(struct mtd_info *mtd)
/*
* Main initialization routine
*/
static int __init ams_delta_init(void)
static int __devinit ams_delta_init(struct platform_device *pdev)
{
struct nand_chip *this;
int err = 0;
Expand Down Expand Up @@ -219,20 +220,40 @@ static int __init ams_delta_init(void)
return err;
}

module_init(ams_delta_init);

/*
* Clean up routine
*/
static void __exit ams_delta_cleanup(void)
static int __devexit ams_delta_cleanup(struct platform_device *pdev)
{
/* Release resources, unregister device */
nand_release(ams_delta_mtd);

/* Free the MTD device structure */
kfree(ams_delta_mtd);

return 0;
}

static struct platform_driver ams_delta_nand_driver = {
.probe = ams_delta_init,
.remove = __devexit_p(ams_delta_cleanup),
.driver = {
.name = "ams-delta-nand",
.owner = THIS_MODULE,
},
};

static int __init ams_delta_nand_init(void)
{
return platform_driver_register(&ams_delta_nand_driver);
}
module_init(ams_delta_nand_init);

static void __exit ams_delta_nand_exit(void)
{
platform_driver_unregister(&ams_delta_nand_driver);
}
module_exit(ams_delta_cleanup);
module_exit(ams_delta_nand_exit);

MODULE_LICENSE("GPL");
MODULE_AUTHOR("Jonathan McDowell <noodles@earth.li>");
Expand Down

0 comments on commit 7e95d1f

Please sign in to comment.