162306a36Sopenharmony_ci/* SPDX-License-Identifier: BSD-3-Clause-Clear */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Copyright (c) 2020-2021 The Linux Foundation. All rights reserved.
462306a36Sopenharmony_ci * Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
562306a36Sopenharmony_ci */
662306a36Sopenharmony_ci#ifndef _ATH12K_MHI_H
762306a36Sopenharmony_ci#define _ATH12K_MHI_H
862306a36Sopenharmony_ci
962306a36Sopenharmony_ci#include "pci.h"
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ci#define PCIE_TXVECDB				0x360
1262306a36Sopenharmony_ci#define PCIE_TXVECSTATUS			0x368
1362306a36Sopenharmony_ci#define PCIE_RXVECDB				0x394
1462306a36Sopenharmony_ci#define PCIE_RXVECSTATUS			0x39C
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ci#define MHISTATUS				0x48
1762306a36Sopenharmony_ci#define MHICTRL					0x38
1862306a36Sopenharmony_ci#define MHICTRL_RESET_MASK			0x2
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_cienum ath12k_mhi_state {
2162306a36Sopenharmony_ci	ATH12K_MHI_INIT,
2262306a36Sopenharmony_ci	ATH12K_MHI_DEINIT,
2362306a36Sopenharmony_ci	ATH12K_MHI_POWER_ON,
2462306a36Sopenharmony_ci	ATH12K_MHI_POWER_OFF,
2562306a36Sopenharmony_ci	ATH12K_MHI_FORCE_POWER_OFF,
2662306a36Sopenharmony_ci	ATH12K_MHI_SUSPEND,
2762306a36Sopenharmony_ci	ATH12K_MHI_RESUME,
2862306a36Sopenharmony_ci	ATH12K_MHI_TRIGGER_RDDM,
2962306a36Sopenharmony_ci	ATH12K_MHI_RDDM,
3062306a36Sopenharmony_ci	ATH12K_MHI_RDDM_DONE,
3162306a36Sopenharmony_ci};
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_ciextern const struct mhi_controller_config ath12k_mhi_config_qcn9274;
3462306a36Sopenharmony_ciextern const struct mhi_controller_config ath12k_mhi_config_wcn7850;
3562306a36Sopenharmony_ci
3662306a36Sopenharmony_ciint ath12k_mhi_start(struct ath12k_pci *ar_pci);
3762306a36Sopenharmony_civoid ath12k_mhi_stop(struct ath12k_pci *ar_pci);
3862306a36Sopenharmony_ciint ath12k_mhi_register(struct ath12k_pci *ar_pci);
3962306a36Sopenharmony_civoid ath12k_mhi_unregister(struct ath12k_pci *ar_pci);
4062306a36Sopenharmony_civoid ath12k_mhi_set_mhictrl_reset(struct ath12k_base *ab);
4162306a36Sopenharmony_civoid ath12k_mhi_clear_vector(struct ath12k_base *ab);
4262306a36Sopenharmony_ci
4362306a36Sopenharmony_civoid ath12k_mhi_suspend(struct ath12k_pci *ar_pci);
4462306a36Sopenharmony_civoid ath12k_mhi_resume(struct ath12k_pci *ar_pci);
4562306a36Sopenharmony_ci
4662306a36Sopenharmony_ci#endif
47