Merge irqchip changes related to ACPI support that are needed to enable GICv5 IWB ACPI probe ordering detection on ARM, including the addition of acpi_device_clear_deps() and RISC-V interrupt controller management code refactoring to extract generic code from it into the common ACPI IRQ code (Lorenzo Pieralisi) * acpi-irqchip: irqchip/gic-v5: Enable GICv5 IWB ACPI probe ordering detection ACPI/IORT: Implement ACPI infrastructure to enable GICv5 IWB probe deferral ACPI: irq: Move RISC-V interrupt controllers autodep to ACPI IRQ code ACPI: RISC-V: Fix riscv_acpi_add_prt_dep() loop handling ACPI: RISC-V: Check acpi_get_handle() status in riscv_acpi_add_prt_dep() ACPI: RISC-V: Fix riscv_acpi_irq_get_dep() loop termination ACPI: Add acpi_device_clear_deps() helper function
Showing the changes to include (2 of 13 files). Show all
Unified · Split
| @@ -94,6 +94,12 @@ static inline void acpi_preset_companion(struct device *dev, · 93 unmodified lines | |||
| 94 | ACPI_COMPANION_SET(dev, acpi_find_child_device(parent, addr, false)); | 94 | ACPI_COMPANION_SET(dev, acpi_find_child_device(parent, addr, false)); |
| 95 | } | 95 | } |
| 96 | 96 | ||
| 97 | static inline void acpi_device_clear_deps(struct device *dev) | ||
| 98 | { | ||
| 99 | if (has_acpi_companion(dev)) | ||
| 100 | acpi_dev_clear_dependencies(ACPI_COMPANION(dev)); | ||
| 101 | } | ||
| 102 | |||
| 97 | static inline const char *acpi_dev_name(struct acpi_device *adev) | 103 | static inline const char *acpi_dev_name(struct acpi_device *adev) |
| 98 | { | 104 | { |
| 99 | return dev_name(&adev->dev); | 105 | return dev_name(&adev->dev); |
| @@ -360,9 +366,10 @@ int acpi_gsi_to_irq (u32 gsi, unsigned int *irq); · 260 unmodified lines | |||
| 360 | int acpi_isa_irq_to_gsi (unsigned isa_irq, u32 *gsi); | 366 | int acpi_isa_irq_to_gsi (unsigned isa_irq, u32 *gsi); |
| 361 | 367 | ||
| 362 | typedef struct fwnode_handle *(*acpi_gsi_domain_disp_fn)(u32); | 368 | typedef struct fwnode_handle *(*acpi_gsi_domain_disp_fn)(u32); |
| 369 | typedef acpi_handle (*acpi_gsi_handle_disp_fn)(u32); | ||
| 363 | 370 | ||
| 364 | void acpi_set_irq_model(enum acpi_irq_model_id model, | 371 | void acpi_set_irq_model(enum acpi_irq_model_id model, |
| 365 | acpi_gsi_domain_disp_fn fn); | 372 | acpi_gsi_domain_disp_fn fn, acpi_gsi_handle_disp_fn gsi_dep_fn); |
| 366 | acpi_gsi_domain_disp_fn acpi_get_gsi_dispatcher(void); | 373 | acpi_gsi_domain_disp_fn acpi_get_gsi_dispatcher(void); |
| 367 | void acpi_set_gsi_to_irq_fallback(u32 (*)(u32)); | 374 | void acpi_set_gsi_to_irq_fallback(u32 (*)(u32)); |
| 368 | 375 | ||
| @@ -372,6 +379,8 @@ struct irq_domain *acpi_irq_create_hierarchy(unsigned int flags, · 3 unmodified lines | |||
| 372 | const struct irq_domain_ops *ops, | 379 | const struct irq_domain_ops *ops, |
| 373 | void *host_data); | 380 | void *host_data); |
| 374 | 381 | ||
| 382 | u32 acpi_irq_add_auto_dep(acpi_handle handle); | ||
| 383 | |||
| 375 | #ifdef CONFIG_X86_IO_APIC | 384 | #ifdef CONFIG_X86_IO_APIC |
| 376 | extern int acpi_get_override_irq(u32 gsi, int *trigger, int *polarity); | 385 | extern int acpi_get_override_irq(u32 gsi, int *trigger, int *polarity); |
| 377 | #else | 386 | #else |
| @@ -908,6 +917,8 @@ static inline void acpi_preset_companion(struct device *dev, · 530 unmodified lines | |||
| 908 | { | 917 | { |
| 909 | } | 918 | } |
| 910 | 919 | ||
| 920 | static inline void acpi_device_clear_deps(struct device *dev) {} | ||
| 921 | |||
| 911 | static inline const char *acpi_dev_name(struct acpi_device *adev) | 922 | static inline const char *acpi_dev_name(struct acpi_device *adev) |
| 912 | { | 923 | { |
| 913 | return NULL; | 924 | return NULL; |
| @@ -27,7 +27,8 @@ int iort_register_domain_token(int trans_id, phys_addr_t base, · 26 unmodified lines | |||
| 27 | struct fwnode_handle *fw_node); | 27 | struct fwnode_handle *fw_node); |
| 28 | void iort_deregister_domain_token(int trans_id); | 28 | void iort_deregister_domain_token(int trans_id); |
| 29 | struct fwnode_handle *iort_find_domain_token(int trans_id); | 29 | struct fwnode_handle *iort_find_domain_token(int trans_id); |
| 30 | struct fwnode_handle *iort_iwb_handle(u32 iwb_id); | 30 | acpi_handle iort_iwb_handle(u32 iwb_id); |
| 31 | struct fwnode_handle *iort_iwb_handle_fwnode(u32 iwb_id); | ||
| 31 | 32 | ||
| 32 | #ifdef CONFIG_ACPI_IORT | 33 | #ifdef CONFIG_ACPI_IORT |
| 33 | u32 iort_msi_map_id(struct device *dev, u32 id); | 34 | u32 iort_msi_map_id(struct device *dev, u32 id); |