mirror of
https://github.com/torvalds/linux.git
synced 2026-05-28 00:53:34 +02:00
wifi: ath12k: Move Wi-Fi 7 MHI configuration to dedicated file
Relocate target-specific MHI configuration to a new mhi_wifi7.c file to isolate Wi-Fi 7 related logic from the common codebase. Improve modularity by separating hardware-dependent code from shared components. Enhance maintainability and prepare the driver for clean integration of additional device families. Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.3.1-00173-QCAHKSWPL_SILICONZ-1 Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0.c5-00481-QCAHMTSWPL_V1.0_V2.0_SILICONZ-3 Signed-off-by: Kiran Venkatappa <quic_kiranv@quicinc.com> Reviewed-by: Vasanthakumar Thiagarajan <vasanthakumar.thiagarajan@oss.qualcomm.com> Reviewed-by: Baochen Qiang <baochen.qiang@oss.qualcomm.com> Link: https://patch.msgid.link/20250812-ath12k-mod-v1-4-8c9b0eb9335d@quicinc.com Signed-off-by: Jeff Johnson <jeff.johnson@oss.qualcomm.com>
This commit is contained in:
parent
d650b77785
commit
7f54938fc5
|
|
@ -20,6 +20,7 @@ ath12k-y += core.o \
|
|||
dbring.o \
|
||||
hw.o \
|
||||
mhi.o \
|
||||
mhi_wifi7.o \
|
||||
pci.o \
|
||||
pci_wifi7.o \
|
||||
dp_mon.o \
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@
|
|||
#include "dp_rx.h"
|
||||
#include "peer.h"
|
||||
#include "wmi_wifi7.h"
|
||||
#include "mhi_wifi7.h"
|
||||
|
||||
static const guid_t wcn7850_uuid = GUID_INIT(0xf634f534, 0x6147, 0x11ec,
|
||||
0x90, 0xd6, 0x02, 0x42,
|
||||
|
|
|
|||
|
|
@ -18,136 +18,6 @@
|
|||
#define OTP_VALID_DUALMAC_BOARD_ID_MASK 0x1000
|
||||
#define MHI_CB_INVALID 0xff
|
||||
|
||||
static const struct mhi_channel_config ath12k_mhi_channels_qcn9274[] = {
|
||||
{
|
||||
.num = 20,
|
||||
.name = "IPCR",
|
||||
.num_elements = 32,
|
||||
.event_ring = 1,
|
||||
.dir = DMA_TO_DEVICE,
|
||||
.ee_mask = 0x4,
|
||||
.pollcfg = 0,
|
||||
.doorbell = MHI_DB_BRST_DISABLE,
|
||||
.lpm_notify = false,
|
||||
.offload_channel = false,
|
||||
.doorbell_mode_switch = false,
|
||||
.auto_queue = false,
|
||||
},
|
||||
{
|
||||
.num = 21,
|
||||
.name = "IPCR",
|
||||
.num_elements = 32,
|
||||
.event_ring = 1,
|
||||
.dir = DMA_FROM_DEVICE,
|
||||
.ee_mask = 0x4,
|
||||
.pollcfg = 0,
|
||||
.doorbell = MHI_DB_BRST_DISABLE,
|
||||
.lpm_notify = false,
|
||||
.offload_channel = false,
|
||||
.doorbell_mode_switch = false,
|
||||
.auto_queue = true,
|
||||
},
|
||||
};
|
||||
|
||||
static struct mhi_event_config ath12k_mhi_events_qcn9274[] = {
|
||||
{
|
||||
.num_elements = 32,
|
||||
.irq_moderation_ms = 0,
|
||||
.irq = 1,
|
||||
.data_type = MHI_ER_CTRL,
|
||||
.mode = MHI_DB_BRST_DISABLE,
|
||||
.hardware_event = false,
|
||||
.client_managed = false,
|
||||
.offload_channel = false,
|
||||
},
|
||||
{
|
||||
.num_elements = 256,
|
||||
.irq_moderation_ms = 1,
|
||||
.irq = 2,
|
||||
.mode = MHI_DB_BRST_DISABLE,
|
||||
.priority = 1,
|
||||
.hardware_event = false,
|
||||
.client_managed = false,
|
||||
.offload_channel = false,
|
||||
},
|
||||
};
|
||||
|
||||
const struct mhi_controller_config ath12k_mhi_config_qcn9274 = {
|
||||
.max_channels = 30,
|
||||
.timeout_ms = 10000,
|
||||
.use_bounce_buf = false,
|
||||
.buf_len = 0,
|
||||
.num_channels = ARRAY_SIZE(ath12k_mhi_channels_qcn9274),
|
||||
.ch_cfg = ath12k_mhi_channels_qcn9274,
|
||||
.num_events = ARRAY_SIZE(ath12k_mhi_events_qcn9274),
|
||||
.event_cfg = ath12k_mhi_events_qcn9274,
|
||||
};
|
||||
|
||||
static const struct mhi_channel_config ath12k_mhi_channels_wcn7850[] = {
|
||||
{
|
||||
.num = 20,
|
||||
.name = "IPCR",
|
||||
.num_elements = 64,
|
||||
.event_ring = 1,
|
||||
.dir = DMA_TO_DEVICE,
|
||||
.ee_mask = 0x4,
|
||||
.pollcfg = 0,
|
||||
.doorbell = MHI_DB_BRST_DISABLE,
|
||||
.lpm_notify = false,
|
||||
.offload_channel = false,
|
||||
.doorbell_mode_switch = false,
|
||||
.auto_queue = false,
|
||||
},
|
||||
{
|
||||
.num = 21,
|
||||
.name = "IPCR",
|
||||
.num_elements = 64,
|
||||
.event_ring = 1,
|
||||
.dir = DMA_FROM_DEVICE,
|
||||
.ee_mask = 0x4,
|
||||
.pollcfg = 0,
|
||||
.doorbell = MHI_DB_BRST_DISABLE,
|
||||
.lpm_notify = false,
|
||||
.offload_channel = false,
|
||||
.doorbell_mode_switch = false,
|
||||
.auto_queue = true,
|
||||
},
|
||||
};
|
||||
|
||||
static struct mhi_event_config ath12k_mhi_events_wcn7850[] = {
|
||||
{
|
||||
.num_elements = 32,
|
||||
.irq_moderation_ms = 0,
|
||||
.irq = 1,
|
||||
.mode = MHI_DB_BRST_DISABLE,
|
||||
.data_type = MHI_ER_CTRL,
|
||||
.hardware_event = false,
|
||||
.client_managed = false,
|
||||
.offload_channel = false,
|
||||
},
|
||||
{
|
||||
.num_elements = 256,
|
||||
.irq_moderation_ms = 1,
|
||||
.irq = 2,
|
||||
.mode = MHI_DB_BRST_DISABLE,
|
||||
.priority = 1,
|
||||
.hardware_event = false,
|
||||
.client_managed = false,
|
||||
.offload_channel = false,
|
||||
},
|
||||
};
|
||||
|
||||
const struct mhi_controller_config ath12k_mhi_config_wcn7850 = {
|
||||
.max_channels = 128,
|
||||
.timeout_ms = 2000,
|
||||
.use_bounce_buf = false,
|
||||
.buf_len = 8192,
|
||||
.num_channels = ARRAY_SIZE(ath12k_mhi_channels_wcn7850),
|
||||
.ch_cfg = ath12k_mhi_channels_wcn7850,
|
||||
.num_events = ARRAY_SIZE(ath12k_mhi_events_wcn7850),
|
||||
.event_cfg = ath12k_mhi_events_wcn7850,
|
||||
};
|
||||
|
||||
void ath12k_mhi_set_mhictrl_reset(struct ath12k_base *ab)
|
||||
{
|
||||
u32 val;
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
/*
|
||||
* Copyright (c) 2020-2021 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2021-2022, 2024 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
|
||||
*/
|
||||
#ifndef _ATH12K_MHI_H
|
||||
#define _ATH12K_MHI_H
|
||||
|
|
@ -31,9 +32,6 @@ enum ath12k_mhi_state {
|
|||
ATH12K_MHI_RDDM_DONE,
|
||||
};
|
||||
|
||||
extern const struct mhi_controller_config ath12k_mhi_config_qcn9274;
|
||||
extern const struct mhi_controller_config ath12k_mhi_config_wcn7850;
|
||||
|
||||
int ath12k_mhi_start(struct ath12k_pci *ar_pci);
|
||||
void ath12k_mhi_stop(struct ath12k_pci *ar_pci, bool is_suspend);
|
||||
int ath12k_mhi_register(struct ath12k_pci *ar_pci);
|
||||
|
|
|
|||
138
drivers/net/wireless/ath/ath12k/mhi_wifi7.c
Normal file
138
drivers/net/wireless/ath/ath12k/mhi_wifi7.c
Normal file
|
|
@ -0,0 +1,138 @@
|
|||
// SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
/*
|
||||
* Copyright (c) 2020-2021 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
|
||||
*/
|
||||
|
||||
#include "mhi.h"
|
||||
#include "mhi_wifi7.h"
|
||||
|
||||
static const struct mhi_channel_config ath12k_mhi_channels_qcn9274[] = {
|
||||
{
|
||||
.num = 20,
|
||||
.name = "IPCR",
|
||||
.num_elements = 32,
|
||||
.event_ring = 1,
|
||||
.dir = DMA_TO_DEVICE,
|
||||
.ee_mask = 0x4,
|
||||
.pollcfg = 0,
|
||||
.doorbell = MHI_DB_BRST_DISABLE,
|
||||
.lpm_notify = false,
|
||||
.offload_channel = false,
|
||||
.doorbell_mode_switch = false,
|
||||
.auto_queue = false,
|
||||
},
|
||||
{
|
||||
.num = 21,
|
||||
.name = "IPCR",
|
||||
.num_elements = 32,
|
||||
.event_ring = 1,
|
||||
.dir = DMA_FROM_DEVICE,
|
||||
.ee_mask = 0x4,
|
||||
.pollcfg = 0,
|
||||
.doorbell = MHI_DB_BRST_DISABLE,
|
||||
.lpm_notify = false,
|
||||
.offload_channel = false,
|
||||
.doorbell_mode_switch = false,
|
||||
.auto_queue = true,
|
||||
},
|
||||
};
|
||||
|
||||
static struct mhi_event_config ath12k_mhi_events_qcn9274[] = {
|
||||
{
|
||||
.num_elements = 32,
|
||||
.irq_moderation_ms = 0,
|
||||
.irq = 1,
|
||||
.data_type = MHI_ER_CTRL,
|
||||
.mode = MHI_DB_BRST_DISABLE,
|
||||
.hardware_event = false,
|
||||
.client_managed = false,
|
||||
.offload_channel = false,
|
||||
},
|
||||
{
|
||||
.num_elements = 256,
|
||||
.irq_moderation_ms = 1,
|
||||
.irq = 2,
|
||||
.mode = MHI_DB_BRST_DISABLE,
|
||||
.priority = 1,
|
||||
.hardware_event = false,
|
||||
.client_managed = false,
|
||||
.offload_channel = false,
|
||||
},
|
||||
};
|
||||
|
||||
const struct mhi_controller_config ath12k_mhi_config_qcn9274 = {
|
||||
.max_channels = 30,
|
||||
.timeout_ms = 10000,
|
||||
.use_bounce_buf = false,
|
||||
.buf_len = 0,
|
||||
.num_channels = ARRAY_SIZE(ath12k_mhi_channels_qcn9274),
|
||||
.ch_cfg = ath12k_mhi_channels_qcn9274,
|
||||
.num_events = ARRAY_SIZE(ath12k_mhi_events_qcn9274),
|
||||
.event_cfg = ath12k_mhi_events_qcn9274,
|
||||
};
|
||||
|
||||
static const struct mhi_channel_config ath12k_mhi_channels_wcn7850[] = {
|
||||
{
|
||||
.num = 20,
|
||||
.name = "IPCR",
|
||||
.num_elements = 64,
|
||||
.event_ring = 1,
|
||||
.dir = DMA_TO_DEVICE,
|
||||
.ee_mask = 0x4,
|
||||
.pollcfg = 0,
|
||||
.doorbell = MHI_DB_BRST_DISABLE,
|
||||
.lpm_notify = false,
|
||||
.offload_channel = false,
|
||||
.doorbell_mode_switch = false,
|
||||
.auto_queue = false,
|
||||
},
|
||||
{
|
||||
.num = 21,
|
||||
.name = "IPCR",
|
||||
.num_elements = 64,
|
||||
.event_ring = 1,
|
||||
.dir = DMA_FROM_DEVICE,
|
||||
.ee_mask = 0x4,
|
||||
.pollcfg = 0,
|
||||
.doorbell = MHI_DB_BRST_DISABLE,
|
||||
.lpm_notify = false,
|
||||
.offload_channel = false,
|
||||
.doorbell_mode_switch = false,
|
||||
.auto_queue = true,
|
||||
},
|
||||
};
|
||||
|
||||
static struct mhi_event_config ath12k_mhi_events_wcn7850[] = {
|
||||
{
|
||||
.num_elements = 32,
|
||||
.irq_moderation_ms = 0,
|
||||
.irq = 1,
|
||||
.mode = MHI_DB_BRST_DISABLE,
|
||||
.data_type = MHI_ER_CTRL,
|
||||
.hardware_event = false,
|
||||
.client_managed = false,
|
||||
.offload_channel = false,
|
||||
},
|
||||
{
|
||||
.num_elements = 256,
|
||||
.irq_moderation_ms = 1,
|
||||
.irq = 2,
|
||||
.mode = MHI_DB_BRST_DISABLE,
|
||||
.priority = 1,
|
||||
.hardware_event = false,
|
||||
.client_managed = false,
|
||||
.offload_channel = false,
|
||||
},
|
||||
};
|
||||
|
||||
const struct mhi_controller_config ath12k_mhi_config_wcn7850 = {
|
||||
.max_channels = 128,
|
||||
.timeout_ms = 2000,
|
||||
.use_bounce_buf = false,
|
||||
.buf_len = 8192,
|
||||
.num_channels = ARRAY_SIZE(ath12k_mhi_channels_wcn7850),
|
||||
.ch_cfg = ath12k_mhi_channels_wcn7850,
|
||||
.num_events = ARRAY_SIZE(ath12k_mhi_events_wcn7850),
|
||||
.event_cfg = ath12k_mhi_events_wcn7850,
|
||||
};
|
||||
11
drivers/net/wireless/ath/ath12k/mhi_wifi7.h
Normal file
11
drivers/net/wireless/ath/ath12k/mhi_wifi7.h
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
/* SPDX-License-Identifier: BSD-3-Clause-Clear */
|
||||
/*
|
||||
* Copyright (c) 2020-2021 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
|
||||
*/
|
||||
|
||||
#ifndef _ATH12K_WIFI7_MHI_H
|
||||
#define _ATH12K_WIFI7_MHI_H
|
||||
extern const struct mhi_controller_config ath12k_mhi_config_qcn9274;
|
||||
extern const struct mhi_controller_config ath12k_mhi_config_wcn7850;
|
||||
#endif /* _ATH12K_WIFI7_MHI_H */
|
||||
Loading…
Reference in New Issue
Block a user