/* Copyright Statement:
 *
 * This software/firmware and related documentation ("MediaTek Software") are
 * protected under relevant copyright laws. The information contained herein is
 * confidential and proprietary to MediaTek Inc. and/or its licensors. Without
 * the prior written permission of MediaTek inc. and/or its licensors, any
 * reproduction, modification, use or disclosure of MediaTek Software, and
 * information contained herein, in whole or in part, shall be strictly
 * prohibited.
 *
 * Copyright  (C) [2020]  MediaTek Inc. All rights reserved.
 *
 * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
 * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
 * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER
 * ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL
 * WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR
 * NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH
 * RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY,
 * INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES
 * TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO.
 * RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO
 * OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MEDIATEK
 * SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE
 * RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
 * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S
 * ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE
 * RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE
 * MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE
 * CHARGE PAID BY RECEIVER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
 *
 * The following software/firmware and/or related documentation ("MediaTek
 * Software") have been modified by MediaTek Inc. All revisions are subject to
 * any receiver's applicable license agreements with MediaTek Inc.
 */

#ifndef _MTK_PNL_PUBLIC_HEADER_
#define _MTK_PNL_PUBLIC_HEADER_

#define ENV_SETTING_ON  "yes"
#define ENV_SETTING_ON_SIZE  3

typedef enum {
    E_PNL_PROP_TCON_EN = 0,
    E_PNL_PROP_VGH_DELAY,
    E_PNL_PROP_DEMURA_SEL,
    E_PNL_PROP_VCOM_SEL,
    E_PNL_PROP_DEMURA_EN,
    E_PNL_PROP_AUTO_PGA_UPDATE,
    E_PNL_PROP_AUTO_P2P_CMD_UPDATE,
    E_PNL_PROP_STI_ARCH,
    E_PNL_PROP_MAX
} EN_PNL_PROPERTY_TYPE;

typedef enum
{
    E_SET_PNL_PROP_NONE = 0,
    E_SET_PNL_PROP_AUTO_PGA_60Hz,
    E_SET_PNL_PROP_AUTO_PGA_120Hz,
    E_SET_PNL_PROP_CSPI_CMD_UPDATE,
    E_SET_PNL_PROP_CEDS_CMD_UPDATE,
    E_SET_PNL_PROP_USIT_CMD_UPDATE,
    E_SET_PNL_PROP_MAX
} EN_SET_PNL_PROPERTY_TYPE;

void mtk_set_panel_status(bool is_ready);
int mtk_is_panel_ready(void);
int mtk_is_new_panel_flow(void);
bool mtk_is_panel_oled_locked(void);
void mtk_panel_backlight_on(void);
void mtk_panel_post_init(bool bis_qhb_en, bool bis_haps_en);
int mtk_panel_init(void);
void mtk_panel_backlight_off(void);
void mtk_panel_add_tcon_name_to_bootargs(void);
void mtk_panel_add_gamma_name_to_bootargs(void);
void mtk_panel_add_pmic_name_to_bootargs(void);
void mtk_panel_add_lsic_name_to_bootargs(void);
void mtk_panel_add_vcomic_name_to_bootargs(void);
void mtk_panel_add_panel_index_to_bootargs(void);
void mtk_panel_add_panel_name_to_bootargs(void);
void mtk_panel_set_force_init_flag(bool force_init);
#ifdef CONFIG_MTK_PANEL
int mtk_panel_init_device(void);
int mtk_panel_enable(bool en);
int mtk_panel_enable_vcc(bool en);
int mtk_panel_enable_backlight(bool en);
int mtk_panel_mute(bool en);
int mtk_get_panel_gpio_cusctrl(void);
#endif

#if defined(CONFIG_MULTICORES_PLATFORM)
void *panel_pre_init_thread_entry(void *);
void *panel_mute_enable_thread_entry(void *);
void *panel_mute_disable_thread_entry(void *);
void *panel_enable_thread_entry(void *);
void *panel_post_init_thread_entry(void *);
#endif
#endif
