android_kernel_xiaomi_sm7250/drivers/soc/qcom/pil-q6v5.h
Sibi Sankar 4a976aa230 soc: qcom: add snapshot of MBA based modem PIL
Add snapshot of mba based modem pil driver based on 4.14
to 4.19 kernel.
This is snapshot of the MBA base modem PIL driver as of
msm-4.14 'commit 78bed541dbf8950be ("Merge "msm:
camera: hyp: To fix Stack overflow"")'.

Change-Id: Ie4e2e5998ae379c0f49d64d3d4126c59786a42a9
Signed-off-by: Sibi Sankar <sibis@codeaurora.org>
Signed-off-by: Chetan C R <cchinnad@codeaurora.org>
2020-05-14 23:24:10 +05:30

94 lines
2.7 KiB
C

/* SPDX-License-Identifier: GPL-2.0-only */
/*
* Copyright (c) 2012-2020, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#ifndef __MSM_PIL_Q6V5_H
#define __MSM_PIL_Q6V5_H
#include "peripheral-loader.h"
struct regulator;
struct clk;
struct pil_device;
struct platform_device;
struct q6v5_data {
void __iomem *reg_base;
void __iomem *rmb_base;
void __iomem *cxrail_bhs; /* External BHS register */
struct clk *xo; /* XO clock source */
struct clk *pnoc_clk; /* PNOC bus clock source */
struct clk *ahb_clk; /* PIL access to registers */
struct clk *axi_clk; /* CPU access to memory */
struct clk *core_clk; /* CPU core */
struct clk *reg_clk; /* CPU access registers */
struct clk *gpll0_mss_clk; /* GPLL0 to MSS connection */
struct clk *rom_clk; /* Boot ROM */
struct clk *snoc_axi_clk;
struct clk *mnoc_axi_clk;
struct clk *qdss_clk;
struct clk *prng_clk;
struct clk *axis2_clk;
void __iomem *axi_halt_base; /* Halt base of q6, mss,
* nc are in same 4K page
*/
void __iomem *axi_halt_q6;
void __iomem *axi_halt_mss;
void __iomem *axi_halt_nc;
void __iomem *restart_reg;
void __iomem *pdc_sync;
void __iomem *alt_reset;
struct regulator *vreg;
struct regulator *vreg_cx;
struct regulator *vreg_mx;
struct regulator *vreg_pll;
bool is_booted;
struct pil_desc desc;
bool self_auth;
phys_addr_t mba_dp_phys;
void *mba_dp_virt;
size_t mba_dp_size;
size_t dp_size;
bool qdsp6v55;
bool qdsp6v5_2_0;
bool qdsp6v56;
bool qdsp6v56_1_3;
bool qdsp6v56_1_5;
bool qdsp6v56_1_8;
bool qdsp6v56_1_8_inrush_current;
bool qdsp6v56_1_10;
bool qdsp6v61_1_1;
bool qdsp6v62_1_2;
bool qdsp6v62_1_4;
bool qdsp6v62_1_5;
bool qdsp6v65_1_0;
bool non_elf_image;
bool restart_reg_sec;
bool override_acc;
int override_acc_1;
int mss_pdc_offset;
int smem_id;
bool ahb_clk_vote;
bool mx_spike_wa;
bool reset_clk;
};
int pil_q6v5_make_proxy_votes(struct pil_desc *pil);
void pil_q6v5_remove_proxy_votes(struct pil_desc *pil);
void pil_q6v5_halt_axi_port(struct pil_desc *pil, void __iomem *halt_base);
void pil_q6v5_shutdown(struct pil_desc *pil);
int pil_q6v5_reset(struct pil_desc *pil);
void assert_clamps(struct pil_desc *pil);
struct q6v5_data *pil_q6v5_init(struct platform_device *pdev);
#endif