123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- /* Copyright (c) 2010-2012, 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 __HDMI_MSM_H__
- #define __HDMI_MSM_H__
- #include <mach/msm_iomap.h>
- #include "external_common.h"
- /* #define PORT_DEBUG */
- #ifdef PORT_DEBUG
- const char *hdmi_msm_name(uint32 offset);
- void hdmi_outp(uint32 offset, uint32 value);
- uint32 hdmi_inp(uint32 offset);
- #define HDMI_OUTP_ND(offset, value) outpdw(MSM_HDMI_BASE+(offset), (value))
- #define HDMI_OUTP(offset, value) hdmi_outp((offset), (value))
- #define HDMI_INP_ND(offset) inpdw(MSM_HDMI_BASE+(offset))
- #define HDMI_INP(offset) hdmi_inp((offset))
- #else
- #define HDMI_OUTP_ND(offset, value) outpdw(MSM_HDMI_BASE+(offset), (value))
- #define HDMI_OUTP(offset, value) outpdw(MSM_HDMI_BASE+(offset), (value))
- #define HDMI_INP_ND(offset) inpdw(MSM_HDMI_BASE+(offset))
- #define HDMI_INP(offset) inpdw(MSM_HDMI_BASE+(offset))
- #endif
- /*
- * Ref. HDMI 1.4a
- * Supplement-1 CEC Section 6, 7
- */
- struct hdmi_msm_cec_msg {
- uint8 sender_id;
- uint8 recvr_id;
- uint8 opcode;
- uint8 operand[15];
- uint8 frame_size;
- uint8 retransmit;
- };
- #define QFPROM_BASE ((uint32)hdmi_msm_state->qfprom_io)
- #define HDMI_BASE ((uint32)hdmi_msm_state->hdmi_io)
- struct hdmi_msm_state_type {
- boolean panel_power_on;
- boolean hpd_initialized;
- #ifdef CONFIG_SUSPEND
- boolean pm_suspended;
- #endif
- boolean full_auth_done;
- boolean hpd_during_auth;
- struct work_struct hpd_state_work;
- struct completion ddc_sw_done;
- bool hdcp_enable;
- boolean hdcp_activating;
- boolean reauth ;
- struct work_struct hdcp_reauth_work, hdcp_work;
- struct completion hdcp_success_done;
- struct timer_list hdcp_timer;
- #ifdef CONFIG_FB_MSM_HDMI_MSM_PANEL_CEC_SUPPORT
- boolean cec_enabled;
- unsigned int first_monitor;
- int cec_logical_addr;
- struct completion cec_frame_wr_done;
- struct timer_list cec_read_timer;
- #define CEC_STATUS_WR_ERROR 0x0001
- #define CEC_STATUS_WR_DONE 0x0002
- #define CEC_STATUS_WR_TMOUT 0x0004
- uint32 cec_frame_wr_status;
- struct hdmi_msm_cec_msg *cec_queue_start;
- struct hdmi_msm_cec_msg *cec_queue_wr;
- struct hdmi_msm_cec_msg *cec_queue_rd;
- boolean cec_queue_full;
- boolean fsm_reset_done;
- /*
- * CECT 9-5-1
- */
- struct completion cec_line_latch_wait;
- struct work_struct cec_latch_detect_work;
- #define CEC_QUEUE_SIZE 16
- #define CEC_QUEUE_END (hdmi_msm_state->cec_queue_start + CEC_QUEUE_SIZE)
- #define RETRANSMIT_MAX_NUM 5
- #endif /* CONFIG_FB_MSM_HDMI_MSM_PANEL_CEC_SUPPORT */
- int irq;
- struct msm_hdmi_platform_data *pd;
- struct clk *hdmi_app_clk;
- struct clk *hdmi_m_pclk;
- struct clk *hdmi_s_pclk;
- void __iomem *qfprom_io;
- void __iomem *hdmi_io;
- struct external_common_state_type common;
- boolean is_mhl_enabled;
- struct completion hpd_event_processed;
- };
- extern struct hdmi_msm_state_type *hdmi_msm_state;
- uint32 hdmi_msm_get_io_base(void);
- #ifdef CONFIG_FB_MSM_HDMI_COMMON
- void hdmi_msm_set_mode(boolean power_on);
- int hdmi_msm_clk(int on);
- void hdmi_phy_reset(void);
- void hdmi_msm_reset_core(void);
- void hdmi_msm_init_phy(int video_format);
- void hdmi_msm_powerdown_phy(void);
- void hdmi_frame_ctrl_cfg(const struct hdmi_disp_mode_timing_type *timing);
- void hdmi_msm_phy_status_poll(void);
- #endif
- #ifdef CONFIG_FB_MSM_HDMI_MSM_PANEL_CEC_SUPPORT
- void hdmi_msm_cec_init(void);
- void hdmi_msm_cec_write_logical_addr(int addr);
- void hdmi_msm_cec_msg_recv(void);
- void hdmi_msm_cec_one_touch_play(void);
- void hdmi_msm_cec_msg_send(struct hdmi_msm_cec_msg *msg);
- #endif /* CONFIG_FB_MSM_HDMI_MSM_PANEL_CEC_SUPPORT */
- void mhl_connect_api(boolean on);
- #endif /* __HDMI_MSM_H__ */
|