Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v6.11-rc3 51 lines 1.6 kB view raw
1/* SPDX-License-Identifier: GPL-2.0-only */ 2/* 3 * Copyright (C) 2024 Linaro Ltd. 4 */ 5 6#ifndef __PCI_PWRCTL_H__ 7#define __PCI_PWRCTL_H__ 8 9#include <linux/notifier.h> 10 11struct device; 12struct device_link; 13 14/* 15 * This is a simple framework for solving the issue of PCI devices that require 16 * certain resources (regulators, GPIOs, clocks) to be enabled before the 17 * device can actually be detected on the PCI bus. 18 * 19 * The idea is to reuse the platform bus to populate OF nodes describing the 20 * PCI device and its resources, let these platform devices probe and enable 21 * relevant resources and then trigger a rescan of the PCI bus allowing for the 22 * same device (with a second associated struct device) to be registered with 23 * the PCI subsystem. 24 * 25 * To preserve a correct hierarchy for PCI power management and device reset, 26 * we create a device link between the power control platform device (parent) 27 * and the supplied PCI device (child). 28 */ 29 30/** 31 * struct pci_pwrctl - PCI device power control context. 32 * @dev: Address of the power controlling device. 33 * 34 * An object of this type must be allocated by the PCI power control device and 35 * passed to the pwrctl subsystem to trigger a bus rescan and setup a device 36 * link with the device once it's up. 37 */ 38struct pci_pwrctl { 39 struct device *dev; 40 41 /* Private: don't use. */ 42 struct notifier_block nb; 43 struct device_link *link; 44}; 45 46int pci_pwrctl_device_set_ready(struct pci_pwrctl *pwrctl); 47void pci_pwrctl_device_unset_ready(struct pci_pwrctl *pwrctl); 48int devm_pci_pwrctl_device_set_ready(struct device *dev, 49 struct pci_pwrctl *pwrctl); 50 51#endif /* __PCI_PWRCTL_H__ */