diff --git a/core/pld/src/pld_common.c b/core/pld/src/pld_common.c index a6de61bd58af..1dbc7d33be3f 100644 --- a/core/pld/src/pld_common.c +++ b/core/pld/src/pld_common.c @@ -1744,6 +1744,7 @@ void *pld_smmu_get_domain(struct device *dev) case PLD_BUS_TYPE_SNOC_FW_SIM: break; case PLD_BUS_TYPE_IPCI: + pld_ipci_smmu_get_domain(dev); break; case PLD_BUS_TYPE_SDIO: case PLD_BUS_TYPE_USB: @@ -1813,6 +1814,7 @@ int pld_smmu_map(struct device *dev, phys_addr_t paddr, case PLD_BUS_TYPE_SNOC_FW_SIM: break; case PLD_BUS_TYPE_IPCI: + ret = pld_ipci_smmu_map(dev, paddr, iova_addr, size); break; case PLD_BUS_TYPE_PCIE: ret = pld_pcie_smmu_map(dev, paddr, iova_addr, size); @@ -1917,6 +1919,7 @@ int pld_srng_request_irq(struct device *dev, int irq, irq_handler_t handler, ret = -ENODEV; break; case PLD_BUS_TYPE_IPCI: + ret = request_irq(irq, handler, irqflags, devname, dev_data); break; default: pr_err("Invalid device type %d\n", type); @@ -1959,6 +1962,7 @@ int pld_srng_free_irq(struct device *dev, int irq, void *dev_data) ret = -ENODEV; break; case PLD_BUS_TYPE_IPCI: + free_irq(irq, dev_data); break; default: pr_err("Invalid device type %d\n", type); @@ -1991,6 +1995,7 @@ void pld_srng_enable_irq(struct device *dev, int irq) case PLD_BUS_TYPE_SDIO: break; case PLD_BUS_TYPE_IPCI: + enable_irq(irq); break; default: pr_err("Invalid device type\n"); @@ -2020,6 +2025,7 @@ void pld_srng_disable_irq(struct device *dev, int irq) case PLD_BUS_TYPE_SDIO: break; case PLD_BUS_TYPE_IPCI: + disable_irq_nosync(irq); break; default: pr_err("Invalid device type\n"); diff --git a/core/pld/src/pld_ipci.h b/core/pld/src/pld_ipci.h index 8de7006803c2..1a26c770ee0f 100644 --- a/core/pld/src/pld_ipci.h +++ b/core/pld/src/pld_ipci.h @@ -109,6 +109,17 @@ static inline int pld_ipci_set_fw_log_mode(struct device *dev, u8 fw_log_mode) return 0; } +static inline void *pld_ipci_smmu_get_domain(struct device *dev) +{ + return NULL; +} + +static inline int pld_ipci_smmu_map(struct device *dev, phys_addr_t paddr, + uint32_t *iova_addr, size_t size) +{ + return 0; +} + #else int pld_ipci_register_driver(void); void pld_ipci_unregister_driver(void); @@ -175,5 +186,16 @@ static inline int pld_ipci_set_fw_log_mode(struct device *dev, u8 fw_log_mode) return icnss_set_fw_log_mode(dev, fw_log_mode); } +static inline void *pld_ipci_smmu_get_domain(struct device *dev) +{ + return icnss_smmu_get_domain(dev); +} + +static inline int pld_ipci_smmu_map(struct device *dev, phys_addr_t paddr, + uint32_t *iova_addr, size_t size) +{ + return icnss_smmu_map(dev, paddr, iova_addr, size); +} + #endif #endif