root/drivers/net/wireless/ath/ath12k/wifi7/mhi.c
// 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.h"

static const struct mhi_channel_config ath12k_wifi7_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,
        },
        {
                .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,
        },
};

static struct mhi_event_config ath12k_wifi7_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_wifi7_mhi_config_qcn9274 = {
        .max_channels = 30,
        .timeout_ms = 10000,
        .use_bounce_buf = false,
        .buf_len = 0,
        .num_channels = ARRAY_SIZE(ath12k_wifi7_mhi_channels_qcn9274),
        .ch_cfg = ath12k_wifi7_mhi_channels_qcn9274,
        .num_events = ARRAY_SIZE(ath12k_wifi7_mhi_events_qcn9274),
        .event_cfg = ath12k_wifi7_mhi_events_qcn9274,
};

static const struct mhi_channel_config ath12k_wifi7_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,
        },
        {
                .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,
        },
};

static struct mhi_event_config ath12k_wifi7_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_wifi7_mhi_config_wcn7850 = {
        .max_channels = 128,
        .timeout_ms = 2000,
        .use_bounce_buf = false,
        .buf_len = 8192,
        .num_channels = ARRAY_SIZE(ath12k_wifi7_mhi_channels_wcn7850),
        .ch_cfg = ath12k_wifi7_mhi_channels_wcn7850,
        .num_events = ARRAY_SIZE(ath12k_wifi7_mhi_events_wcn7850),
        .event_cfg = ath12k_wifi7_mhi_events_wcn7850,
};