Received: by 2002:a05:6358:c692:b0:131:369:b2a3 with SMTP id fe18csp1983636rwb; Fri, 28 Jul 2023 19:56:44 -0700 (PDT) X-Google-Smtp-Source: APBJJlE42hXS3tW7eK1dXz/T4bdEpKG3T1KAqBk4JYr2+Tbr1IWVf5A/S/OoNKu3esH6ZmVTAvXX X-Received: by 2002:a05:6a20:1d8:b0:137:2b6f:4307 with SMTP id 24-20020a056a2001d800b001372b6f4307mr3487197pzz.27.1690599403998; Fri, 28 Jul 2023 19:56:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1690599403; cv=none; d=google.com; s=arc-20160816; b=hQLpjcVuI9bVfA4ZH23ialxGJEqRGIcQdZ2iSHRbpz2IJyreG+V5LNDpL+fORbOfpU C/n77+9ga3JBkOYao3fMzcyv68Z1KCk/Cf1QA4PxG4+JPMVHZfAb0smssgCGEFw4g1F/ skNqgojjPnHyXpjuP730It80Y8lSL3oM2oh+8qLpBfcqwxjNsgwrCIKRuHzJUCE+NNUx 47FG+q2vo/W26P87a16uDsSpF6wJ9fqhXd4Iz73jHiSmmAzZ9FVARakoO8szaNznm6CB k5F50a6koCA86mxwpZELllSO7Ia1NzO37ImAD8gPOmtsxXUqsSwa3IdziUks6aUsca0q DeYA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=YW+vdrPDM+RdVg71eRxchKCcF3Il7t8mgNv0e+r+q2g=; fh=Ijs4z7asxnxZXSXH1iKU90GjPS2pk4sYIkJQzsSgRPM=; b=HvpraC6cxqImQakyJrkgEuL6C7I5ITMUV6xVh0ihyEuVH9nhCI/T07oKuyF5C0C4Le ZwFD94A+6Z+o1nJSGFu6/+jRs7t7zgjWr8M5EXed4k2hDgZVzZ9ji/PUolgTRvicspnZ pVnsuKnOEvg7CbKoeTjJDXrac4COpJCl50JDoY3ERde6c7kw03j7DZ/cQElGqv3qQjc+ ttqUrdh2O2piZF54cvKBP3POPjrXe/cnY70udUDOgEwIztchzeMSK4OMRW0/pJ6k3QZg eIS8Ppi4oD205PfqWXq51T6trMSrrZvBZ1/Ks565qduoCeacszj2Z+8XgPli3O9zFD1H 3MPQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=sgJZMUpp; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id l12-20020a63da4c000000b005633bda299csi3919993pgj.565.2023.07.28.19.56.32; Fri, 28 Jul 2023 19:56:43 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=sgJZMUpp; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235806AbjG2BCf (ORCPT + 99 others); Fri, 28 Jul 2023 21:02:35 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55494 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236519AbjG2BCe (ORCPT ); Fri, 28 Jul 2023 21:02:34 -0400 Received: from mail-ej1-x634.google.com (mail-ej1-x634.google.com [IPv6:2a00:1450:4864:20::634]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2612D3C33 for ; Fri, 28 Jul 2023 18:02:06 -0700 (PDT) Received: by mail-ej1-x634.google.com with SMTP id a640c23a62f3a-991da766865so368870166b.0 for ; Fri, 28 Jul 2023 18:02:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1690592519; x=1691197319; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=YW+vdrPDM+RdVg71eRxchKCcF3Il7t8mgNv0e+r+q2g=; b=sgJZMUppk51vG9NQLtB6RwoaQNyvkwHnBaeMFnTaBVFsLUM/CuWpYoyaqsfFPspBT0 sTPY/fw4jOQ0yQQQIBCkZW8clyjaJkbR3hojtql3mlP54YgbkyDTGQaV14sP2prxeNrL Fn6fH0Nx7A94g6JMrBD9wLlnQ31WeHapS9AFHXQD/hILOUJ+T0INg6XudXbKJpUBaMfo OKOt872ln+siWrPz6ZhnjYiLRQ1yVWAtdLEvb5fiSaeui1heY4p9FQ+4eRiguh4wqDxH PQyNu0TdHFqoEOcE16dwuFvuZPVdxTu/YazVoSeh9WQgy7ulIHF/frEfHa63Q4UqArjj gF2A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1690592519; x=1691197319; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=YW+vdrPDM+RdVg71eRxchKCcF3Il7t8mgNv0e+r+q2g=; b=VOoagDnezcPRwq157jW+ZPBk3vbVGCOJlX/Xo/vfqM723TdqONqYnujq/OG01oI2GX I6aBDRQ8TZjaDCkeP0V1TtCNmdNOdf2IvlrpfKPw6izGvT05C3HfFjKw0U0sofyROeIU u7/g7Yn8SPCySM+xfk3iznYopzJnHObPPt5CDZRQI4/SaPALFPu6aebQ7NNagPiE6foA qXw/sJJRjHmMEr4DAnsc2YS2lNGVWBMmz/8PWOkIckRZOWYdP4jWdvA31Ec07vrO+YsB 6nEKCXSyXJeH9XziSKGPHRJD/wDcFRMHjgttAw6pcoPZl0fm5P01iV/nz/0D0usxPV3P xYsw== X-Gm-Message-State: ABy/qLawFV3GP5xivLowKbz6MekUqqkyS9/mYGBCRBkJp7o/RrBE+68e 3beGcjJokzZT865m0Z5s+YRSpfudHUM/aiU5hl8= X-Received: by 2002:a19:915c:0:b0:4f8:711b:18b0 with SMTP id y28-20020a19915c000000b004f8711b18b0mr2325597lfj.3.1690591756020; Fri, 28 Jul 2023 17:49:16 -0700 (PDT) Received: from umbar.unikie.fi ([192.130.178.91]) by smtp.gmail.com with ESMTPSA id a24-20020a19f818000000b004fe20d1b288sm500702lff.159.2023.07.28.17.49.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Jul 2023 17:49:15 -0700 (PDT) From: Dmitry Baryshkov To: David Airlie , Daniel Vetter , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Andy Gross , Bjorn Andersson , Konrad Dybcio , Simon Ser , Janne Grunau Cc: Alex Deucher , =?UTF-8?q?Christian=20K=C3=B6nig?= , "Pan, Xinhui" , Harry Wentland , Leo Li , Rodrigo Siqueira , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Jani Nikula , Joonas Lahtinen , Rodrigo Vivi , Tvrtko Ursulin , amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, intel-gfx@lists.freedesktop.org Subject: [PATCH 2/4] drm/bridge-connector: handle subconnector types Date: Sat, 29 Jul 2023 03:49:11 +0300 Message-Id: <20230729004913.215872-3-dmitry.baryshkov@linaro.org> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230729004913.215872-1-dmitry.baryshkov@linaro.org> References: <20230729004913.215872-1-dmitry.baryshkov@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org If the created connector type supports subconnector type property, create and attach corresponding it. The default subtype value is 0, which maps to the DRM_MODE_SUBCONNECTOR_Unknown type. Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/drm_bridge_connector.c | 33 +++++++++++++++++++++++++- include/drm/drm_bridge.h | 4 ++++ 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/drm_bridge_connector.c b/drivers/gpu/drm/drm_bridge_connector.c index 07b5930b1282..a7b92f0d2430 100644 --- a/drivers/gpu/drm/drm_bridge_connector.c +++ b/drivers/gpu/drm/drm_bridge_connector.c @@ -329,7 +329,9 @@ struct drm_connector *drm_bridge_connector_init(struct drm_device *drm, struct drm_connector *connector; struct i2c_adapter *ddc = NULL; struct drm_bridge *bridge, *panel_bridge = NULL; + enum drm_mode_subconnector subconnector; int connector_type; + int ret; bridge_connector = kzalloc(sizeof(*bridge_connector), GFP_KERNEL); if (!bridge_connector) @@ -365,8 +367,10 @@ struct drm_connector *drm_bridge_connector_init(struct drm_device *drm, if (bridge->ops & DRM_BRIDGE_OP_MODES) bridge_connector->bridge_modes = bridge; - if (!drm_bridge_get_next_bridge(bridge)) + if (!drm_bridge_get_next_bridge(bridge)) { connector_type = bridge->type; + subconnector = bridge->subtype; + } #ifdef CONFIG_OF if (!drm_bridge_get_next_bridge(bridge) && @@ -399,6 +403,33 @@ struct drm_connector *drm_bridge_connector_init(struct drm_device *drm, if (panel_bridge) drm_panel_bridge_set_orientation(connector, panel_bridge); + if (connector_type == DRM_MODE_CONNECTOR_DisplayPort) { + drm_connector_attach_dp_subconnector_property(connector, subconnector); + } else if (connector_type == DRM_MODE_CONNECTOR_DVII) { + ret = drm_mode_create_dvi_i_properties(drm); + if (ret) + return ERR_PTR(ret); + + drm_object_attach_property(&connector->base, + drm->mode_config.dvi_i_subconnector_property, + subconnector); + } else if (connector_type == DRM_MODE_CONNECTOR_TV) { + ret = drm_mode_create_tv_properties(drm, + BIT(DRM_MODE_TV_MODE_NTSC) | + BIT(DRM_MODE_TV_MODE_NTSC_443) | + BIT(DRM_MODE_TV_MODE_NTSC_J) | + BIT(DRM_MODE_TV_MODE_PAL) | + BIT(DRM_MODE_TV_MODE_PAL_M) | + BIT(DRM_MODE_TV_MODE_PAL_N) | + BIT(DRM_MODE_TV_MODE_SECAM)); + if (ret) + return ERR_PTR(ret); + + drm_object_attach_property(&connector->base, + drm->mode_config.tv_subconnector_property, + subconnector); + } + return connector; } EXPORT_SYMBOL_GPL(drm_bridge_connector_init); diff --git a/include/drm/drm_bridge.h b/include/drm/drm_bridge.h index bf964cdfb330..68b14ac5ac0d 100644 --- a/include/drm/drm_bridge.h +++ b/include/drm/drm_bridge.h @@ -739,6 +739,10 @@ struct drm_bridge { * identifies the type of connected display. */ int type; + /** + * @subtype: the subtype of the connector for the DP/TV/DVI-I cases. + */ + enum drm_mode_subconnector subtype; /** * @interlace_allowed: Indicate that the bridge can handle interlaced * modes. -- 2.39.2