mirror of
https://github.com/hardkernel/kernel_common_drivers.git
synced 2026-06-25 12:03:48 +09:00
hdmitx: fix earc probe crash and no plugout uevent issue [1/1]
PD#SWPL-141704 Problem: 1 earc probe crash hdmitx21_hpd_hw_op+0x14/0x80 [aml_media] hdmitx21_earc_hpdst+0x28/0x48 [aml_media] register_earcrx_callback+0x4c/0x60 [aml_media] earc_platform_probe+0x628/0x9e0 [amlogic_snd_soc] 2 hdmitx21 did not call drm hpd callback Solution: 1 separate hdmitx20 and hdmitx21 earc register api 2 call hpd callback when call plugout handler Verify: ac200/t7c/s1a Test: DRM-TX-41 Change-Id: I829da54849b152420de9409e42f46ae1016c22c5 Signed-off-by: Ao Xu <ao.xu@amlogic.com>
This commit is contained in:
@@ -114,8 +114,8 @@ struct hdmitx_color_attr other_color_attr_list[] = {
|
||||
void convert_attrstr(char *attr_str,
|
||||
struct hdmitx_color_attr *attr_param)
|
||||
{
|
||||
attr_param->colorformat = HDMI_COLORSPACE_RESERVED6;
|
||||
attr_param->bitdepth = COLORDEPTH_RESERVED;
|
||||
attr_param->colorformat = HDMI_COLORSPACE_YUV444;
|
||||
attr_param->bitdepth = 8;
|
||||
|
||||
if (strstr(attr_str, "420"))
|
||||
attr_param->colorformat = HDMI_COLORSPACE_YUV420;
|
||||
|
||||
@@ -133,7 +133,7 @@ int register_earcrx_callback(pf_callback callback)
|
||||
* doesn't know if HDMI Tx cable plug in/out.
|
||||
* so don't check hdmitx21 init or not
|
||||
*/
|
||||
/*if (get_hdmitx21_init() == 1)*/
|
||||
if (get_hdmitx21_init() == 1)
|
||||
hdmitx21_earc_hpdst(callback);
|
||||
#endif
|
||||
return 0;
|
||||
|
||||
@@ -3608,11 +3608,13 @@ static void hdmitx_hpd_plugout_irq_handler(struct work_struct *work)
|
||||
mutex_unlock(&hdev->tx_comm.hdmimode_mutex);
|
||||
return;
|
||||
}
|
||||
|
||||
hdmitx_plugout_handler(hdev);
|
||||
mutex_unlock(&hdev->tx_comm.hdmimode_mutex);
|
||||
|
||||
/*notify event to user space and other modules*/
|
||||
hdmitx_common_notify_hpd_status(&hdev->tx_comm);
|
||||
/* notify to drm hdmi, TO CONFIRM: if need the suspend flag? */
|
||||
if (!hdev->tx_comm.suspend_flag)
|
||||
hdmitx_hpd_notify_unlocked(&hdev->tx_comm);
|
||||
}
|
||||
|
||||
int get21_hpd_state(void)
|
||||
|
||||
@@ -593,10 +593,6 @@ EXPORT_SYMBOL(hdmitx_common_parse_vic_in_edid);
|
||||
int hdmitx_common_notify_hpd_status(struct hdmitx_common *tx_comm)
|
||||
{
|
||||
if (!tx_comm->suspend_flag) {
|
||||
/*TOCONFIRM: notify to drm*/
|
||||
/* if (tx_comm->drm_hpd_cb.callback) */
|
||||
/* tx_comm->drm_hpd_cb.callback(tx_comm->drm_hpd_cb.data); */
|
||||
|
||||
/*notify to userspace by uevent*/
|
||||
hdmitx_event_mgr_send_uevent(tx_comm->event_mgr,
|
||||
HDMITX_HPD_EVENT, tx_comm->hpd_state);
|
||||
|
||||
Reference in New Issue
Block a user