On Fri, Sep 4, 2020 at 10:17 AM allen allen.chen@ite.com.tw wrote:
This adds support for the iTE IT6505. This device can convert DPI signal to DP output.
From: Allen Chen allen.chen@ite.com.tw Signed-off-by: Jitao Shi jitao.shi@mediatek.com Signed-off-by: Pi-Hsun Shih pihsun@chromium.org Signed-off-by: Yilun Lin yllin@google.com Signed-off-by: Hermes Wu hermes.wu@ite.com.tw Signed-off-by: Allen Chen allen.chen@ite.com.tw Reported-by: kernel test robot lkp@intel.com
drivers/gpu/drm/bridge/Kconfig | 7 + drivers/gpu/drm/bridge/Makefile | 1 + drivers/gpu/drm/bridge/ite-it6505.c | 3338 +++++++++++++++++++++++++++ 3 files changed, 3346 insertions(+) create mode 100644 drivers/gpu/drm/bridge/ite-it6505.c
diff --git a/drivers/gpu/drm/bridge/Kconfig b/drivers/gpu/drm/bridge/Kconfig index 3e11af4e9f63e..f21dce3fabeb9 100644 --- a/drivers/gpu/drm/bridge/Kconfig +++ b/drivers/gpu/drm/bridge/Kconfig @@ -61,6 +61,13 @@ config DRM_LONTIUM_LT9611 HDMI signals Please say Y if you have such hardware.
+config DRM_ITE_IT6505
tristate "ITE IT6505 DisplayPort bridge"
depends on OF
select DRM_KMS_HELPER
help
ITE IT6505 DisplayPort bridge chip driver.
config DRM_LVDS_CODEC tristate "Transparent LVDS encoders and decoders support" depends on OF diff --git a/drivers/gpu/drm/bridge/Makefile b/drivers/gpu/drm/bridge/Makefile index c589a6a7cbe1d..8a118fd901ad7 100644 --- a/drivers/gpu/drm/bridge/Makefile +++ b/drivers/gpu/drm/bridge/Makefile @@ -3,6 +3,7 @@ obj-$(CONFIG_DRM_CDNS_DSI) += cdns-dsi.o obj-$(CONFIG_DRM_CHRONTEL_CH7033) += chrontel-ch7033.o obj-$(CONFIG_DRM_DISPLAY_CONNECTOR) += display-connector.o obj-$(CONFIG_DRM_LONTIUM_LT9611) += lontium-lt9611.o +obj-$(CONFIG_DRM_ITE_IT6505) += ite-it6505.o obj-$(CONFIG_DRM_LVDS_CODEC) += lvds-codec.o obj-$(CONFIG_DRM_MEGACHIPS_STDPXXXX_GE_B850V3_FW) += megachips-stdpxxxx-ge-b850v3-fw.o obj-$(CONFIG_DRM_NXP_PTN3460) += nxp-ptn3460.o diff --git a/drivers/gpu/drm/bridge/ite-it6505.c b/drivers/gpu/drm/bridge/ite-it6505.c new file mode 100644 index 0000000000000..0ed19673431ee --- /dev/null +++ b/drivers/gpu/drm/bridge/ite-it6505.c ...
+static void __maybe_unused it6505_delayed_audio(struct work_struct *work) +{
struct it6505 *it6505 = container_of(work, struct it6505,
delayed_audio.work);
DRM_DEV_DEBUG_DRIVER(&it6505->client->dev, "start");
if (!it6505->powered)
return;
if (!it6505->enable_drv_hold)
it6505_enable_audio(it6505);
+}
+static int __maybe_unused it6505_audio_setup_hw_params(struct it6505 *it6505,
struct hdmi_codec_params *params)
+{
struct device *dev = &it6505->client->dev;
int i = 0;
DRM_DEV_DEBUG_DRIVER(dev, "%s %d Hz, %d bit, %d channels\n", __func__,
params->sample_rate, params->sample_width,
params->cea.channels);
if (!it6505->bridge.encoder)
return -ENODEV;
if (params->cea.channels <= 1 || params->cea.channels > 8) {
DRM_DEV_DEBUG_DRIVER(dev, "channel number: %d not support",
it6505->audio.channel_count);
return -EINVAL;
}
it6505->audio.channel_count = params->cea.channels;
while (i < ARRAY_SIZE(audio_sample_rate_map) &&
params->sample_rate !=
audio_sample_rate_map[i].sample_rate_value) {
i++;
}
if (i == ARRAY_SIZE(audio_sample_rate_map)) {
DRM_DEV_DEBUG_DRIVER(dev, "sample rate: %d Hz not support",
params->sample_rate);
return -EINVAL;
}
it6505->audio.sample_rate = audio_sample_rate_map[i].rate;
switch (params->sample_width) {
case 16:
it6505->audio.word_length = WORD_LENGTH_16BIT;
break;
case 18:
it6505->audio.word_length = WORD_LENGTH_18BIT;
break;
case 20:
it6505->audio.word_length = WORD_LENGTH_20BIT;
break;
case 24:
case 32:
it6505->audio.word_length = WORD_LENGTH_24BIT;
break;
default:
DRM_DEV_DEBUG_DRIVER(dev, "wordlength: %d bit not support",
params->sample_width);
return -EINVAL;
}
return 0;
+}
+static void __maybe_unused it6505_audio_shutdown(struct device *dev, void *data) +{
struct it6505 *it6505 = dev_get_drvdata(dev);
if (it6505->powered)
it6505_disable_audio(it6505);
+}
+static int __maybe_unused it6505_audio_hook_plugged_cb(struct device *dev,
void *data,
hdmi_codec_plugged_cb fn,
struct device *codec_dev)
+{
struct it6505 *it6505 = data;
it6505->plugged_cb = fn;
it6505->codec_dev = codec_dev;
it6505_plugged_status_to_codec(it6505);
return 0;
+}
These four functions about audio seem to be unused. Move them (and other audio related changes) into another patch.
... 2.25.1