cnss2: Add support for WLAN MANGO PCI device
Add PCI device ID config and code updates to handle MANGO WLAN device. CRs-fixed: 3210010 Change-Id: I48fffdb8c7ecf5343908d823facf7a2fad2f2dea
Bu işleme şunda yer alıyor:
@@ -1,7 +1,7 @@
|
|||||||
// SPDX-License-Identifier: GPL-2.0-only
|
// SPDX-License-Identifier: GPL-2.0-only
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2018-2021, The Linux Foundation. All rights reserved.
|
* Copyright (c) 2018-2021, The Linux Foundation. All rights reserved.
|
||||||
* Copyright (c) 2021 Qualcomm Innovation Center, Inc. All rights reserved.
|
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "bus.h"
|
#include "bus.h"
|
||||||
@@ -30,6 +30,7 @@ enum cnss_dev_bus_type cnss_get_bus_type(unsigned long device_id)
|
|||||||
case QCA6390_DEVICE_ID:
|
case QCA6390_DEVICE_ID:
|
||||||
case QCA6490_DEVICE_ID:
|
case QCA6490_DEVICE_ID:
|
||||||
case KIWI_DEVICE_ID:
|
case KIWI_DEVICE_ID:
|
||||||
|
case MANGO_DEVICE_ID:
|
||||||
return CNSS_BUS_PCI;
|
return CNSS_BUS_PCI;
|
||||||
default:
|
default:
|
||||||
cnss_pr_err("Unknown device_id: 0x%lx\n", device_id);
|
cnss_pr_err("Unknown device_id: 0x%lx\n", device_id);
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2018-2021, The Linux Foundation. All rights reserved.
|
* Copyright (c) 2018-2021, The Linux Foundation. All rights reserved.
|
||||||
* Copyright (c) 2021 Qualcomm Innovation Center, Inc. All rights reserved.
|
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _CNSS_BUS_H
|
#ifndef _CNSS_BUS_H
|
||||||
@@ -22,6 +22,8 @@
|
|||||||
#define QCA6490_DEVICE_ID 0x1103
|
#define QCA6490_DEVICE_ID 0x1103
|
||||||
#define KIWI_VENDOR_ID 0x17CB
|
#define KIWI_VENDOR_ID 0x17CB
|
||||||
#define KIWI_DEVICE_ID 0x1107
|
#define KIWI_DEVICE_ID 0x1107
|
||||||
|
#define MANGO_VENDOR_ID 0x17CB
|
||||||
|
#define MANGO_DEVICE_ID 0x110A
|
||||||
|
|
||||||
enum cnss_dev_bus_type cnss_get_dev_bus_type(struct device *dev);
|
enum cnss_dev_bus_type cnss_get_dev_bus_type(struct device *dev);
|
||||||
enum cnss_dev_bus_type cnss_get_bus_type(unsigned long device_id);
|
enum cnss_dev_bus_type cnss_get_bus_type(unsigned long device_id);
|
||||||
|
@@ -2949,6 +2949,7 @@ int cnss_register_ramdump(struct cnss_plat_data *plat_priv)
|
|||||||
case QCA6390_DEVICE_ID:
|
case QCA6390_DEVICE_ID:
|
||||||
case QCA6490_DEVICE_ID:
|
case QCA6490_DEVICE_ID:
|
||||||
case KIWI_DEVICE_ID:
|
case KIWI_DEVICE_ID:
|
||||||
|
case MANGO_DEVICE_ID:
|
||||||
ret = cnss_register_ramdump_v2(plat_priv);
|
ret = cnss_register_ramdump_v2(plat_priv);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -2969,6 +2970,7 @@ void cnss_unregister_ramdump(struct cnss_plat_data *plat_priv)
|
|||||||
case QCA6390_DEVICE_ID:
|
case QCA6390_DEVICE_ID:
|
||||||
case QCA6490_DEVICE_ID:
|
case QCA6490_DEVICE_ID:
|
||||||
case KIWI_DEVICE_ID:
|
case KIWI_DEVICE_ID:
|
||||||
|
case MANGO_DEVICE_ID:
|
||||||
cnss_unregister_ramdump_v2(plat_priv);
|
cnss_unregister_ramdump_v2(plat_priv);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -3450,6 +3452,7 @@ static ssize_t fs_ready_store(struct device *dev,
|
|||||||
case QCA6390_DEVICE_ID:
|
case QCA6390_DEVICE_ID:
|
||||||
case QCA6490_DEVICE_ID:
|
case QCA6490_DEVICE_ID:
|
||||||
case KIWI_DEVICE_ID:
|
case KIWI_DEVICE_ID:
|
||||||
|
case MANGO_DEVICE_ID:
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
cnss_pr_err("Not supported for device ID 0x%lx\n",
|
cnss_pr_err("Not supported for device ID 0x%lx\n",
|
||||||
@@ -3839,6 +3842,7 @@ static const struct platform_device_id cnss_platform_id_table[] = {
|
|||||||
{ .name = "qca6390", .driver_data = QCA6390_DEVICE_ID, },
|
{ .name = "qca6390", .driver_data = QCA6390_DEVICE_ID, },
|
||||||
{ .name = "qca6490", .driver_data = QCA6490_DEVICE_ID, },
|
{ .name = "qca6490", .driver_data = QCA6490_DEVICE_ID, },
|
||||||
{ .name = "kiwi", .driver_data = KIWI_DEVICE_ID, },
|
{ .name = "kiwi", .driver_data = KIWI_DEVICE_ID, },
|
||||||
|
{ .name = "mango", .driver_data = MANGO_DEVICE_ID, },
|
||||||
{ .name = "qcaconv", .driver_data = 0, },
|
{ .name = "qcaconv", .driver_data = 0, },
|
||||||
{ },
|
{ },
|
||||||
};
|
};
|
||||||
@@ -3860,8 +3864,11 @@ static const struct of_device_id cnss_of_match_table[] = {
|
|||||||
.compatible = "qcom,cnss-kiwi",
|
.compatible = "qcom,cnss-kiwi",
|
||||||
.data = (void *)&cnss_platform_id_table[4]},
|
.data = (void *)&cnss_platform_id_table[4]},
|
||||||
{
|
{
|
||||||
.compatible = "qcom,cnss-qca-converged",
|
.compatible = "qcom,cnss-mango",
|
||||||
.data = (void *)&cnss_platform_id_table[5]},
|
.data = (void *)&cnss_platform_id_table[5]},
|
||||||
|
{
|
||||||
|
.compatible = "qcom,cnss-qca-converged",
|
||||||
|
.data = (void *)&cnss_platform_id_table[6]},
|
||||||
{ },
|
{ },
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(of, cnss_of_match_table);
|
MODULE_DEVICE_TABLE(of, cnss_of_match_table);
|
||||||
|
33
cnss2/pci.c
33
cnss2/pci.c
@@ -43,6 +43,7 @@
|
|||||||
#define QCA6390_PATH_PREFIX "qca6390/"
|
#define QCA6390_PATH_PREFIX "qca6390/"
|
||||||
#define QCA6490_PATH_PREFIX "qca6490/"
|
#define QCA6490_PATH_PREFIX "qca6490/"
|
||||||
#define KIWI_PATH_PREFIX "kiwi/"
|
#define KIWI_PATH_PREFIX "kiwi/"
|
||||||
|
#define MANGO_PATH_PREFIX "mango/"
|
||||||
#define DEFAULT_PHY_M3_FILE_NAME "m3.bin"
|
#define DEFAULT_PHY_M3_FILE_NAME "m3.bin"
|
||||||
#define DEFAULT_PHY_UCODE_FILE_NAME "phy_ucode.elf"
|
#define DEFAULT_PHY_UCODE_FILE_NAME "phy_ucode.elf"
|
||||||
#define PHY_UCODE_V2_FILE_NAME "phy_ucode20.elf"
|
#define PHY_UCODE_V2_FILE_NAME "phy_ucode20.elf"
|
||||||
@@ -1264,6 +1265,7 @@ int cnss_pci_recover_link_down(struct cnss_pci_data *pci_priv)
|
|||||||
case QCA6390_DEVICE_ID:
|
case QCA6390_DEVICE_ID:
|
||||||
case QCA6490_DEVICE_ID:
|
case QCA6490_DEVICE_ID:
|
||||||
case KIWI_DEVICE_ID:
|
case KIWI_DEVICE_ID:
|
||||||
|
case MANGO_DEVICE_ID:
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return -EOPNOTSUPP;
|
return -EOPNOTSUPP;
|
||||||
@@ -1474,6 +1476,12 @@ static void cnss_pci_dump_bl_sram_mem(struct cnss_pci_data *pci_priv)
|
|||||||
pbl_log_max_size = KIWI_DEBUG_PBL_LOG_SRAM_MAX_SIZE;
|
pbl_log_max_size = KIWI_DEBUG_PBL_LOG_SRAM_MAX_SIZE;
|
||||||
sbl_log_max_size = KIWI_DEBUG_SBL_LOG_SRAM_MAX_SIZE;
|
sbl_log_max_size = KIWI_DEBUG_SBL_LOG_SRAM_MAX_SIZE;
|
||||||
break;
|
break;
|
||||||
|
case MANGO_DEVICE_ID:
|
||||||
|
pbl_bootstrap_status_reg = MANGO_PBL_BOOTSTRAP_STATUS;
|
||||||
|
pbl_log_sram_start = MANGO_DEBUG_PBL_LOG_SRAM_START;
|
||||||
|
pbl_log_max_size = MANGO_DEBUG_PBL_LOG_SRAM_MAX_SIZE;
|
||||||
|
sbl_log_max_size = MANGO_DEBUG_SBL_LOG_SRAM_MAX_SIZE;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -1968,6 +1976,7 @@ static int cnss_pci_get_device_timestamp(struct cnss_pci_data *pci_priv,
|
|||||||
|
|
||||||
switch (pci_priv->device_id) {
|
switch (pci_priv->device_id) {
|
||||||
case KIWI_DEVICE_ID:
|
case KIWI_DEVICE_ID:
|
||||||
|
case MANGO_DEVICE_ID:
|
||||||
cnss_pci_reg_read(pci_priv, PCIE_MHI_TIME_LOW, &low);
|
cnss_pci_reg_read(pci_priv, PCIE_MHI_TIME_LOW, &low);
|
||||||
cnss_pci_reg_read(pci_priv, PCIE_MHI_TIME_HIGH, &high);
|
cnss_pci_reg_read(pci_priv, PCIE_MHI_TIME_HIGH, &high);
|
||||||
break;
|
break;
|
||||||
@@ -1988,6 +1997,7 @@ static void cnss_pci_enable_time_sync_counter(struct cnss_pci_data *pci_priv)
|
|||||||
{
|
{
|
||||||
switch (pci_priv->device_id) {
|
switch (pci_priv->device_id) {
|
||||||
case KIWI_DEVICE_ID:
|
case KIWI_DEVICE_ID:
|
||||||
|
case MANGO_DEVICE_ID:
|
||||||
return;
|
return;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@@ -2001,6 +2011,7 @@ static void cnss_pci_clear_time_sync_counter(struct cnss_pci_data *pci_priv)
|
|||||||
{
|
{
|
||||||
switch (pci_priv->device_id) {
|
switch (pci_priv->device_id) {
|
||||||
case KIWI_DEVICE_ID:
|
case KIWI_DEVICE_ID:
|
||||||
|
case MANGO_DEVICE_ID:
|
||||||
return;
|
return;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@@ -2019,6 +2030,7 @@ static void cnss_pci_time_sync_reg_update(struct cnss_pci_data *pci_priv,
|
|||||||
|
|
||||||
switch (pci_priv->device_id) {
|
switch (pci_priv->device_id) {
|
||||||
case KIWI_DEVICE_ID:
|
case KIWI_DEVICE_ID:
|
||||||
|
case MANGO_DEVICE_ID:
|
||||||
/* Use the next two shadow registers after host's usage */
|
/* Use the next two shadow registers after host's usage */
|
||||||
time_reg_low = PCIE_SHADOW_REG_VALUE_0 +
|
time_reg_low = PCIE_SHADOW_REG_VALUE_0 +
|
||||||
(pci_priv->plat_priv->num_shadow_regs_v3 *
|
(pci_priv->plat_priv->num_shadow_regs_v3 *
|
||||||
@@ -2135,6 +2147,7 @@ static int cnss_pci_start_time_sync_update(struct cnss_pci_data *pci_priv)
|
|||||||
case QCA6390_DEVICE_ID:
|
case QCA6390_DEVICE_ID:
|
||||||
case QCA6490_DEVICE_ID:
|
case QCA6490_DEVICE_ID:
|
||||||
case KIWI_DEVICE_ID:
|
case KIWI_DEVICE_ID:
|
||||||
|
case MANGO_DEVICE_ID:
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return -EOPNOTSUPP;
|
return -EOPNOTSUPP;
|
||||||
@@ -2156,6 +2169,7 @@ static void cnss_pci_stop_time_sync_update(struct cnss_pci_data *pci_priv)
|
|||||||
case QCA6390_DEVICE_ID:
|
case QCA6390_DEVICE_ID:
|
||||||
case QCA6490_DEVICE_ID:
|
case QCA6490_DEVICE_ID:
|
||||||
case KIWI_DEVICE_ID:
|
case KIWI_DEVICE_ID:
|
||||||
|
case MANGO_DEVICE_ID:
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return;
|
return;
|
||||||
@@ -2766,6 +2780,7 @@ int cnss_pci_dev_powerup(struct cnss_pci_data *pci_priv)
|
|||||||
case QCA6390_DEVICE_ID:
|
case QCA6390_DEVICE_ID:
|
||||||
case QCA6490_DEVICE_ID:
|
case QCA6490_DEVICE_ID:
|
||||||
case KIWI_DEVICE_ID:
|
case KIWI_DEVICE_ID:
|
||||||
|
case MANGO_DEVICE_ID:
|
||||||
ret = cnss_qca6290_powerup(pci_priv);
|
ret = cnss_qca6290_powerup(pci_priv);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -2794,6 +2809,7 @@ int cnss_pci_dev_shutdown(struct cnss_pci_data *pci_priv)
|
|||||||
case QCA6390_DEVICE_ID:
|
case QCA6390_DEVICE_ID:
|
||||||
case QCA6490_DEVICE_ID:
|
case QCA6490_DEVICE_ID:
|
||||||
case KIWI_DEVICE_ID:
|
case KIWI_DEVICE_ID:
|
||||||
|
case MANGO_DEVICE_ID:
|
||||||
ret = cnss_qca6290_shutdown(pci_priv);
|
ret = cnss_qca6290_shutdown(pci_priv);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -2822,6 +2838,7 @@ int cnss_pci_dev_crash_shutdown(struct cnss_pci_data *pci_priv)
|
|||||||
case QCA6390_DEVICE_ID:
|
case QCA6390_DEVICE_ID:
|
||||||
case QCA6490_DEVICE_ID:
|
case QCA6490_DEVICE_ID:
|
||||||
case KIWI_DEVICE_ID:
|
case KIWI_DEVICE_ID:
|
||||||
|
case MANGO_DEVICE_ID:
|
||||||
cnss_qca6290_crash_shutdown(pci_priv);
|
cnss_qca6290_crash_shutdown(pci_priv);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -2850,6 +2867,7 @@ int cnss_pci_dev_ramdump(struct cnss_pci_data *pci_priv)
|
|||||||
case QCA6390_DEVICE_ID:
|
case QCA6390_DEVICE_ID:
|
||||||
case QCA6490_DEVICE_ID:
|
case QCA6490_DEVICE_ID:
|
||||||
case KIWI_DEVICE_ID:
|
case KIWI_DEVICE_ID:
|
||||||
|
case MANGO_DEVICE_ID:
|
||||||
ret = cnss_qca6290_ramdump(pci_priv);
|
ret = cnss_qca6290_ramdump(pci_priv);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -3735,6 +3753,7 @@ int cnss_pci_force_wake_request_sync(struct device *dev, int timeout_us)
|
|||||||
case QCA6390_DEVICE_ID:
|
case QCA6390_DEVICE_ID:
|
||||||
case QCA6490_DEVICE_ID:
|
case QCA6490_DEVICE_ID:
|
||||||
case KIWI_DEVICE_ID:
|
case KIWI_DEVICE_ID:
|
||||||
|
case MANGO_DEVICE_ID:
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return 0;
|
return 0;
|
||||||
@@ -3776,6 +3795,7 @@ int cnss_pci_force_wake_request(struct device *dev)
|
|||||||
case QCA6390_DEVICE_ID:
|
case QCA6390_DEVICE_ID:
|
||||||
case QCA6490_DEVICE_ID:
|
case QCA6490_DEVICE_ID:
|
||||||
case KIWI_DEVICE_ID:
|
case KIWI_DEVICE_ID:
|
||||||
|
case MANGO_DEVICE_ID:
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return 0;
|
return 0;
|
||||||
@@ -3811,6 +3831,7 @@ int cnss_pci_is_device_awake(struct device *dev)
|
|||||||
case QCA6390_DEVICE_ID:
|
case QCA6390_DEVICE_ID:
|
||||||
case QCA6490_DEVICE_ID:
|
case QCA6490_DEVICE_ID:
|
||||||
case KIWI_DEVICE_ID:
|
case KIWI_DEVICE_ID:
|
||||||
|
case MANGO_DEVICE_ID:
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return 0;
|
return 0;
|
||||||
@@ -3838,6 +3859,7 @@ int cnss_pci_force_wake_release(struct device *dev)
|
|||||||
case QCA6390_DEVICE_ID:
|
case QCA6390_DEVICE_ID:
|
||||||
case QCA6490_DEVICE_ID:
|
case QCA6490_DEVICE_ID:
|
||||||
case KIWI_DEVICE_ID:
|
case KIWI_DEVICE_ID:
|
||||||
|
case MANGO_DEVICE_ID:
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return 0;
|
return 0;
|
||||||
@@ -4031,6 +4053,7 @@ int cnss_pci_load_m3(struct cnss_pci_data *pci_priv)
|
|||||||
phy_filename = DEFAULT_PHY_M3_FILE_NAME;
|
phy_filename = DEFAULT_PHY_M3_FILE_NAME;
|
||||||
break;
|
break;
|
||||||
case KIWI_DEVICE_ID:
|
case KIWI_DEVICE_ID:
|
||||||
|
case MANGO_DEVICE_ID:
|
||||||
switch (plat_priv->device_version.major_version) {
|
switch (plat_priv->device_version.major_version) {
|
||||||
case FW_V2_NUMBER:
|
case FW_V2_NUMBER:
|
||||||
phy_filename = PHY_UCODE_V2_FILE_NAME;
|
phy_filename = PHY_UCODE_V2_FILE_NAME;
|
||||||
@@ -4490,6 +4513,7 @@ static int cnss_pci_enable_bus(struct cnss_pci_data *pci_priv)
|
|||||||
case QCA6390_DEVICE_ID:
|
case QCA6390_DEVICE_ID:
|
||||||
case QCA6490_DEVICE_ID:
|
case QCA6490_DEVICE_ID:
|
||||||
case KIWI_DEVICE_ID:
|
case KIWI_DEVICE_ID:
|
||||||
|
case MANGO_DEVICE_ID:
|
||||||
pci_priv->dma_bit_mask = PCI_DMA_MASK_36_BIT;
|
pci_priv->dma_bit_mask = PCI_DMA_MASK_36_BIT;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -4808,6 +4832,7 @@ static void cnss_pci_send_hang_event(struct cnss_pci_data *pci_priv)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case KIWI_DEVICE_ID:
|
case KIWI_DEVICE_ID:
|
||||||
|
case MANGO_DEVICE_ID:
|
||||||
offset = plat_priv->hang_data_addr_offset;
|
offset = plat_priv->hang_data_addr_offset;
|
||||||
length = plat_priv->hang_event_data_len;
|
length = plat_priv->hang_event_data_len;
|
||||||
break;
|
break;
|
||||||
@@ -5069,6 +5094,10 @@ void cnss_pci_add_fw_prefix_name(struct cnss_pci_data *pci_priv,
|
|||||||
scnprintf(prefix_name, MAX_FIRMWARE_NAME_LEN,
|
scnprintf(prefix_name, MAX_FIRMWARE_NAME_LEN,
|
||||||
KIWI_PATH_PREFIX "%s", name);
|
KIWI_PATH_PREFIX "%s", name);
|
||||||
break;
|
break;
|
||||||
|
case MANGO_DEVICE_ID:
|
||||||
|
scnprintf(prefix_name, MAX_FIRMWARE_NAME_LEN,
|
||||||
|
MANGO_PATH_PREFIX "%s", name);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
scnprintf(prefix_name, MAX_FIRMWARE_NAME_LEN, "%s", name);
|
scnprintf(prefix_name, MAX_FIRMWARE_NAME_LEN, "%s", name);
|
||||||
break;
|
break;
|
||||||
@@ -5115,6 +5144,7 @@ static int cnss_pci_update_fw_name(struct cnss_pci_data *pci_priv)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case KIWI_DEVICE_ID:
|
case KIWI_DEVICE_ID:
|
||||||
|
case MANGO_DEVICE_ID:
|
||||||
switch (plat_priv->device_version.major_version) {
|
switch (plat_priv->device_version.major_version) {
|
||||||
case FW_V2_NUMBER:
|
case FW_V2_NUMBER:
|
||||||
/*
|
/*
|
||||||
@@ -5786,6 +5816,7 @@ static int cnss_pci_probe(struct pci_dev *pci_dev,
|
|||||||
case QCA6390_DEVICE_ID:
|
case QCA6390_DEVICE_ID:
|
||||||
case QCA6490_DEVICE_ID:
|
case QCA6490_DEVICE_ID:
|
||||||
case KIWI_DEVICE_ID:
|
case KIWI_DEVICE_ID:
|
||||||
|
case MANGO_DEVICE_ID:
|
||||||
cnss_pci_set_wlaon_pwr_ctrl(pci_priv, false, false, false);
|
cnss_pci_set_wlaon_pwr_ctrl(pci_priv, false, false, false);
|
||||||
timer_setup(&pci_priv->dev_rddm_timer,
|
timer_setup(&pci_priv->dev_rddm_timer,
|
||||||
cnss_dev_rddm_timeout_hdlr, 0);
|
cnss_dev_rddm_timeout_hdlr, 0);
|
||||||
@@ -5851,6 +5882,7 @@ static void cnss_pci_remove(struct pci_dev *pci_dev)
|
|||||||
case QCA6390_DEVICE_ID:
|
case QCA6390_DEVICE_ID:
|
||||||
case QCA6490_DEVICE_ID:
|
case QCA6490_DEVICE_ID:
|
||||||
case KIWI_DEVICE_ID:
|
case KIWI_DEVICE_ID:
|
||||||
|
case MANGO_DEVICE_ID:
|
||||||
cnss_pci_wake_gpio_deinit(pci_priv);
|
cnss_pci_wake_gpio_deinit(pci_priv);
|
||||||
del_timer(&pci_priv->boot_debug_timer);
|
del_timer(&pci_priv->boot_debug_timer);
|
||||||
del_timer(&pci_priv->dev_rddm_timer);
|
del_timer(&pci_priv->dev_rddm_timer);
|
||||||
@@ -5879,6 +5911,7 @@ static const struct pci_device_id cnss_pci_id_table[] = {
|
|||||||
{ QCA6390_VENDOR_ID, QCA6390_DEVICE_ID, PCI_ANY_ID, PCI_ANY_ID },
|
{ QCA6390_VENDOR_ID, QCA6390_DEVICE_ID, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
{ QCA6490_VENDOR_ID, QCA6490_DEVICE_ID, PCI_ANY_ID, PCI_ANY_ID },
|
{ QCA6490_VENDOR_ID, QCA6490_DEVICE_ID, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
{ KIWI_VENDOR_ID, KIWI_DEVICE_ID, PCI_ANY_ID, PCI_ANY_ID },
|
{ KIWI_VENDOR_ID, KIWI_DEVICE_ID, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
|
{ MANGO_VENDOR_ID, MANGO_DEVICE_ID, PCI_ANY_ID, PCI_ANY_ID },
|
||||||
{ 0 }
|
{ 0 }
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(pci, cnss_pci_id_table);
|
MODULE_DEVICE_TABLE(pci, cnss_pci_id_table);
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2016-2021, The Linux Foundation. All rights reserved.
|
* Copyright (c) 2016-2021, The Linux Foundation. All rights reserved.
|
||||||
* Copyright (c) 2021 Qualcomm Innovation Center, Inc. All rights reserved.
|
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _CNSS_PCI_H
|
#ifndef _CNSS_PCI_H
|
||||||
@@ -56,6 +56,7 @@ enum cnss_pci_reg_dev_mask {
|
|||||||
REG_MASK_QCA6390,
|
REG_MASK_QCA6390,
|
||||||
REG_MASK_QCA6490,
|
REG_MASK_QCA6490,
|
||||||
REG_MASK_KIWI,
|
REG_MASK_KIWI,
|
||||||
|
REG_MASK_MANGO,
|
||||||
};
|
};
|
||||||
|
|
||||||
struct cnss_msi_user {
|
struct cnss_msi_user {
|
||||||
|
@@ -236,7 +236,8 @@ qmi_registered:
|
|||||||
static void cnss_wlfw_host_cap_parse_mlo(struct cnss_plat_data *plat_priv,
|
static void cnss_wlfw_host_cap_parse_mlo(struct cnss_plat_data *plat_priv,
|
||||||
struct wlfw_host_cap_req_msg_v01 *req)
|
struct wlfw_host_cap_req_msg_v01 *req)
|
||||||
{
|
{
|
||||||
if (plat_priv->device_id == KIWI_DEVICE_ID) {
|
if (plat_priv->device_id == KIWI_DEVICE_ID ||
|
||||||
|
plat_priv->device_id == MANGO_DEVICE_ID) {
|
||||||
req->mlo_capable_valid = 1;
|
req->mlo_capable_valid = 1;
|
||||||
req->mlo_capable = 1;
|
req->mlo_capable = 1;
|
||||||
req->mlo_chip_id_valid = 1;
|
req->mlo_chip_id_valid = 1;
|
||||||
@@ -1218,7 +1219,8 @@ void cnss_get_qdss_cfg_filename(struct cnss_plat_data *plat_priv,
|
|||||||
char filename_tmp[MAX_FIRMWARE_NAME_LEN];
|
char filename_tmp[MAX_FIRMWARE_NAME_LEN];
|
||||||
char *debug_str = QDSS_DEBUG_FILE_STR;
|
char *debug_str = QDSS_DEBUG_FILE_STR;
|
||||||
|
|
||||||
if (plat_priv->device_id == KIWI_DEVICE_ID)
|
if (plat_priv->device_id == KIWI_DEVICE_ID ||
|
||||||
|
plat_priv->device_id == MANGO_DEVICE_ID)
|
||||||
debug_str = "";
|
debug_str = "";
|
||||||
|
|
||||||
if (plat_priv->device_version.major_version == FW_V2_NUMBER)
|
if (plat_priv->device_version.major_version == FW_V2_NUMBER)
|
||||||
@@ -1570,7 +1572,8 @@ int cnss_wlfw_wlan_cfg_send_sync(struct cnss_plat_data *plat_priv,
|
|||||||
req->svc_cfg[i].pipe_num = config->ce_svc_cfg[i].pipe_num;
|
req->svc_cfg[i].pipe_num = config->ce_svc_cfg[i].pipe_num;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (plat_priv->device_id != KIWI_DEVICE_ID) {
|
if (plat_priv->device_id != KIWI_DEVICE_ID &&
|
||||||
|
plat_priv->device_id != MANGO_DEVICE_ID) {
|
||||||
req->shadow_reg_v2_valid = 1;
|
req->shadow_reg_v2_valid = 1;
|
||||||
if (config->num_shadow_reg_v2_cfg >
|
if (config->num_shadow_reg_v2_cfg >
|
||||||
QMI_WLFW_MAX_NUM_SHADOW_REG_V2_V01)
|
QMI_WLFW_MAX_NUM_SHADOW_REG_V2_V01)
|
||||||
|
@@ -94,6 +94,11 @@
|
|||||||
#define KIWI_DEBUG_SBL_LOG_SRAM_MAX_SIZE 48
|
#define KIWI_DEBUG_SBL_LOG_SRAM_MAX_SIZE 48
|
||||||
#define KIWI_PBL_BOOTSTRAP_STATUS 0x01A10008
|
#define KIWI_PBL_BOOTSTRAP_STATUS 0x01A10008
|
||||||
|
|
||||||
|
#define MANGO_DEBUG_PBL_LOG_SRAM_START 0x01403D98
|
||||||
|
#define MANGO_DEBUG_PBL_LOG_SRAM_MAX_SIZE 40
|
||||||
|
#define MANGO_DEBUG_SBL_LOG_SRAM_MAX_SIZE 48
|
||||||
|
#define MANGO_PBL_BOOTSTRAP_STATUS 0x01A10008
|
||||||
|
|
||||||
#define TCSR_PBL_LOGGING_REG 0x01B000F8
|
#define TCSR_PBL_LOGGING_REG 0x01B000F8
|
||||||
#define PCIE_BHI_ERRDBG2_REG 0x01E0E238
|
#define PCIE_BHI_ERRDBG2_REG 0x01E0E238
|
||||||
#define PCIE_BHI_ERRDBG3_REG 0x01E0E23C
|
#define PCIE_BHI_ERRDBG3_REG 0x01E0E23C
|
||||||
|
Yeni konuda referans
Bir kullanıcı engelle