qcacld-3.0: Correction in SMMU mapping and interrupt registeration

Add pld wrapper for interrupt registration and SMMU map for
WCN6750.

Change-Id: Iea7130f3462b4d1fb2bf0dde147f7e5f51c491b4
This commit is contained in:
Naman Padhiar
2020-03-05 00:19:47 +05:30
committed by nshrivas
父節點 3667f24544
當前提交 580e5e989d
共有 2 個文件被更改,包括 28 次插入0 次删除

查看文件

@@ -1744,6 +1744,7 @@ void *pld_smmu_get_domain(struct device *dev)
case PLD_BUS_TYPE_SNOC_FW_SIM: case PLD_BUS_TYPE_SNOC_FW_SIM:
break; break;
case PLD_BUS_TYPE_IPCI: case PLD_BUS_TYPE_IPCI:
pld_ipci_smmu_get_domain(dev);
break; break;
case PLD_BUS_TYPE_SDIO: case PLD_BUS_TYPE_SDIO:
case PLD_BUS_TYPE_USB: 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: case PLD_BUS_TYPE_SNOC_FW_SIM:
break; break;
case PLD_BUS_TYPE_IPCI: case PLD_BUS_TYPE_IPCI:
ret = pld_ipci_smmu_map(dev, paddr, iova_addr, size);
break; break;
case PLD_BUS_TYPE_PCIE: case PLD_BUS_TYPE_PCIE:
ret = pld_pcie_smmu_map(dev, paddr, iova_addr, size); 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; ret = -ENODEV;
break; break;
case PLD_BUS_TYPE_IPCI: case PLD_BUS_TYPE_IPCI:
ret = request_irq(irq, handler, irqflags, devname, dev_data);
break; break;
default: default:
pr_err("Invalid device type %d\n", type); 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; ret = -ENODEV;
break; break;
case PLD_BUS_TYPE_IPCI: case PLD_BUS_TYPE_IPCI:
free_irq(irq, dev_data);
break; break;
default: default:
pr_err("Invalid device type %d\n", type); 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: case PLD_BUS_TYPE_SDIO:
break; break;
case PLD_BUS_TYPE_IPCI: case PLD_BUS_TYPE_IPCI:
enable_irq(irq);
break; break;
default: default:
pr_err("Invalid device type\n"); 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: case PLD_BUS_TYPE_SDIO:
break; break;
case PLD_BUS_TYPE_IPCI: case PLD_BUS_TYPE_IPCI:
disable_irq_nosync(irq);
break; break;
default: default:
pr_err("Invalid device type\n"); pr_err("Invalid device type\n");

查看文件

@@ -109,6 +109,17 @@ static inline int pld_ipci_set_fw_log_mode(struct device *dev, u8 fw_log_mode)
return 0; 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 #else
int pld_ipci_register_driver(void); int pld_ipci_register_driver(void);
void pld_ipci_unregister_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); 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
#endif #endif