Hi, Guillaume: On Mon, 2021-11-08 at 01:08 +0100, Guillaume Ranquet wrote: > Signed-off-by: Guillaume Ranquet <granquet@xxxxxxxxxxxx> > Change-Id: I6399dec26cfe56a338c2ca96989cb7cbd14e292b > --- > drivers/gpu/drm/mediatek/Kconfig | 9 + > drivers/gpu/drm/mediatek/Makefile | 2 + > drivers/gpu/drm/mediatek/mtk_hdmi_common.c | 219 +- > drivers/gpu/drm/mediatek/mtk_hdmi_common.h | 24 +- > drivers/gpu/drm/mediatek/mtk_mt8195_hdmi.c | 1835 > +++++++++++++++++ > drivers/gpu/drm/mediatek/mtk_mt8195_hdmi.h | 26 + > .../gpu/drm/mediatek/mtk_mt8195_hdmi_ddc.c | 530 +++++ > .../gpu/drm/mediatek/mtk_mt8195_hdmi_ddc.h | 20 + > .../gpu/drm/mediatek/mtk_mt8195_hdmi_regs.h | 329 +++ > 9 files changed, 2932 insertions(+), 62 deletions(-) > create mode 100644 drivers/gpu/drm/mediatek/mtk_mt8195_hdmi.c > create mode 100644 drivers/gpu/drm/mediatek/mtk_mt8195_hdmi.h > create mode 100644 drivers/gpu/drm/mediatek/mtk_mt8195_hdmi_ddc.c > create mode 100644 drivers/gpu/drm/mediatek/mtk_mt8195_hdmi_ddc.h > create mode 100644 drivers/gpu/drm/mediatek/mtk_mt8195_hdmi_regs.h > > diff --git a/drivers/gpu/drm/mediatek/Kconfig > b/drivers/gpu/drm/mediatek/Kconfig > index 0df75bceb74e..76cc402cbd75 100644 > --- a/drivers/gpu/drm/mediatek/Kconfig > +++ b/drivers/gpu/drm/mediatek/Kconfig > @@ -31,3 +31,12 @@ config DRM_MEDIATEK_HDMI > help > DRM/KMS HDMI driver for Mediatek SoCs [snip] > + > +static int mtk_hdmi_ddc_xfer(struct i2c_adapter *adapter, struct > i2c_msg *msgs, > + int num) > +{ > + struct mtk_hdmi_ddc *ddc = adapter->algo_data; > + struct device *dev = adapter->dev.parent; > + int ret; > + int i; > + > + if (!ddc) > + return -EINVAL; > + > + for (i = 0; i < num; i++) { > + struct i2c_msg *msg = &msgs[i]; > + > + if (msg->flags & I2C_M_RD) > + ret = fg_ddc_data_read(ddc, msg->addr, msg- > >buf[0], > + (msg->len), &msg->buf[0]); > + else > + ret = fg_ddc_data_write(ddc, msg->addr, msg- > >buf[0], > + (msg->len - 1), &msg- > >buf[1]); Why do you use msg->buf[1]? In mt8173 hdmi ddc driver, mtk_hdmi_ddc_write_msg() just use msg->buf[0]. If using msg->buf[1] is advance function, separate this advance function to another patch. Regards, CK > + > + if (ret <= 0) > + goto xfer_end; > + } > + > + return i; > + > +xfer_end: > + dev_err(dev, "ddc failed! : %d\n", ret); > + return ret; > +} > +