From 0b94f77c4faa1c6fd3fe06e9f913cbe593e641dd Mon Sep 17 00:00:00 2001 From: "Lu, Xingjiang" Date: Sat, 11 May 2024 15:38:58 +0800 Subject: [PATCH] Add code control in macro to refine the dependency of i915. [Problem] The unnecessray I2C communications of Serdes driver will trigger many side effect in stability testing, if DUT has been connected to a HDMI display only. [Solution] Add code control in i915 driver to disable the MCU backlight controller with Kconfig. [Test] Display and touch panel works well on HDMI screen. Tracked-On: OAM-118507 Signed-off-by: Lu, Xingjiang --- drivers/gpu/drm/bridge/Kconfig | 7 +++++++ drivers/gpu/drm/bridge/Makefile | 2 +- drivers/gpu/drm/bridge/ti/Makefile | 5 ++--- drivers/gpu/drm/i915/display/intel_backlight.c | 2 ++ drivers/gpu/drm/i915/display/intel_dp.c | 3 +++ drivers/gpu/drm/i915/display/intel_panel.h | 2 ++ 6 files changed, 17 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/bridge/Kconfig b/drivers/gpu/drm/bridge/Kconfig index 57946d80b02db..82172f539d9ed 100644 --- a/drivers/gpu/drm/bridge/Kconfig +++ b/drivers/gpu/drm/bridge/Kconfig @@ -379,6 +379,13 @@ config DRM_TI_TPD12S015 Texas Instruments TPD12S015 HDMI level shifter and ESD protection driver. +config DRM_I2C_TI_983 + tristate "TI DS90UB983/DS90UB984/DS90UBMCU Serdes serializer deserializer support" + depends on DRM_BRIDGE + default y + help + Texas Instruments DS90UB983 and DS90UB984 Serdes driver + source "drivers/gpu/drm/bridge/analogix/Kconfig" source "drivers/gpu/drm/bridge/adv7511/Kconfig" diff --git a/drivers/gpu/drm/bridge/Makefile b/drivers/gpu/drm/bridge/Makefile index bb30ed34e4a8d..1b6ade1190568 100644 --- a/drivers/gpu/drm/bridge/Makefile +++ b/drivers/gpu/drm/bridge/Makefile @@ -38,4 +38,4 @@ obj-y += analogix/ obj-y += cadence/ obj-y += imx/ obj-y += synopsys/ -obj-y += ti/ +obj-$(CONFIG_DRM_I2C_TI_983) += ti/ diff --git a/drivers/gpu/drm/bridge/ti/Makefile b/drivers/gpu/drm/bridge/ti/Makefile index 46b40713d2796..1d320d4b73ba6 100644 --- a/drivers/gpu/drm/bridge/ti/Makefile +++ b/drivers/gpu/drm/bridge/ti/Makefile @@ -1,7 +1,6 @@ # SPDX-License-Identifier: GPL-2.0 # Makefile for max serdes/deserdes i2c drivers. # -CONFIG_DRM_I2C_TI_983=y -ccflags-y +=-DDEBUG +ccflags-y += -DDEBUG fpd_dp_ser_drv-obj := fpd_dp_ser_drv.o -obj-$(CONFIG_DRM_I2C_TI_983)+=fpd_dp_ser_drv.o +obj-$(CONFIG_DRM_I2C_TI_983) += fpd_dp_ser_drv.o diff --git a/drivers/gpu/drm/i915/display/intel_backlight.c b/drivers/gpu/drm/i915/display/intel_backlight.c index 156138b5b2579..5b263efaf0aae 100644 --- a/drivers/gpu/drm/i915/display/intel_backlight.c +++ b/drivers/gpu/drm/i915/display/intel_backlight.c @@ -1798,8 +1798,10 @@ void intel_backlight_init_funcs(struct intel_panel *panel) connector->panel.backlight.power = intel_pps_backlight_power; } +#ifdef CONFIG_DRM_I2C_TI_983 if (intel_dp_mcu_init_backlight_funcs(connector) == 0) return; +#endif /* We're using a standard PWM backlight interface */ panel->backlight.funcs = &pwm_bl_funcs; diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c index b3d4383641cc2..dbdd5950921a9 100644 --- a/drivers/gpu/drm/i915/display/intel_dp.c +++ b/drivers/gpu/drm/i915/display/intel_dp.c @@ -5494,6 +5494,8 @@ void intel_dp_mst_resume(struct drm_i915_private *dev_priv) } } + +#ifdef CONFIG_DRM_I2C_TI_983 extern struct i2c_adapter *i2c_adap_mcu; char intel_dp_ser_mcu_read_reg(struct drm_device *dev, struct i2c_adapter *adapter, u8 reg_addr, u8 *val) @@ -5683,3 +5685,4 @@ int intel_dp_mcu_init_backlight_funcs(struct intel_connector *intel_connector) return 0; } +#endif diff --git a/drivers/gpu/drm/i915/display/intel_panel.h b/drivers/gpu/drm/i915/display/intel_panel.h index 6f3322a2cfd96..0ffb2fb9916e9 100644 --- a/drivers/gpu/drm/i915/display/intel_panel.h +++ b/drivers/gpu/drm/i915/display/intel_panel.h @@ -50,6 +50,8 @@ void intel_panel_add_vbt_sdvo_fixed_mode(struct intel_connector *connector); void intel_panel_add_encoder_fixed_mode(struct intel_connector *connector, struct intel_encoder *encoder); +#ifdef CONFIG_DRM_I2C_TI_983 int intel_dp_mcu_init_backlight_funcs(struct intel_connector *intel_connector); +#endif #endif /* __INTEL_PANEL_H__ */