Revert "genirq: Allow the PM device to originate from irq domain"
This reverts commit 652e7b4d73
which is
commit 1f8863bfb5ca500ea1c7669b16b1931ba27fce20 upstream.
It breaks the Android kernel abi and can be brought back in the future
in an abi-safe way if it is really needed.
Bug: 161946584
Change-Id: I0ce88d80cd15d5f5d561cb9569209c5bf2e40b0f
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
This commit is contained in:
parent
e62a1579e0
commit
0c105dabe6
@ -150,8 +150,6 @@ struct irq_domain_chip_generic;
|
||||
* @gc: Pointer to a list of generic chips. There is a helper function for
|
||||
* setting up one or more generic chips for interrupt controllers
|
||||
* drivers using the generic chip library which uses this pointer.
|
||||
* @dev: Pointer to a device that the domain represent, and that will be
|
||||
* used for power management purposes.
|
||||
* @parent: Pointer to parent irq_domain to support hierarchy irq_domains
|
||||
* @debugfs_file: dentry for the domain debugfs file
|
||||
*
|
||||
@ -174,7 +172,6 @@ struct irq_domain {
|
||||
struct fwnode_handle *fwnode;
|
||||
enum irq_domain_bus_token bus_token;
|
||||
struct irq_domain_chip_generic *gc;
|
||||
struct device *dev;
|
||||
#ifdef CONFIG_IRQ_DOMAIN_HIERARCHY
|
||||
struct irq_domain *parent;
|
||||
#endif
|
||||
@ -236,13 +233,6 @@ static inline struct device_node *irq_domain_get_of_node(struct irq_domain *d)
|
||||
return to_of_node(d->fwnode);
|
||||
}
|
||||
|
||||
static inline void irq_domain_set_pm_device(struct irq_domain *d,
|
||||
struct device *dev)
|
||||
{
|
||||
if (d)
|
||||
d->dev = dev;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_IRQ_DOMAIN
|
||||
struct fwnode_handle *__irq_domain_alloc_fwnode(unsigned int type, int id,
|
||||
const char *name, phys_addr_t *pa);
|
||||
|
@ -1609,17 +1609,6 @@ int irq_chip_compose_msi_msg(struct irq_data *data, struct msi_msg *msg)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct device *irq_get_parent_device(struct irq_data *data)
|
||||
{
|
||||
if (data->chip->parent_device)
|
||||
return data->chip->parent_device;
|
||||
|
||||
if (data->domain)
|
||||
return data->domain->dev;
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* irq_chip_pm_get - Enable power for an IRQ chip
|
||||
* @data: Pointer to interrupt specific data
|
||||
@ -1629,13 +1618,12 @@ static struct device *irq_get_parent_device(struct irq_data *data)
|
||||
*/
|
||||
int irq_chip_pm_get(struct irq_data *data)
|
||||
{
|
||||
struct device *dev = irq_get_parent_device(data);
|
||||
int retval;
|
||||
|
||||
if (IS_ENABLED(CONFIG_PM) && dev) {
|
||||
retval = pm_runtime_get_sync(dev);
|
||||
if (IS_ENABLED(CONFIG_PM) && data->chip->parent_device) {
|
||||
retval = pm_runtime_get_sync(data->chip->parent_device);
|
||||
if (retval < 0) {
|
||||
pm_runtime_put_noidle(dev);
|
||||
pm_runtime_put_noidle(data->chip->parent_device);
|
||||
return retval;
|
||||
}
|
||||
}
|
||||
@ -1653,11 +1641,10 @@ int irq_chip_pm_get(struct irq_data *data)
|
||||
*/
|
||||
int irq_chip_pm_put(struct irq_data *data)
|
||||
{
|
||||
struct device *dev = irq_get_parent_device(data);
|
||||
int retval = 0;
|
||||
|
||||
if (IS_ENABLED(CONFIG_PM) && dev)
|
||||
retval = pm_runtime_put(dev);
|
||||
if (IS_ENABLED(CONFIG_PM) && data->chip->parent_device)
|
||||
retval = pm_runtime_put(data->chip->parent_device);
|
||||
|
||||
return (retval < 0) ? retval : 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user