mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	PCI/pwrctrl: Rename pwrctrl functions and structures
Rename pwrctrl functions and structures from "pwrctl" to "pwrctrl" to match the similar file renames. Link: https://lore.kernel.org/r/20241115214428.2061153-3-helgaas@kernel.org Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> Signed-off-by: Krzysztof Wilczyński <kwilczynski@kernel.org> Acked-by: Krzysztof Wilczyński <kw@linux.com>
This commit is contained in:
		
							parent
							
								
									b88cbaaa6f
								
							
						
					
					
						commit
						3f925cd628
					
				
					 5 changed files with 81 additions and 79 deletions
				
			
		| 
						 | 
				
			
			@ -322,10 +322,10 @@ void __weak pcibios_resource_survey_bus(struct pci_bus *bus) { }
 | 
			
		|||
void __weak pcibios_bus_add_device(struct pci_dev *pdev) { }
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Create pwrctl devices (if required) for the PCI devices to handle the power
 | 
			
		||||
 * Create pwrctrl devices (if required) for the PCI devices to handle the power
 | 
			
		||||
 * state.
 | 
			
		||||
 */
 | 
			
		||||
static void pci_pwrctl_create_devices(struct pci_dev *dev)
 | 
			
		||||
static void pci_pwrctrl_create_devices(struct pci_dev *dev)
 | 
			
		||||
{
 | 
			
		||||
	struct device_node *np = dev_of_node(&dev->dev);
 | 
			
		||||
	struct device *parent = &dev->dev;
 | 
			
		||||
| 
						 | 
				
			
			@ -337,23 +337,24 @@ static void pci_pwrctl_create_devices(struct pci_dev *dev)
 | 
			
		|||
	 */
 | 
			
		||||
	if (np && pci_is_bridge(dev)) {
 | 
			
		||||
		/*
 | 
			
		||||
		 * Now look for the child PCI device nodes and create pwrctl
 | 
			
		||||
		 * devices for them. The pwrctl device drivers will manage the
 | 
			
		||||
		 * Now look for the child PCI device nodes and create pwrctrl
 | 
			
		||||
		 * devices for them. The pwrctrl device drivers will manage the
 | 
			
		||||
		 * power state of the devices.
 | 
			
		||||
		 */
 | 
			
		||||
		for_each_available_child_of_node_scoped(np, child) {
 | 
			
		||||
			/*
 | 
			
		||||
			 * First check whether the pwrctl device really needs to
 | 
			
		||||
			 * be created or not. This is decided based on at least
 | 
			
		||||
			 * one of the power supplies being defined in the
 | 
			
		||||
			 * devicetree node of the device.
 | 
			
		||||
			 * First check whether the pwrctrl device really
 | 
			
		||||
			 * needs to be created or not. This is decided
 | 
			
		||||
			 * based on at least one of the power supplies
 | 
			
		||||
			 * being defined in the devicetree node of the
 | 
			
		||||
			 * device.
 | 
			
		||||
			 */
 | 
			
		||||
			if (!of_pci_supply_present(child)) {
 | 
			
		||||
				pci_dbg(dev, "skipping OF node: %s\n", child->name);
 | 
			
		||||
				return;
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			/* Now create the pwrctl device */
 | 
			
		||||
			/* Now create the pwrctrl device */
 | 
			
		||||
			pdev = of_platform_device_create(child, NULL, parent);
 | 
			
		||||
			if (!pdev)
 | 
			
		||||
				pci_err(dev, "failed to create OF node: %s\n", child->name);
 | 
			
		||||
| 
						 | 
				
			
			@ -385,12 +386,12 @@ void pci_bus_add_device(struct pci_dev *dev)
 | 
			
		|||
	pci_proc_attach_device(dev);
 | 
			
		||||
	pci_bridge_d3_update(dev);
 | 
			
		||||
 | 
			
		||||
	pci_pwrctl_create_devices(dev);
 | 
			
		||||
	pci_pwrctrl_create_devices(dev);
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * If the PCI device is associated with a pwrctl device with a
 | 
			
		||||
	 * If the PCI device is associated with a pwrctrl device with a
 | 
			
		||||
	 * power supply, create a device link between the PCI device and
 | 
			
		||||
	 * pwrctl device.  This ensures that pwrctl drivers are probed
 | 
			
		||||
	 * pwrctrl device.  This ensures that pwrctrl drivers are probed
 | 
			
		||||
	 * before PCI client drivers.
 | 
			
		||||
	 */
 | 
			
		||||
	pdev = of_find_device_by_node(dn);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,13 +11,13 @@
 | 
			
		|||
#include <linux/property.h>
 | 
			
		||||
#include <linux/slab.h>
 | 
			
		||||
 | 
			
		||||
static int pci_pwrctl_notify(struct notifier_block *nb, unsigned long action,
 | 
			
		||||
static int pci_pwrctrl_notify(struct notifier_block *nb, unsigned long action,
 | 
			
		||||
			      void *data)
 | 
			
		||||
{
 | 
			
		||||
	struct pci_pwrctl *pwrctl = container_of(nb, struct pci_pwrctl, nb);
 | 
			
		||||
	struct pci_pwrctrl *pwrctrl = container_of(nb, struct pci_pwrctrl, nb);
 | 
			
		||||
	struct device *dev = data;
 | 
			
		||||
 | 
			
		||||
	if (dev_fwnode(dev) != dev_fwnode(pwrctl->dev))
 | 
			
		||||
	if (dev_fwnode(dev) != dev_fwnode(pwrctrl->dev))
 | 
			
		||||
		return NOTIFY_DONE;
 | 
			
		||||
 | 
			
		||||
	switch (action) {
 | 
			
		||||
| 
						 | 
				
			
			@ -40,31 +40,32 @@ static int pci_pwrctl_notify(struct notifier_block *nb, unsigned long action,
 | 
			
		|||
 | 
			
		||||
static void rescan_work_func(struct work_struct *work)
 | 
			
		||||
{
 | 
			
		||||
	struct pci_pwrctl *pwrctl = container_of(work, struct pci_pwrctl, work);
 | 
			
		||||
	struct pci_pwrctrl *pwrctrl = container_of(work,
 | 
			
		||||
						   struct pci_pwrctrl, work);
 | 
			
		||||
 | 
			
		||||
	pci_lock_rescan_remove();
 | 
			
		||||
	pci_rescan_bus(to_pci_dev(pwrctl->dev->parent)->bus);
 | 
			
		||||
	pci_rescan_bus(to_pci_dev(pwrctrl->dev->parent)->bus);
 | 
			
		||||
	pci_unlock_rescan_remove();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * pci_pwrctl_init() - Initialize the PCI power control context struct
 | 
			
		||||
 * pci_pwrctrl_init() - Initialize the PCI power control context struct
 | 
			
		||||
 *
 | 
			
		||||
 * @pwrctl: PCI power control data
 | 
			
		||||
 * @pwrctrl: PCI power control data
 | 
			
		||||
 * @dev: Parent device
 | 
			
		||||
 */
 | 
			
		||||
void pci_pwrctl_init(struct pci_pwrctl *pwrctl, struct device *dev)
 | 
			
		||||
void pci_pwrctrl_init(struct pci_pwrctrl *pwrctrl, struct device *dev)
 | 
			
		||||
{
 | 
			
		||||
	pwrctl->dev = dev;
 | 
			
		||||
	INIT_WORK(&pwrctl->work, rescan_work_func);
 | 
			
		||||
	pwrctrl->dev = dev;
 | 
			
		||||
	INIT_WORK(&pwrctrl->work, rescan_work_func);
 | 
			
		||||
}
 | 
			
		||||
EXPORT_SYMBOL_GPL(pci_pwrctl_init);
 | 
			
		||||
EXPORT_SYMBOL_GPL(pci_pwrctrl_init);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * pci_pwrctl_device_set_ready() - Notify the pwrctl subsystem that the PCI
 | 
			
		||||
 * pci_pwrctrl_device_set_ready() - Notify the pwrctrl subsystem that the PCI
 | 
			
		||||
 * device is powered-up and ready to be detected.
 | 
			
		||||
 *
 | 
			
		||||
 * @pwrctl: PCI power control data.
 | 
			
		||||
 * @pwrctrl: PCI power control data.
 | 
			
		||||
 *
 | 
			
		||||
 * Returns:
 | 
			
		||||
 * 0 on success, negative error number on error.
 | 
			
		||||
| 
						 | 
				
			
			@ -74,31 +75,31 @@ EXPORT_SYMBOL_GPL(pci_pwrctl_init);
 | 
			
		|||
 * that the bus rescan was successfully started. The device will get bound to
 | 
			
		||||
 * its PCI driver asynchronously.
 | 
			
		||||
 */
 | 
			
		||||
int pci_pwrctl_device_set_ready(struct pci_pwrctl *pwrctl)
 | 
			
		||||
int pci_pwrctrl_device_set_ready(struct pci_pwrctrl *pwrctrl)
 | 
			
		||||
{
 | 
			
		||||
	int ret;
 | 
			
		||||
 | 
			
		||||
	if (!pwrctl->dev)
 | 
			
		||||
	if (!pwrctrl->dev)
 | 
			
		||||
		return -ENODEV;
 | 
			
		||||
 | 
			
		||||
	pwrctl->nb.notifier_call = pci_pwrctl_notify;
 | 
			
		||||
	ret = bus_register_notifier(&pci_bus_type, &pwrctl->nb);
 | 
			
		||||
	pwrctrl->nb.notifier_call = pci_pwrctrl_notify;
 | 
			
		||||
	ret = bus_register_notifier(&pci_bus_type, &pwrctrl->nb);
 | 
			
		||||
	if (ret)
 | 
			
		||||
		return ret;
 | 
			
		||||
 | 
			
		||||
	schedule_work(&pwrctl->work);
 | 
			
		||||
	schedule_work(&pwrctrl->work);
 | 
			
		||||
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
EXPORT_SYMBOL_GPL(pci_pwrctl_device_set_ready);
 | 
			
		||||
EXPORT_SYMBOL_GPL(pci_pwrctrl_device_set_ready);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * pci_pwrctl_device_unset_ready() - Notify the pwrctl subsystem that the PCI
 | 
			
		||||
 * pci_pwrctrl_device_unset_ready() - Notify the pwrctrl subsystem that the PCI
 | 
			
		||||
 * device is about to be powered-down.
 | 
			
		||||
 *
 | 
			
		||||
 * @pwrctl: PCI power control data.
 | 
			
		||||
 * @pwrctrl: PCI power control data.
 | 
			
		||||
 */
 | 
			
		||||
void pci_pwrctl_device_unset_ready(struct pci_pwrctl *pwrctl)
 | 
			
		||||
void pci_pwrctrl_device_unset_ready(struct pci_pwrctrl *pwrctrl)
 | 
			
		||||
{
 | 
			
		||||
	/*
 | 
			
		||||
	 * We don't have to delete the link here. Typically, this function
 | 
			
		||||
| 
						 | 
				
			
			@ -106,41 +107,41 @@ void pci_pwrctl_device_unset_ready(struct pci_pwrctl *pwrctl)
 | 
			
		|||
	 * it is being detached then the child PCI device must have already
 | 
			
		||||
	 * been unbound too or the device core wouldn't let us unbind.
 | 
			
		||||
	 */
 | 
			
		||||
	bus_unregister_notifier(&pci_bus_type, &pwrctl->nb);
 | 
			
		||||
	bus_unregister_notifier(&pci_bus_type, &pwrctrl->nb);
 | 
			
		||||
}
 | 
			
		||||
EXPORT_SYMBOL_GPL(pci_pwrctl_device_unset_ready);
 | 
			
		||||
EXPORT_SYMBOL_GPL(pci_pwrctrl_device_unset_ready);
 | 
			
		||||
 | 
			
		||||
static void devm_pci_pwrctl_device_unset_ready(void *data)
 | 
			
		||||
static void devm_pci_pwrctrl_device_unset_ready(void *data)
 | 
			
		||||
{
 | 
			
		||||
	struct pci_pwrctl *pwrctl = data;
 | 
			
		||||
	struct pci_pwrctrl *pwrctrl = data;
 | 
			
		||||
 | 
			
		||||
	pci_pwrctl_device_unset_ready(pwrctl);
 | 
			
		||||
	pci_pwrctrl_device_unset_ready(pwrctrl);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * devm_pci_pwrctl_device_set_ready - Managed variant of
 | 
			
		||||
 * pci_pwrctl_device_set_ready().
 | 
			
		||||
 * devm_pci_pwrctrl_device_set_ready - Managed variant of
 | 
			
		||||
 * pci_pwrctrl_device_set_ready().
 | 
			
		||||
 *
 | 
			
		||||
 * @dev: Device managing this pwrctl provider.
 | 
			
		||||
 * @pwrctl: PCI power control data.
 | 
			
		||||
 * @dev: Device managing this pwrctrl provider.
 | 
			
		||||
 * @pwrctrl: PCI power control data.
 | 
			
		||||
 *
 | 
			
		||||
 * Returns:
 | 
			
		||||
 * 0 on success, negative error number on error.
 | 
			
		||||
 */
 | 
			
		||||
int devm_pci_pwrctl_device_set_ready(struct device *dev,
 | 
			
		||||
				     struct pci_pwrctl *pwrctl)
 | 
			
		||||
int devm_pci_pwrctrl_device_set_ready(struct device *dev,
 | 
			
		||||
				      struct pci_pwrctrl *pwrctrl)
 | 
			
		||||
{
 | 
			
		||||
	int ret;
 | 
			
		||||
 | 
			
		||||
	ret = pci_pwrctl_device_set_ready(pwrctl);
 | 
			
		||||
	ret = pci_pwrctrl_device_set_ready(pwrctrl);
 | 
			
		||||
	if (ret)
 | 
			
		||||
		return ret;
 | 
			
		||||
 | 
			
		||||
	return devm_add_action_or_reset(dev,
 | 
			
		||||
					devm_pci_pwrctl_device_unset_ready,
 | 
			
		||||
					pwrctl);
 | 
			
		||||
					devm_pci_pwrctrl_device_unset_ready,
 | 
			
		||||
					pwrctrl);
 | 
			
		||||
}
 | 
			
		||||
EXPORT_SYMBOL_GPL(devm_pci_pwrctl_device_set_ready);
 | 
			
		||||
EXPORT_SYMBOL_GPL(devm_pci_pwrctrl_device_set_ready);
 | 
			
		||||
 | 
			
		||||
MODULE_AUTHOR("Bartosz Golaszewski <bartosz.golaszewski@linaro.org>");
 | 
			
		||||
MODULE_DESCRIPTION("PCI Device Power Control core driver");
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -13,21 +13,21 @@
 | 
			
		|||
#include <linux/slab.h>
 | 
			
		||||
#include <linux/types.h>
 | 
			
		||||
 | 
			
		||||
struct pci_pwrctl_pwrseq_data {
 | 
			
		||||
	struct pci_pwrctl ctx;
 | 
			
		||||
struct pci_pwrctrl_pwrseq_data {
 | 
			
		||||
	struct pci_pwrctrl ctx;
 | 
			
		||||
	struct pwrseq_desc *pwrseq;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static void devm_pci_pwrctl_pwrseq_power_off(void *data)
 | 
			
		||||
static void devm_pci_pwrctrl_pwrseq_power_off(void *data)
 | 
			
		||||
{
 | 
			
		||||
	struct pwrseq_desc *pwrseq = data;
 | 
			
		||||
 | 
			
		||||
	pwrseq_power_off(pwrseq);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int pci_pwrctl_pwrseq_probe(struct platform_device *pdev)
 | 
			
		||||
static int pci_pwrctrl_pwrseq_probe(struct platform_device *pdev)
 | 
			
		||||
{
 | 
			
		||||
	struct pci_pwrctl_pwrseq_data *data;
 | 
			
		||||
	struct pci_pwrctrl_pwrseq_data *data;
 | 
			
		||||
	struct device *dev = &pdev->dev;
 | 
			
		||||
	int ret;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -45,22 +45,22 @@ static int pci_pwrctl_pwrseq_probe(struct platform_device *pdev)
 | 
			
		|||
		return dev_err_probe(dev, ret,
 | 
			
		||||
				     "Failed to power-on the device\n");
 | 
			
		||||
 | 
			
		||||
	ret = devm_add_action_or_reset(dev, devm_pci_pwrctl_pwrseq_power_off,
 | 
			
		||||
	ret = devm_add_action_or_reset(dev, devm_pci_pwrctrl_pwrseq_power_off,
 | 
			
		||||
				       data->pwrseq);
 | 
			
		||||
	if (ret)
 | 
			
		||||
		return ret;
 | 
			
		||||
 | 
			
		||||
	pci_pwrctl_init(&data->ctx, dev);
 | 
			
		||||
	pci_pwrctrl_init(&data->ctx, dev);
 | 
			
		||||
 | 
			
		||||
	ret = devm_pci_pwrctl_device_set_ready(dev, &data->ctx);
 | 
			
		||||
	ret = devm_pci_pwrctrl_device_set_ready(dev, &data->ctx);
 | 
			
		||||
	if (ret)
 | 
			
		||||
		return dev_err_probe(dev, ret,
 | 
			
		||||
				     "Failed to register the pwrctl wrapper\n");
 | 
			
		||||
				     "Failed to register the pwrctrl wrapper\n");
 | 
			
		||||
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static const struct of_device_id pci_pwrctl_pwrseq_of_match[] = {
 | 
			
		||||
static const struct of_device_id pci_pwrctrl_pwrseq_of_match[] = {
 | 
			
		||||
	{
 | 
			
		||||
		/* ATH11K in QCA6390 package. */
 | 
			
		||||
		.compatible = "pci17cb,1101",
 | 
			
		||||
| 
						 | 
				
			
			@ -78,16 +78,16 @@ static const struct of_device_id pci_pwrctl_pwrseq_of_match[] = {
 | 
			
		|||
	},
 | 
			
		||||
	{ }
 | 
			
		||||
};
 | 
			
		||||
MODULE_DEVICE_TABLE(of, pci_pwrctl_pwrseq_of_match);
 | 
			
		||||
MODULE_DEVICE_TABLE(of, pci_pwrctrl_pwrseq_of_match);
 | 
			
		||||
 | 
			
		||||
static struct platform_driver pci_pwrctl_pwrseq_driver = {
 | 
			
		||||
static struct platform_driver pci_pwrctrl_pwrseq_driver = {
 | 
			
		||||
	.driver = {
 | 
			
		||||
		.name = "pci-pwrctl-pwrseq",
 | 
			
		||||
		.of_match_table = pci_pwrctl_pwrseq_of_match,
 | 
			
		||||
		.name = "pci-pwrctrl-pwrseq",
 | 
			
		||||
		.of_match_table = pci_pwrctrl_pwrseq_of_match,
 | 
			
		||||
	},
 | 
			
		||||
	.probe = pci_pwrctl_pwrseq_probe,
 | 
			
		||||
	.probe = pci_pwrctrl_pwrseq_probe,
 | 
			
		||||
};
 | 
			
		||||
module_platform_driver(pci_pwrctl_pwrseq_driver);
 | 
			
		||||
module_platform_driver(pci_pwrctrl_pwrseq_driver);
 | 
			
		||||
 | 
			
		||||
MODULE_AUTHOR("Bartosz Golaszewski <bartosz.golaszewski@linaro.org>");
 | 
			
		||||
MODULE_DESCRIPTION("Generic PCI Power Control module for power sequenced devices");
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -17,7 +17,7 @@ static void pci_free_resources(struct pci_dev *dev)
 | 
			
		|||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void pci_pwrctl_unregister(struct device *dev)
 | 
			
		||||
static void pci_pwrctrl_unregister(struct device *dev)
 | 
			
		||||
{
 | 
			
		||||
	struct platform_device *pdev;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -34,7 +34,7 @@ static void pci_stop_dev(struct pci_dev *dev)
 | 
			
		|||
	pci_pme_active(dev, false);
 | 
			
		||||
 | 
			
		||||
	if (pci_dev_is_added(dev)) {
 | 
			
		||||
		pci_pwrctl_unregister(&dev->dev);
 | 
			
		||||
		pci_pwrctrl_unregister(&dev->dev);
 | 
			
		||||
		device_release_driver(&dev->dev);
 | 
			
		||||
		pci_proc_detach_device(dev);
 | 
			
		||||
		pci_remove_sysfs_dev_files(dev);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,8 +3,8 @@
 | 
			
		|||
 * Copyright (C) 2024 Linaro Ltd.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef __PCI_PWRCTL_H__
 | 
			
		||||
#define __PCI_PWRCTL_H__
 | 
			
		||||
#ifndef __PCI_PWRCTRL_H__
 | 
			
		||||
#define __PCI_PWRCTRL_H__
 | 
			
		||||
 | 
			
		||||
#include <linux/notifier.h>
 | 
			
		||||
#include <linux/workqueue.h>
 | 
			
		||||
| 
						 | 
				
			
			@ -29,14 +29,14 @@ struct device_link;
 | 
			
		|||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * struct pci_pwrctl - PCI device power control context.
 | 
			
		||||
 * struct pci_pwrctrl - PCI device power control context.
 | 
			
		||||
 * @dev: Address of the power controlling device.
 | 
			
		||||
 *
 | 
			
		||||
 * An object of this type must be allocated by the PCI power control device and
 | 
			
		||||
 * passed to the pwrctl subsystem to trigger a bus rescan and setup a device
 | 
			
		||||
 * passed to the pwrctrl subsystem to trigger a bus rescan and setup a device
 | 
			
		||||
 * link with the device once it's up.
 | 
			
		||||
 */
 | 
			
		||||
struct pci_pwrctl {
 | 
			
		||||
struct pci_pwrctrl {
 | 
			
		||||
	struct device *dev;
 | 
			
		||||
 | 
			
		||||
	/* Private: don't use. */
 | 
			
		||||
| 
						 | 
				
			
			@ -45,10 +45,10 @@ struct pci_pwrctl {
 | 
			
		|||
	struct work_struct work;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
void pci_pwrctl_init(struct pci_pwrctl *pwrctl, struct device *dev);
 | 
			
		||||
int pci_pwrctl_device_set_ready(struct pci_pwrctl *pwrctl);
 | 
			
		||||
void pci_pwrctl_device_unset_ready(struct pci_pwrctl *pwrctl);
 | 
			
		||||
int devm_pci_pwrctl_device_set_ready(struct device *dev,
 | 
			
		||||
				     struct pci_pwrctl *pwrctl);
 | 
			
		||||
void pci_pwrctrl_init(struct pci_pwrctrl *pwrctrl, struct device *dev);
 | 
			
		||||
int pci_pwrctrl_device_set_ready(struct pci_pwrctrl *pwrctrl);
 | 
			
		||||
void pci_pwrctrl_device_unset_ready(struct pci_pwrctrl *pwrctrl);
 | 
			
		||||
int devm_pci_pwrctrl_device_set_ready(struct device *dev,
 | 
			
		||||
				     struct pci_pwrctrl *pwrctrl);
 | 
			
		||||
 | 
			
		||||
#endif /* __PCI_PWRCTL_H__ */
 | 
			
		||||
#endif /* __PCI_PWRCTRL_H__ */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue