diff --git a/drivers/media/cec/hdmi_ao_cec.c b/drivers/media/cec/hdmi_ao_cec.c index dcf7d4dbf..1e73cafde 100644 --- a/drivers/media/cec/hdmi_ao_cec.c +++ b/drivers/media/cec/hdmi_ao_cec.c @@ -2470,6 +2470,17 @@ static void cec_rx_uevent_handler(struct work_struct *work) cec_set_uevent(CEC_RX_MSG, 0); } +static void cec_func_init(unsigned int cec_func_config) +{ + unsigned int cec_func = CEC_FUNC_CFG_ALL; + + if (!(cec_func_config & CEC_FUNC_CFG_CEC_ON)) + cec_func &= ~(CEC_FUNC_CFG_CEC_ON); + if (!(cec_func_config & CEC_FUNC_CFG_AUTO_POWER_ON)) + cec_func &= ~(CEC_FUNC_CFG_AUTO_POWER_ON); + cec_config(cec_func, 1); +} + static int aml_cec_probe(struct platform_device *pdev) { struct device *cdev; @@ -2796,8 +2807,8 @@ static int aml_cec_probe(struct platform_device *pdev) cec_set_clk(&pdev->dev); /* irq set */ cec_irq_enable(false); - /* default enable all function*/ - cec_config(CEC_FUNC_CFG_ALL, 1); + /* Init cec function from register*/ + cec_func_init(cec_config(0, 0)); /* for init */ cec_pre_init(); diff --git a/drivers/media/cec/hdmi_ao_cec.h b/drivers/media/cec/hdmi_ao_cec.h index 520720f58..6af1645d7 100644 --- a/drivers/media/cec/hdmi_ao_cec.h +++ b/drivers/media/cec/hdmi_ao_cec.h @@ -9,7 +9,7 @@ #include #include "hdmi_tx_cec_20.h" -#define CEC_DRIVER_VERSION "2023/10/18: Handle mailbox wakeup data by thread" +#define CEC_DRIVER_VERSION "2023/11/17: Init cec function from register" #define CEC_DEV_NAME "cec"