| /* Copyright (c) 2010-2013, 2015-2016, 2018, 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 __MDSS_HDMI_CEC_H__ |
| #define __MDSS_HDMI_CEC_H__ |
| |
| #include "mdss_hdmi_util.h" |
| #include "mdss_cec_core.h" |
| |
| #define RETRANSMIT_MAX_NUM 5 |
| |
| /** |
| * struct hdmi_cec_init_data - data needed for initializing cec hw module |
| * @workq: pointer to workqueue |
| * @io: pointer to register access related data |
| * @pinfo: pointer to panel information data |
| * @cbs: pointer to cec abstract callback functions. |
| * @ops: pointer to cec hw operation functions. |
| * |
| * Defines the data needed to be provided while initializing cec hw module |
| */ |
| struct hdmi_cec_init_data { |
| struct workqueue_struct *workq; |
| struct mdss_io_data *io; |
| struct mdss_panel_info *pinfo; |
| struct cec_cbs *cbs; |
| struct cec_ops *ops; |
| }; |
| |
| /** |
| * hdmi_cec_isr() - interrupt handler for cec hw module |
| * @cec_ctrl: pointer to cec hw module's data |
| * |
| * Return: irq error code |
| * |
| * The API can be called by HDMI Tx driver on receiving hw interrupts |
| * to let the CEC related interrupts handled by this module. |
| */ |
| int hdmi_cec_isr(void *cec_ctrl); |
| |
| /** |
| * hdmi_cec_init() - Initialize the CEC hw module |
| * @init_data: data needed to initialize the cec hw module |
| * |
| * Return: pointer to cec hw modules data that needs to be passed when |
| * calling cec hw modules API or error code. |
| * |
| * The API registers CEC HW modules with the client and provides HW |
| * specific operations. |
| */ |
| void *hdmi_cec_init(struct hdmi_cec_init_data *init_data); |
| |
| /** |
| * hdmi_cec_deinit() - de-initialize CEC HW module |
| * @data: CEC HW module data |
| * |
| * This API release all resources allocated. |
| */ |
| void hdmi_cec_deinit(void *data); |
| |
| /** |
| * hdmi_cec_is_wakeup_en() - checks cec wakeup state |
| * @cec_ctrl: pointer to cec hw module's data |
| * |
| * Return: cec wakeup state |
| * |
| * This API is used to query whether the cec wakeup functionality is |
| * enabled or not. |
| */ |
| bool hdmi_cec_is_wakeup_en(void *cec_ctrl); |
| |
| /** |
| * hdmi_cec_device_suspend() - updates cec with device suspend state |
| * @cec_ctrl: pointer to cec hw module's data |
| * @suspend: device suspend state |
| * |
| * This API is used to update the CEC HW module of the device's suspend |
| * state. |
| */ |
| void hdmi_cec_device_suspend(void *cec_ctrl, bool suspend); |
| #endif /* __MDSS_HDMI_CEC_H__ */ |