mtd: r852: remove useless pci powerup/down from suspend/resume routines

It turns out that pci core now handles these, so this code is redundant
and can even cause bugs

Signed-off-by: Maxim Levitsky <maximlevitsky@gmail.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
This commit is contained in:
Maxim Levitsky 2010-10-15 17:20:46 +02:00 committed by David Woodhouse
parent 12aebf3e1a
commit 9bf70717a5
2 changed files with 1 additions and 31 deletions

View File

@ -757,11 +757,6 @@ static irqreturn_t r852_irq(int irq, void *data)
spin_lock_irqsave(&dev->irqlock, flags); spin_lock_irqsave(&dev->irqlock, flags);
/* We can recieve shared interrupt while pci is suspended
in that case reads will return 0xFFFFFFFF.... */
if (dev->insuspend)
goto out;
/* handle card detection interrupts first */ /* handle card detection interrupts first */
card_status = r852_read_reg(dev, R852_CARD_IRQ_STA); card_status = r852_read_reg(dev, R852_CARD_IRQ_STA);
r852_write_reg(dev, R852_CARD_IRQ_STA, card_status); r852_write_reg(dev, R852_CARD_IRQ_STA, card_status);
@ -1035,7 +1030,6 @@ void r852_shutdown(struct pci_dev *pci_dev)
int r852_suspend(struct device *device) int r852_suspend(struct device *device)
{ {
struct r852_device *dev = pci_get_drvdata(to_pci_dev(device)); struct r852_device *dev = pci_get_drvdata(to_pci_dev(device));
unsigned long flags;
if (dev->ctlreg & R852_CTL_CARDENABLE) if (dev->ctlreg & R852_CTL_CARDENABLE)
return -EBUSY; return -EBUSY;
@ -1047,43 +1041,22 @@ int r852_suspend(struct device *device)
r852_disable_irqs(dev); r852_disable_irqs(dev);
r852_engine_disable(dev); r852_engine_disable(dev);
spin_lock_irqsave(&dev->irqlock, flags);
dev->insuspend = 1;
spin_unlock_irqrestore(&dev->irqlock, flags);
/* At that point, even if interrupt handler is running, it will quit */
/* So wait for this to happen explictly */
synchronize_irq(dev->irq);
/* If card was pulled off just during the suspend, which is very /* If card was pulled off just during the suspend, which is very
unlikely, we will remove it on resume, it too late now unlikely, we will remove it on resume, it too late now
anyway... */ anyway... */
dev->card_unstable = 0; dev->card_unstable = 0;
return 0;
pci_save_state(to_pci_dev(device));
return pci_prepare_to_sleep(to_pci_dev(device));
} }
int r852_resume(struct device *device) int r852_resume(struct device *device)
{ {
struct r852_device *dev = pci_get_drvdata(to_pci_dev(device)); struct r852_device *dev = pci_get_drvdata(to_pci_dev(device));
unsigned long flags;
/* Turn on the hardware */
pci_back_from_sleep(to_pci_dev(device));
pci_restore_state(to_pci_dev(device));
r852_disable_irqs(dev); r852_disable_irqs(dev);
r852_card_update_present(dev); r852_card_update_present(dev);
r852_engine_disable(dev); r852_engine_disable(dev);
/* Now its safe for IRQ to run */
spin_lock_irqsave(&dev->irqlock, flags);
dev->insuspend = 0;
spin_unlock_irqrestore(&dev->irqlock, flags);
/* If card status changed, just do the work */ /* If card status changed, just do the work */
if (dev->card_detected != dev->card_registred) { if (dev->card_detected != dev->card_registred) {
dbg("card was %s during low power state", dbg("card was %s during low power state",
@ -1121,7 +1094,6 @@ MODULE_DEVICE_TABLE(pci, r852_pci_id_tbl);
SIMPLE_DEV_PM_OPS(r852_pm_ops, r852_suspend, r852_resume); SIMPLE_DEV_PM_OPS(r852_pm_ops, r852_suspend, r852_resume);
static struct pci_driver r852_pci_driver = { static struct pci_driver r852_pci_driver = {
.name = DRV_NAME, .name = DRV_NAME,
.id_table = r852_pci_id_tbl, .id_table = r852_pci_id_tbl,

View File

@ -140,8 +140,6 @@ struct r852_device {
/* interrupt handling */ /* interrupt handling */
spinlock_t irqlock; /* IRQ protecting lock */ spinlock_t irqlock; /* IRQ protecting lock */
int irq; /* irq num */ int irq; /* irq num */
int insuspend; /* device is suspended */
/* misc */ /* misc */
void *tmp_buffer; /* temporary buffer */ void *tmp_buffer; /* temporary buffer */
uint8_t ctlreg; /* cached contents of control reg */ uint8_t ctlreg; /* cached contents of control reg */