From patchwork Sat Feb 22 15:00:12 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Pinchart X-Patchwork-Id: 11398119 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 33365109A for ; Sat, 22 Feb 2020 15:01:45 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 0C68E20702 for ; Sat, 22 Feb 2020 15:01:44 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="JhjwSe/Z" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 0C68E20702 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=ideasonboard.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 384026E059; Sat, 22 Feb 2020 15:01:42 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647]) by gabe.freedesktop.org (Postfix) with ESMTPS id 73A556E059 for ; Sat, 22 Feb 2020 15:01:41 +0000 (UTC) Received: from pendragon.bb.dnainternet.fi (81-175-216-236.bb.dnainternet.fi [81.175.216.236]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 9796733E; Sat, 22 Feb 2020 16:01:38 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1582383699; bh=1xAX2wwxJBpfO6MSGVc8Fv4WSaEIxEnscqISoRcPCbk=; h=From:To:Cc:Subject:Date:From; b=JhjwSe/ZfUZy2r/mmCPW9LFJj/gYeAi5OADuruRv6gO2Y1RTEhlvY70V7AWDTYNPf eY5fo14+Du04O75LmjWssa7DTKgZSBTLvid7gEJJ6No1BYXI/PnhZrvha9HHpIYHZx wbiKJAZxhjCYwDssCGUKECeFXi9KtyhiMcWiSJzg= From: Laurent Pinchart To: dri-devel@lists.freedesktop.org Subject: [PATCH v7 00/54] drm/omap: Replace custom display drivers with drm_bridge and drm_panel Date: Sat, 22 Feb 2020 17:00:12 +0200 Message-Id: <20200222150106.22919-1-laurent.pinchart@ideasonboard.com> X-Mailer: git-send-email 2.24.1 MIME-Version: 1.0 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Tomi Valkeinen , Sam Ravnborg , Sebastian Reichel , Boris Brezillon Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Hello, This patch series is the sixth attempt to (nearly, see [1]) complete the rework of the omapdrm driver to move to drm_bridge and drm_panel. Version 2, available at [2], explains in its long cover letter the rationale for the changes. I won't duplicate it here as it is still valid as-is. Compared to v6, available at [3], this version has been rebased on top of drm-misc-next, and documentation of the bridge overview and operation usage has been improved. The "drm/omap: dss: Remove unused omap_dss_device operations" patch has been moved to the end of the series and isn't meant to be merged yet, as it gets in the way of Sebastian's DSI rework. Boris, could you have a look at the small fixes to the drm_bridge documentation in patches 04/54 and 05/54 ? Daniel, patch 06/54, as well as the documentation improvements in 07/54 and 09/54 are for you. The patches can be found at git://linuxtv.org/pinchartl/media.git omapdrm/bridge/devel [1] The only notable exception is the omapdrm-specific DSI panel driver that implements a large number of custom operations. This is being addressed separately. [2] https://patchwork.kernel.org/cover/11102445/ [3] https://patchwork.kernel.org/cover/11384691/ Laurent Pinchart (54): video: hdmi: Change return type of hdmi_avi_infoframe_init() to void drm/connector: Add helper to get a connector type name drm/edid: Add flag to drm_display_info to identify HDMI sinks drm/bridge: Document the drm_encoder.bridge_chain field as private drm/bridge: Fix atomic state ops documentation drm/bridge: Improve overview documentation drm/bridge: Add connector-related bridge operations and data drm/bridge: Add interlace_allowed flag to drm_bridge drm/bridge: Extend bridge API to disable connector creation drm/bridge: dumb-vga-dac: Rename internal symbols to simple-bridge drm/bridge: dumb-vga-dac: Rename driver to simple-bridge drm/bridge: simple-bridge: Add support for non-VGA bridges drm/bridge: simple-bridge: Add support for enable GPIO drm/bridge: simple-bridge: Add support for the TI OPA362 drm/bridge: Add bridge driver for display connectors drm/bridge: Add driver for the TI TPD12S015 HDMI level shifter drm/bridge: panel: Implement bridge connector operations drm/bridge: tfp410: Replace manual connector handling with bridge drm/bridge: tfp410: Allow operation without drm_connector drm: Add helper to create a connector for a chain of bridges drm/omap: dss: Cleanup DSS ports on initialisation failure drm/omap: Simplify HDMI mode and infoframe configuration drm/omap: Factor out display type to connector type conversion drm/omap: Use the drm_panel_bridge API drm/omap: dss: Fix output next device lookup in DT drm/omap: Add infrastructure to support drm_bridge local to DSS outputs drm/omap: dss: Make omap_dss_device_ops optional drm/omap: hdmi: Allocate EDID in the .read_edid() operation drm/omap: hdmi4: Rework EDID read to isolate data read drm/omap: hdmi5: Rework EDID read to isolate data read drm/omap: hdmi4: Register a drm_bridge for EDID read drm/omap: hdmi5: Register a drm_bridge for EDID read drm/omap: hdmi4: Move mode set, enable and disable operations to bridge drm/omap: hdmi5: Move mode set, enable and disable operations to bridge drm/omap: hdmi4: Implement drm_bridge .hpd_notify() operation drm/omap: dss: Remove .set_hdmi_mode() and .set_infoframe() operations drm/omap: venc: Register a drm_bridge drm/omap: Create connector for bridges drm/omap: Switch the HDMI and VENC outputs to drm_bridge drm/omap: Remove HPD, detect and EDID omapdss operations drm/omap: hdmi: Remove omap_dss_device operations drm/omap: venc: Remove omap_dss_device operations drm/omap: hdmi4: Simplify EDID read drm/omap: hdmi5: Simplify EDID read drm/omap: dpi: Sort includes alphabetically drm/omap: dpi: Reorder functions in sections drm/omap: dpi: Simplify clock setting API drm/omap: dpi: Register a drm_bridge drm/omap: sdi: Sort includes alphabetically drm/omap: sdi: Register a drm_bridge drm/omap: Hardcode omap_connector type to DSI drm/omap: dss: Inline the omapdss_display_get() function drm/omap: dss: Remove unused omapdss_of_find_connected_device() function drm/omap: dss: Remove unused omap_dss_device operations Documentation/gpu/drm-kms-helpers.rst | 18 +- Documentation/gpu/todo.rst | 14 + arch/arm/configs/davinci_all_defconfig | 2 +- arch/arm/configs/integrator_defconfig | 2 +- arch/arm/configs/multi_v7_defconfig | 2 +- arch/arm/configs/omap2plus_defconfig | 7 +- arch/arm/configs/shmobile_defconfig | 2 +- arch/arm/configs/sunxi_defconfig | 2 +- arch/arm/configs/versatile_defconfig | 2 +- drivers/gpu/drm/Makefile | 3 +- drivers/gpu/drm/arc/arcpgu_hdmi.c | 2 +- .../gpu/drm/atmel-hlcdc/atmel_hlcdc_output.c | 2 +- drivers/gpu/drm/bridge/Kconfig | 29 +- drivers/gpu/drm/bridge/Makefile | 4 +- drivers/gpu/drm/bridge/adv7511/adv7511_drv.c | 8 +- .../drm/bridge/analogix/analogix-anx6345.c | 8 +- .../drm/bridge/analogix/analogix-anx78xx.c | 8 +- .../drm/bridge/analogix/analogix_dp_core.c | 10 +- drivers/gpu/drm/bridge/cdns-dsi.c | 6 +- drivers/gpu/drm/bridge/display-connector.c | 295 ++++++++++++++ drivers/gpu/drm/bridge/dumb-vga-dac.c | 300 -------------- drivers/gpu/drm/bridge/lvds-codec.c | 5 +- .../bridge/megachips-stdpxxxx-ge-b850v3-fw.c | 8 +- drivers/gpu/drm/bridge/nxp-ptn3460.c | 8 +- drivers/gpu/drm/bridge/panel.c | 17 +- drivers/gpu/drm/bridge/parade-ps8622.c | 8 +- drivers/gpu/drm/bridge/parade-ps8640.c | 5 +- drivers/gpu/drm/bridge/sii902x.c | 8 +- drivers/gpu/drm/bridge/sil-sii8620.c | 3 +- drivers/gpu/drm/bridge/simple-bridge.c | 342 ++++++++++++++++ drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 10 +- drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c | 8 +- drivers/gpu/drm/bridge/tc358764.c | 8 +- drivers/gpu/drm/bridge/tc358767.c | 9 +- drivers/gpu/drm/bridge/tc358768.c | 6 +- drivers/gpu/drm/bridge/thc63lvd1024.c | 5 +- drivers/gpu/drm/bridge/ti-sn65dsi86.c | 8 +- drivers/gpu/drm/bridge/ti-tfp410.c | 222 ++++------ drivers/gpu/drm/bridge/ti-tpd12s015.c | 211 ++++++++++ drivers/gpu/drm/drm_bridge.c | 291 +++++++++++++- drivers/gpu/drm/drm_bridge_connector.c | 379 ++++++++++++++++++ drivers/gpu/drm/drm_connector.c | 15 + drivers/gpu/drm/drm_edid.c | 11 +- drivers/gpu/drm/drm_simple_kms_helper.c | 2 +- drivers/gpu/drm/exynos/exynos_dp.c | 3 +- drivers/gpu/drm/exynos/exynos_drm_dsi.c | 4 +- drivers/gpu/drm/exynos/exynos_hdmi.c | 2 +- drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c | 2 +- drivers/gpu/drm/hisilicon/kirin/dw_drm_dsi.c | 2 +- drivers/gpu/drm/i2c/tda998x_drv.c | 10 +- drivers/gpu/drm/imx/imx-ldb.c | 2 +- drivers/gpu/drm/imx/parallel-display.c | 4 +- drivers/gpu/drm/ingenic/ingenic-drm.c | 2 +- drivers/gpu/drm/mcde/mcde_dsi.c | 5 +- drivers/gpu/drm/mediatek/mtk_dpi.c | 2 +- drivers/gpu/drm/mediatek/mtk_dsi.c | 2 +- drivers/gpu/drm/mediatek/mtk_hdmi.c | 10 +- drivers/gpu/drm/msm/dsi/dsi_manager.c | 4 +- drivers/gpu/drm/msm/edp/edp.c | 2 +- drivers/gpu/drm/msm/edp/edp_bridge.c | 2 +- drivers/gpu/drm/msm/hdmi/hdmi.c | 2 +- drivers/gpu/drm/msm/hdmi/hdmi_bridge.c | 2 +- drivers/gpu/drm/omapdrm/displays/Kconfig | 22 - drivers/gpu/drm/omapdrm/displays/Makefile | 4 - .../omapdrm/displays/connector-analog-tv.c | 97 ----- .../gpu/drm/omapdrm/displays/connector-hdmi.c | 183 --------- .../gpu/drm/omapdrm/displays/encoder-opa362.c | 137 ------- .../drm/omapdrm/displays/encoder-tpd12s015.c | 217 ---------- .../gpu/drm/omapdrm/displays/panel-dsi-cm.c | 2 +- drivers/gpu/drm/omapdrm/dss/Makefile | 2 +- drivers/gpu/drm/omapdrm/dss/base.c | 55 +-- drivers/gpu/drm/omapdrm/dss/display.c | 9 - drivers/gpu/drm/omapdrm/dss/dpi.c | 349 ++++++++-------- drivers/gpu/drm/omapdrm/dss/dsi.c | 4 +- drivers/gpu/drm/omapdrm/dss/dss-of.c | 28 -- drivers/gpu/drm/omapdrm/dss/dss.c | 46 ++- drivers/gpu/drm/omapdrm/dss/hdmi.h | 4 +- drivers/gpu/drm/omapdrm/dss/hdmi4.c | 313 ++++++++------- drivers/gpu/drm/omapdrm/dss/hdmi4_core.c | 59 +-- drivers/gpu/drm/omapdrm/dss/hdmi4_core.h | 4 +- drivers/gpu/drm/omapdrm/dss/hdmi5.c | 295 ++++++++------ drivers/gpu/drm/omapdrm/dss/hdmi5_core.c | 48 +-- drivers/gpu/drm/omapdrm/dss/hdmi5_core.h | 5 +- .../gpu/drm/omapdrm/dss/omapdss-boot-init.c | 5 - drivers/gpu/drm/omapdrm/dss/omapdss.h | 46 +-- drivers/gpu/drm/omapdrm/dss/output.c | 53 ++- drivers/gpu/drm/omapdrm/dss/sdi.c | 178 +++++--- drivers/gpu/drm/omapdrm/dss/venc.c | 269 +++++++------ drivers/gpu/drm/omapdrm/omap_connector.c | 247 +----------- drivers/gpu/drm/omapdrm/omap_connector.h | 3 - drivers/gpu/drm/omapdrm/omap_drv.c | 88 ++-- drivers/gpu/drm/omapdrm/omap_encoder.c | 83 +--- drivers/gpu/drm/rcar-du/rcar_du_encoder.c | 2 +- drivers/gpu/drm/rcar-du/rcar_lvds.c | 11 +- drivers/gpu/drm/rockchip/rockchip_lvds.c | 2 +- drivers/gpu/drm/rockchip/rockchip_rgb.c | 2 +- drivers/gpu/drm/sti/sti_dvo.c | 2 +- drivers/gpu/drm/sti/sti_hda.c | 2 +- drivers/gpu/drm/sti/sti_hdmi.c | 2 +- drivers/gpu/drm/stm/ltdc.c | 2 +- drivers/gpu/drm/sun4i/sun4i_lvds.c | 2 +- drivers/gpu/drm/sun4i/sun4i_rgb.c | 2 +- drivers/gpu/drm/tidss/tidss_kms.c | 2 +- drivers/gpu/drm/tilcdc/tilcdc_external.c | 2 +- drivers/gpu/drm/vc4/vc4_dpi.c | 2 +- drivers/gpu/drm/vc4/vc4_dsi.c | 2 +- drivers/video/hdmi.c | 11 +- include/drm/drm_bridge.h | 237 ++++++++++- include/drm/drm_bridge_connector.h | 18 + include/drm/drm_connector.h | 9 + include/drm/drm_encoder.h | 3 +- include/linux/hdmi.h | 2 +- 112 files changed, 3102 insertions(+), 2447 deletions(-) create mode 100644 drivers/gpu/drm/bridge/display-connector.c delete mode 100644 drivers/gpu/drm/bridge/dumb-vga-dac.c create mode 100644 drivers/gpu/drm/bridge/simple-bridge.c create mode 100644 drivers/gpu/drm/bridge/ti-tpd12s015.c create mode 100644 drivers/gpu/drm/drm_bridge_connector.c delete mode 100644 drivers/gpu/drm/omapdrm/displays/connector-analog-tv.c delete mode 100644 drivers/gpu/drm/omapdrm/displays/connector-hdmi.c delete mode 100644 drivers/gpu/drm/omapdrm/displays/encoder-opa362.c delete mode 100644 drivers/gpu/drm/omapdrm/displays/encoder-tpd12s015.c delete mode 100644 drivers/gpu/drm/omapdrm/dss/dss-of.c create mode 100644 include/drm/drm_bridge_connector.h