mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
gpio: bt8xx: use generic power management
Switch to the generic PCI power management framework and remove legacy callbacks like .suspend() and .resume(). With the generic framework, the standard PCI related work like: - pci_save/restore_state() - pci_enable/disable_device() - pci_set_power_state() is handled by the PCI core and this driver should implement only gpio-bt8xx specific operations in its respective callback functions. Signed-off-by: Vaibhav Gupta <vaibhavgupta40@gmail.com> Reviewed-by: Bjorn Helgaas <bhelgaas@google.com> Link: https://lore.kernel.org/r/20251016163618.1355923-1-vaibhavgupta40@gmail.com Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
This commit is contained in:
committed by
Bartosz Golaszewski
parent
03ac8183c9
commit
d5376026f9
@@ -52,10 +52,8 @@ struct bt8xxgpio {
|
||||
struct pci_dev *pdev;
|
||||
struct gpio_chip gpio;
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
u32 saved_outen;
|
||||
u32 saved_data;
|
||||
#endif
|
||||
};
|
||||
|
||||
#define bgwrite(dat, adr) writel((dat), bg->mmio+(adr))
|
||||
@@ -224,9 +222,10 @@ static void bt8xxgpio_remove(struct pci_dev *pdev)
|
||||
pci_disable_device(pdev);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
static int bt8xxgpio_suspend(struct pci_dev *pdev, pm_message_t state)
|
||||
|
||||
static int bt8xxgpio_suspend(struct device *dev)
|
||||
{
|
||||
struct pci_dev *pdev = to_pci_dev(dev);
|
||||
struct bt8xxgpio *bg = pci_get_drvdata(pdev);
|
||||
|
||||
scoped_guard(spinlock_irqsave, &bg->lock) {
|
||||
@@ -238,23 +237,13 @@ static int bt8xxgpio_suspend(struct pci_dev *pdev, pm_message_t state)
|
||||
bgwrite(0x0, BT848_GPIO_OUT_EN);
|
||||
}
|
||||
|
||||
pci_save_state(pdev);
|
||||
pci_disable_device(pdev);
|
||||
pci_set_power_state(pdev, pci_choose_state(pdev, state));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int bt8xxgpio_resume(struct pci_dev *pdev)
|
||||
static int bt8xxgpio_resume(struct device *dev)
|
||||
{
|
||||
struct pci_dev *pdev = to_pci_dev(dev);
|
||||
struct bt8xxgpio *bg = pci_get_drvdata(pdev);
|
||||
int err;
|
||||
|
||||
pci_set_power_state(pdev, PCI_D0);
|
||||
err = pci_enable_device(pdev);
|
||||
if (err)
|
||||
return err;
|
||||
pci_restore_state(pdev);
|
||||
|
||||
guard(spinlock_irqsave)(&bg->lock);
|
||||
|
||||
@@ -267,10 +256,8 @@ static int bt8xxgpio_resume(struct pci_dev *pdev)
|
||||
|
||||
return 0;
|
||||
}
|
||||
#else
|
||||
#define bt8xxgpio_suspend NULL
|
||||
#define bt8xxgpio_resume NULL
|
||||
#endif /* CONFIG_PM */
|
||||
|
||||
static DEFINE_SIMPLE_DEV_PM_OPS(bt8xxgpio_pm_ops, bt8xxgpio_suspend, bt8xxgpio_resume);
|
||||
|
||||
static const struct pci_device_id bt8xxgpio_pci_tbl[] = {
|
||||
{ PCI_DEVICE(PCI_VENDOR_ID_BROOKTREE, PCI_DEVICE_ID_BT848) },
|
||||
@@ -286,8 +273,7 @@ static struct pci_driver bt8xxgpio_pci_driver = {
|
||||
.id_table = bt8xxgpio_pci_tbl,
|
||||
.probe = bt8xxgpio_probe,
|
||||
.remove = bt8xxgpio_remove,
|
||||
.suspend = bt8xxgpio_suspend,
|
||||
.resume = bt8xxgpio_resume,
|
||||
.driver.pm = &bt8xxgpio_pm_ops,
|
||||
};
|
||||
|
||||
module_pci_driver(bt8xxgpio_pci_driver);
|
||||
|
||||
Reference in New Issue
Block a user