qcacmn: remove PLD_PCIE_INIT compile flag and use runtime checks

This change will help to have pld and non-based based chipset
to work on the same WIN AP platform.

Change-Id: I778cf0d548f5a8575cd6a4fcc76afd0043e5942b
This commit is contained in:
Balamurugan Mahalingam
2018-06-25 12:57:44 +05:30
committed by nshrivas
szülő d0159640ea
commit 1b4476e7b6
2 fájl változott, egészen pontosan 52 új sor hozzáadva és 27 régi sor törölve

Fájl megtekintése

@@ -2078,10 +2078,9 @@ void hif_pci_close(struct hif_softc *hif_sc)
#define BAR_NUM 0
#ifndef CONFIG_PLD_PCIE_INIT
static int hif_enable_pci(struct hif_pci_softc *sc,
struct pci_dev *pdev,
const struct pci_device_id *id)
static int hif_enable_pci_nopld(struct hif_pci_softc *sc,
struct pci_dev *pdev,
const struct pci_device_id *id)
{
void __iomem *mem;
int ret = 0;
@@ -2193,29 +2192,27 @@ err_region:
pci_disable_device(pdev);
return ret;
}
#else
static int hif_enable_pci(struct hif_pci_softc *sc,
struct pci_dev *pdev,
const struct pci_device_id *id)
static int hif_enable_pci_pld(struct hif_pci_softc *sc,
struct pci_dev *pdev,
const struct pci_device_id *id)
{
PCI_CFG_TO_DISABLE_L1SS_STATES(pdev, 0x188);
sc->pci_enabled = true;
return 0;
}
#endif
#ifndef CONFIG_PLD_PCIE_INIT
static inline void hif_pci_deinit(struct hif_pci_softc *sc)
static void hif_pci_deinit_nopld(struct hif_pci_softc *sc)
{
pci_disable_msi(sc->pdev);
pci_iounmap(sc->pdev, sc->mem);
pci_clear_master(sc->pdev);
pci_release_region(sc->pdev, BAR_NUM);
pci_disable_device(sc->pdev);
}
#else
static inline void hif_pci_deinit(struct hif_pci_softc *sc) {}
#endif
static void hif_pci_deinit_pld(struct hif_pci_softc *sc) {}
static void hif_disable_pci(struct hif_pci_softc *sc)
{
@@ -2226,8 +2223,7 @@ static void hif_disable_pci(struct hif_pci_softc *sc)
return;
}
hif_pci_device_reset(sc);
hif_pci_deinit(sc);
sc->hif_pci_deinit(sc);
sc->mem = NULL;
ol_sc->mem = NULL;
@@ -2648,15 +2644,12 @@ void hif_pci_disable_bus(struct hif_softc *scn)
#endif
mem = (void __iomem *)sc->mem;
if (mem) {
#ifndef CONFIG_PLD_PCIE_INIT
pci_disable_msi(pdev);
#endif
hif_dump_pipe_debug_count(scn);
if (scn->athdiag_procfs_inited) {
athdiag_procfs_remove();
scn->athdiag_procfs_inited = false;
}
hif_pci_deinit(sc);
sc->hif_pci_deinit(sc);
scn->mem = NULL;
}
HIF_INFO("%s: X", __func__);
@@ -3780,8 +3773,8 @@ static void hif_target_sync(struct hif_softc *scn)
PCIE_SOC_WAKE_ADDRESS, PCIE_SOC_WAKE_RESET);
}
#ifdef CONFIG_PLD_PCIE_INIT
static void hif_pci_get_soc_info(struct hif_pci_softc *sc, struct device *dev)
static void hif_pci_get_soc_info_pld(struct hif_pci_softc *sc,
struct device *dev)
{
struct pld_soc_info info;
@@ -3790,10 +3783,36 @@ static void hif_pci_get_soc_info(struct hif_pci_softc *sc, struct device *dev)
sc->ce_sc.ol_sc.mem = info.v_addr;
sc->ce_sc.ol_sc.mem_pa = info.p_addr;
}
#else
static void hif_pci_get_soc_info(struct hif_pci_softc *sc, struct device *dev)
static void hif_pci_get_soc_info_nopld(struct hif_pci_softc *sc,
struct device *dev)
{}
#endif
static bool hif_is_pld_based_target(int device_id)
{
switch (device_id) {
case QCA6290_DEVICE_ID:
case QCA6290_EMULATION_DEVICE_ID:
case QCA6390_DEVICE_ID:
case AR6320_DEVICE_ID:
return true;
}
return false;
}
static void hif_pci_init_deinit_ops_attach(struct hif_pci_softc *sc,
int device_id)
{
if (hif_is_pld_based_target(device_id)) {
sc->hif_enable_pci = hif_enable_pci_pld;
sc->hif_pci_deinit = hif_pci_deinit_pld;
sc->hif_pci_get_soc_info = hif_pci_get_soc_info_pld;
} else {
sc->hif_enable_pci = hif_enable_pci_nopld;
sc->hif_pci_deinit = hif_pci_deinit_nopld;
sc->hif_pci_get_soc_info = hif_pci_get_soc_info_nopld;
}
}
#ifdef HIF_REG_WINDOW_SUPPORT
static void hif_pci_init_reg_windowing_support(struct hif_pci_softc *sc,
@@ -3857,9 +3876,10 @@ QDF_STATUS hif_pci_enable_bus(struct hif_softc *ol_sc,
sc->devid = id->device;
sc->cacheline_sz = dma_get_cache_alignment();
tgt_info = hif_get_target_info_handle(hif_hdl);
hif_pci_get_soc_info(sc, dev);
hif_pci_init_deinit_ops_attach(sc, id->device);
sc->hif_pci_get_soc_info(sc, dev);
again:
ret = hif_enable_pci(sc, pdev, id);
ret = sc->hif_enable_pci(sc, pdev, id);
if (ret < 0) {
HIF_ERROR("%s: ERROR - hif_enable_pci error = %d",
__func__, ret);

Fájl megtekintése

@@ -136,6 +136,11 @@ struct hif_pci_softc {
struct dentry *pm_dentry;
#endif
#endif
int (*hif_enable_pci)(struct hif_pci_softc *sc, struct pci_dev *pdev,
const struct pci_device_id *id);
void (*hif_pci_deinit)(struct hif_pci_softc *sc);
void (*hif_pci_get_soc_info)(struct hif_pci_softc *sc,
struct device *dev);
};
bool hif_pci_targ_is_present(struct hif_softc *scn, void *__iomem *mem);