qcacld-3.0: Add pld support for get irq by ce id

Add pld support to get irq number by ce id.

Change-Id: I31499fa12ed3176c7cf3f38e65530764f169520c
CRs-Fixed: 3381121
Este commit está contenido en:
Venkateswara Naralasetty
2023-01-19 19:21:55 +05:30
cometido por Madan Koyyalamudi
padre 549dfcf544
commit 058c73bc44
Se han modificado 5 ficheros con 74 adiciones y 0 borrados

Ver fichero

@@ -1350,9 +1350,12 @@ int pld_get_irq(struct device *dev, int ce_id)
ret = pld_snoc_fw_sim_get_irq(dev, ce_id);
break;
case PLD_BUS_TYPE_IPCI:
ret = pld_ipci_get_irq(dev, ce_id);
break;
case PLD_BUS_TYPE_PCIE_FW_SIM:
case PLD_BUS_TYPE_IPCI_FW_SIM:
ret = pld_pcie_fw_sim_get_irq(dev, ce_id);
break;
case PLD_BUS_TYPE_PCIE:
default:
ret = -EINVAL;

Ver fichero

@@ -617,4 +617,33 @@ int pld_ipci_get_soc_info(struct device *dev, struct pld_soc_info *info)
return 0;
}
/*
* pld_ipci_get_irq() - Get irq by ce_id
* @dev: device
* @ce_id: CE id for which irq is requested
*
* Return irq number.
*
* Return: irq number for success
* Non zero failure code for errors
*/
int pld_ipci_get_irq(struct device *dev, int ce_id)
{
uint32_t msi_data_start;
uint32_t msi_data_count;
uint32_t msi_irq_start;
uint32_t msi_data;
int ret;
ret = icnss_get_user_msi_assignment(dev, "CE", &msi_data_count,
&msi_data_start, &msi_irq_start);
if (ret)
return ret;
msi_data = (ce_id % msi_data_count) + msi_irq_start;
ret = icnss_get_msi_irq(dev, msi_data);
return ret;
}
#endif

Ver fichero

@@ -210,6 +210,11 @@ static inline int pld_ipci_is_pci_ep_awake(struct device *dev)
{
return 0;
}
static inline int pld_ipci_get_irq(struct device *dev, int ce_id)
{
return 0;
}
#else
/**
* pld_ipci_register_driver() - Register platform device callback functions
@@ -265,6 +270,7 @@ int pld_ipci_wlan_disable(struct device *dev, enum pld_driver_mode mode);
* Non zero failure code for errors
*/
int pld_ipci_get_soc_info(struct device *dev, struct pld_soc_info *info);
int pld_ipci_get_irq(struct device *dev, int ce_id);
static inline int pld_ipci_power_on(struct device *dev)
{

Ver fichero

@@ -785,4 +785,34 @@ int pld_pcie_fw_sim_get_platform_cap(struct device *dev,
return 0;
}
/*
* pld_pcie_get_irq() - Get irq by ce_id
* @dev: device
* @ce_id: CE id for which irq is requested
*
* Return irq number.
*
* Return: irq number for success
* Non zero failure code for errors
*/
int pld_pcie_fw_sim_get_irq(struct device *dev, int ce_id)
{
uint32_t msi_data_start;
uint32_t msi_data_count;
uint32_t msi_irq_start;
uint32_t msi_data;
int ret;
ret = cnss_fw_sim_get_user_msi_assignment(dev, "CE",
&msi_data_count,
&msi_data_start,
&msi_irq_start);
if (ret)
return ret;
msi_data = (ce_id % msi_data_count) + msi_irq_start;
ret = cnss_fw_sim_get_msi_irq(dev, msi_data);
return ret;
}
#endif

Ver fichero

@@ -1,5 +1,6 @@
/*
* Copyright (c) 2016-2021 The Linux Foundation. All rights reserved.
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
@@ -153,6 +154,10 @@ static inline int pld_pcie_fw_sim_exit_power_save(struct device *dev)
return 0;
}
static inline int pld_pcie_fw_sim_get_irq(struct device *dev, int ce_id)
{
return 0;
}
#else
#include <net/cnss2.h>
@@ -166,6 +171,7 @@ void pld_pcie_fw_sim_unregister_driver(void);
int pld_pcie_fw_sim_get_platform_cap(struct device *dev,
struct pld_platform_cap *cap);
int pld_pcie_fw_sim_get_soc_info(struct device *dev, struct pld_soc_info *info);
int pld_pcie_fw_sim_get_irq(struct device *dev, int ce_id);
static inline int pld_pcie_fw_sim_get_user_msi_assignment(struct device *dev,
char *user_name,