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

Commit 93160c63 authored by Rafael J. Wysocki's avatar Rafael J. Wysocki Committed by Greg Kroah-Hartman
Browse files

PM: do not use saved_state from struct dev_pm_info on ARM



The saved_state member of 'struct dev_pm_info' that's going to be removed
is used in arch/arm/common/locomo.c, arch/arm/common/sa1111.c and
arch/arm/mach-sa1100/neponset.c.  Change the code in there to use local
variables for saving the state of devices during suspend.

Signed-off-by: default avatarRafael J. Wysocki <rjw@sisk.pl>
Cc: Greg KH <greg@kroah.com>
Cc: David Brownell <david-b@pacbell.net>
Acked-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 43a49f8b
Loading
Loading
Loading
Loading
+8 −3
Original line number Diff line number Diff line
@@ -60,6 +60,9 @@ struct locomo {
	unsigned int irq;
	spinlock_t lock;
	void __iomem *base;
#ifdef CONFIG_PM
	void *saved_state;
#endif
};

struct locomo_dev_info {
@@ -565,7 +568,7 @@ static int locomo_suspend(struct platform_device *dev, pm_message_t state)
	if (!save)
		return -ENOMEM;

	dev->dev.power.saved_state = (void *) save;
	lchip->saved_state = save;

	spin_lock_irqsave(&lchip->lock, flags);

@@ -606,7 +609,7 @@ static int locomo_resume(struct platform_device *dev)
	unsigned long r;
	unsigned long flags;

	save = (struct locomo_save_data *) dev->dev.power.saved_state;
	save = lchip->saved_state;
	if (!save)
		return 0;

@@ -628,6 +631,8 @@ static int locomo_resume(struct platform_device *dev)
	locomo_writel(0x1, lchip->base + LOCOMO_KEYBOARD + LOCOMO_KCMD);

	spin_unlock_irqrestore(&lchip->lock, flags);

	lchip->saved_state = NULL;
	kfree(save);

	return 0;
+8 −5
Original line number Diff line number Diff line
@@ -51,6 +51,9 @@ struct sa1111 {
	int		irq;
	spinlock_t	lock;
	void __iomem	*base;
#ifdef CONFIG_PM
	void		*saved_state;
#endif
};

/*
@@ -822,7 +825,7 @@ static int sa1111_suspend(struct platform_device *dev, pm_message_t state)
	save = kmalloc(sizeof(struct sa1111_save_data), GFP_KERNEL);
	if (!save)
		return -ENOMEM;
	dev->dev.power.saved_state = save;
	sachip->saved_state = save;

	spin_lock_irqsave(&sachip->lock, flags);

@@ -878,7 +881,7 @@ static int sa1111_resume(struct platform_device *dev)
	unsigned long flags, id;
	void __iomem *base;

	save = (struct sa1111_save_data *)dev->dev.power.saved_state;
	save = sachip->saved_state;
	if (!save)
		return 0;

@@ -923,7 +926,7 @@ static int sa1111_resume(struct platform_device *dev)

	spin_unlock_irqrestore(&sachip->lock, flags);

	dev->dev.power.saved_state = NULL;
	sachip->saved_state = NULL;
	kfree(save);

	return 0;
@@ -958,8 +961,8 @@ static int sa1111_remove(struct platform_device *pdev)
		platform_set_drvdata(pdev, NULL);

#ifdef CONFIG_PM
		kfree(pdev->dev.power.saved_state);
		pdev->dev.power.saved_state = NULL;
		kfree(sachip->saved_state);
		sachip->saved_state = NULL;
#endif
	}

+4 −11
Original line number Diff line number Diff line
@@ -185,28 +185,21 @@ static int __devinit neponset_probe(struct platform_device *dev)
/*
 * LDM power management.
 */
static unsigned int neponset_saved_state;

static int neponset_suspend(struct platform_device *dev, pm_message_t state)
{
	/*
	 * Save state.
	 */
	if (!dev->dev.power.saved_state)
		dev->dev.power.saved_state = kmalloc(sizeof(unsigned int), GFP_KERNEL);
	if (!dev->dev.power.saved_state)
		return -ENOMEM;

	*(unsigned int *)dev->dev.power.saved_state = NCR_0;
	neponset_saved_state = NCR_0;

	return 0;
}

static int neponset_resume(struct platform_device *dev)
{
	if (dev->dev.power.saved_state) {
		NCR_0 = *(unsigned int *)dev->dev.power.saved_state;
		kfree(dev->dev.power.saved_state);
		dev->dev.power.saved_state = NULL;
	}
	NCR_0 = neponset_saved_state;

	return 0;
}