Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 422db8d2 authored by Dale Farnsworth's avatar Dale Farnsworth Committed by Wim Van Sebroeck
Browse files

[WATCHDOG] mv64x60_wdt: set up platform_device in platform code



The driver previously registered its platform device data in its own
init function--that's bogus.  Move that code to platform-specific
code in arch/ppc.  This is being done so that the platform code can
decide at runtime whether to initialize this driver or not.

Signed-off-by: default avatarDale Farnsworth <dale@farnsworth.org>
Signed-off-by: default avatarWim Van Sebroeck <wim@iguana.be>
parent 28dd1b0b
Loading
Loading
Loading
Loading
+29 −0
Original line number Original line Diff line number Diff line
@@ -441,6 +441,32 @@ static struct platform_device i2c_device = {
};
};
#endif
#endif


#ifdef CONFIG_WATCHDOG
static struct mv64x60_wdt_pdata mv64x60_wdt_pdata = {
	.timeout		= 10,  /* default watchdog expiry in seconds */
	.bus_clk		= 133, /* default bus clock in MHz */
};

static struct resource mv64x60_wdt_resources[] = {
	[0] = {
		.name	= "mv64x60 wdt base",
		.start	= MV64x60_WDT_WDC,
		.end	= MV64x60_WDT_WDC + 8 - 1, /* two 32-bit registers */
		.flags	= IORESOURCE_MEM,
	},
};

static struct platform_device wdt_device = {
	.name		= MV64x60_WDT_NAME,
	.id		= 0,
	.num_resources	= ARRAY_SIZE(mv64x60_wdt_resources),
	.resource	= mv64x60_wdt_resources,
	.dev = {
		.platform_data = &mv64x60_wdt_pdata,
	},
};
#endif

#if defined(CONFIG_SYSFS) && !defined(CONFIG_GT64260)
#if defined(CONFIG_SYSFS) && !defined(CONFIG_GT64260)
static struct mv64xxx_pdata mv64xxx_pdata = {
static struct mv64xxx_pdata mv64xxx_pdata = {
	.hs_reg_valid	= 0,
	.hs_reg_valid	= 0,
@@ -476,6 +502,9 @@ static struct platform_device *mv64x60_pd_devs[] __initdata = {
#ifdef	CONFIG_I2C_MV64XXX
#ifdef	CONFIG_I2C_MV64XXX
	&i2c_device,
	&i2c_device,
#endif
#endif
#ifdef	CONFIG_MV64X60_WDT
	&wdt_device,
#endif
#if defined(CONFIG_SYSFS) && !defined(CONFIG_GT64260)
#if defined(CONFIG_SYSFS) && !defined(CONFIG_GT64260)
	&mv64xxx_device,
	&mv64xxx_device,
#endif
#endif
+1 −25
Original line number Original line Diff line number Diff line
@@ -219,40 +219,16 @@ static struct platform_driver mv64x60_wdt_driver = {
	},
	},
};
};


static struct platform_device *mv64x60_wdt_dev;

static int __init mv64x60_wdt_init(void)
static int __init mv64x60_wdt_init(void)
{
{
	int ret;

	printk(KERN_INFO "MV64x60 watchdog driver\n");
	printk(KERN_INFO "MV64x60 watchdog driver\n");


	mv64x60_wdt_dev = platform_device_alloc(MV64x60_WDT_NAME, -1);
	return platform_driver_register(&mv64x60_wdt_driver);
	if (!mv64x60_wdt_dev) {
		ret = -ENOMEM;
		goto out;
	}

	ret = platform_device_add(mv64x60_wdt_dev);
	if (ret) {
		platform_device_put(mv64x60_wdt_dev);
		goto out;
	}

	ret = platform_driver_register(&mv64x60_wdt_driver);
	if (ret) {
		platform_device_unregister(mv64x60_wdt_dev);
		goto out;
	}

 out:
	return ret;
}
}


static void __exit mv64x60_wdt_exit(void)
static void __exit mv64x60_wdt_exit(void)
{
{
	platform_driver_unregister(&mv64x60_wdt_driver);
	platform_driver_unregister(&mv64x60_wdt_driver);
	platform_device_unregister(mv64x60_wdt_dev);
}
}


module_init(mv64x60_wdt_init);
module_init(mv64x60_wdt_init);
+1 −1
Original line number Original line Diff line number Diff line
@@ -121,7 +121,7 @@ extern spinlock_t mv64x60_lock;
#define	MV64x60_64BIT_WIN_COUNT			24
#define	MV64x60_64BIT_WIN_COUNT			24


/* Watchdog Platform Device, Driver Data */
/* Watchdog Platform Device, Driver Data */
#define	MV64x60_WDT_NAME			"wdt"
#define	MV64x60_WDT_NAME			"mv64x60_wdt"


struct mv64x60_wdt_pdata {
struct mv64x60_wdt_pdata {
	int	timeout;	/* watchdog expiry in seconds, default 10 */
	int	timeout;	/* watchdog expiry in seconds, default 10 */