From patchwork Thu Nov 17 11:08:02 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hsin-Yi Wang X-Patchwork-Id: 21572 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:f944:0:0:0:0:0 with SMTP id q4csp338626wrr; Thu, 17 Nov 2022 03:10:36 -0800 (PST) X-Google-Smtp-Source: AA0mqf4cIyrF1Ut3ZVH5CKdx3De0L6+vkEyi/NcWDuTu68rDETgmXhY0bNWSwpBgpvSIaFsfutXz X-Received: by 2002:a17:902:8307:b0:188:a281:1b16 with SMTP id bd7-20020a170902830700b00188a2811b16mr2297773plb.103.1668683436454; Thu, 17 Nov 2022 03:10:36 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1668683436; cv=none; d=google.com; s=arc-20160816; b=A+l5RbeLwHbgyeLffQk9T+F1g7xI5K1Xpa3ux8vOa/+Y07cQleK7vKyEf9xVxNcUWr cRdTh+T4po/J6Yeghu7p3C4Ppb58yclqDQ6rNs6KT63YG81NuCrlNxnaaE4Mvz4yoVPj t4+y1xhSvL+71+weNKDpIwvJRB7pJtdg3I147Ovx3mqHKpBxQt+hOmJIS1PyRPDKcAPC DIDl7KbMPvQKejvajbqE+KwHJ/MkxcdXmUs9daxWV3ZGl0vdd5weSU+7BQ0MQljKEa/z aw4KBL97eTxKc+iW1tFQif7vl1b9XJRihoTzaQOxDyJ88fd9+Ja1sbFhLToPYTL6ciL3 t7CA== 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 :message-id:date:subject:cc:to:from:dkim-signature; bh=0tqK0qcu4ZbXIz1FounyREg16LfpvMx9JNd0Tfa961A=; b=XgWM4cLFG7HN8SibBScLyWeEPxtd2V+V3N0KhWHcQs+hjMQsdtCyO8w2m5BxOt6YMB PiHFrKiTKZv2qDnA4AyOdypSvb+8btopiRMkGBo5B+Pib95cC0DyFc9pTg9MaED2Fn6m p0znQ4agOCIMI4JbH/LLKbWkLiDLDnbnNyrndxYmzq9d/Qt15zfMud7fBR4xnk+hpwXH HoCCH6eRxTTp8zG/Vpp1DOOZkcfjnewpKNkf9r2D8WhNge/Sb5lhFK91nqy0AGTUG4z5 C5o6bkzNAddFSG4LuoPOfe4MqCM4XUf9PHsObiaWDFEyOMkec8xcZ1p4FbeepmahJW6t 2rFQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=AFoBfEAD; 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=chromium.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id pc15-20020a17090b3b8f00b001fb706e96afsi4998895pjb.182.2022.11.17.03.10.22; Thu, 17 Nov 2022 03:10:36 -0800 (PST) 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=@chromium.org header.s=google header.b=AFoBfEAD; 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=chromium.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239779AbiKQLJB (ORCPT + 99 others); Thu, 17 Nov 2022 06:09:01 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54518 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239721AbiKQLIP (ORCPT ); Thu, 17 Nov 2022 06:08:15 -0500 Received: from mail-pl1-x62d.google.com (mail-pl1-x62d.google.com [IPv6:2607:f8b0:4864:20::62d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 90D1213E12 for ; Thu, 17 Nov 2022 03:08:09 -0800 (PST) Received: by mail-pl1-x62d.google.com with SMTP id j12so1300204plj.5 for ; Thu, 17 Nov 2022 03:08:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=0tqK0qcu4ZbXIz1FounyREg16LfpvMx9JNd0Tfa961A=; b=AFoBfEAD1nJWlMgLMnXn0vdIL+CPo94VWnV12a+S1YWYICb26F1Np8B8kTDn2QXh8v 3MDzOYrdbhabqzws4QPDv8RY9mRvzvrHQTlp+AE1wWRhkwPQ4zHAz5NAx5NSPfZW3mQE TIKnnBeFktEgCF3rHIxA2KZt5ybmy93+PksJ8= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=0tqK0qcu4ZbXIz1FounyREg16LfpvMx9JNd0Tfa961A=; b=GQQ5aG4/HB0TqYI3sJxwZKckIboJ3oV2k0rDWMglXdJevZSNBoSn86Hs8yA6Oag/EZ IgSjnQOt+8xRbmcmbv0ckw2Tu/oLX73XVdBCm2M8p72xEuJmNlDqdVd/MIDhrhbxOTwt TFVD9FbUtTEb/B0pCCgO0GAuZrIpX2N2n0C7FLi9NvscPt+IunOGKrP49t6WsrYdYS1r ai60lDyBoNhuWeZodNThpdgWe/rRXZBLGx2VPfgfmCr7Pc04gtfCzueGkSFmNrmD2lhR UMrTmHrT4ebjJ0G+BR3BBeOPzrJ5Gfre9mSQHZQyIWIHNObGYva+yT5tlPREhlIYqh3l 3nPA== X-Gm-Message-State: ANoB5pln5cfSbD4Oclv6qsCavBZuP6Xnbw/LYXXrr4oehkvtme+FcKRQ GxgnrXcgNcaScihj5IQbUNGRYg== X-Received: by 2002:a17:90b:3544:b0:213:2173:f46a with SMTP id lt4-20020a17090b354400b002132173f46amr8259914pjb.103.1668683288952; Thu, 17 Nov 2022 03:08:08 -0800 (PST) Received: from hsinyi-z840.tpe.corp.google.com ([2401:fa00:1:10:e678:c7f5:9cb3:1a06]) by smtp.gmail.com with ESMTPSA id z18-20020a170902ccd200b0017a032d7ae4sm1025540ple.104.2022.11.17.03.08.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Nov 2022 03:08:08 -0800 (PST) From: Hsin-Yi Wang To: Sean Paul , Douglas Anderson , Robert Foss Cc: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Daniel Vetter , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Allen Chen , David Airlie Subject: [PATCH v6 1/3] drm_bridge: register content protect property Date: Thu, 17 Nov 2022 19:08:02 +0800 Message-Id: <20221117110804.1431024-1-hsinyi@chromium.org> X-Mailer: git-send-email 2.38.1.431.g37b22c650d-goog MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS 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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1749741402904390749?= X-GMAIL-MSGID: =?utf-8?q?1749741402904390749?= Some bridges are able to update HDCP status from userspace request if they support HDCP. HDCP property is the same as other connector properties that needs to be created after the connecter is initialized and before the connector is registered. If there exists a bridge that supports HDCP, add the property to the bridge connector. Signed-off-by: Hsin-Yi Wang Reviewed-by: Sean Paul Reported-by: kernel test robot --- v5->v6: fix compile warning when CONFIG_DRM_DISPLAY_HELPER=m --- drivers/gpu/drm/drm_bridge_connector.c | 9 +++++++++ include/drm/drm_bridge.h | 4 ++++ 2 files changed, 13 insertions(+) diff --git a/drivers/gpu/drm/drm_bridge_connector.c b/drivers/gpu/drm/drm_bridge_connector.c index 1c7d936523df..4147c6240110 100644 --- a/drivers/gpu/drm/drm_bridge_connector.c +++ b/drivers/gpu/drm/drm_bridge_connector.c @@ -7,6 +7,7 @@ #include #include +#include #include #include #include @@ -333,6 +334,7 @@ struct drm_connector *drm_bridge_connector_init(struct drm_device *drm, struct i2c_adapter *ddc = NULL; struct drm_bridge *bridge, *panel_bridge = NULL; int connector_type; + bool support_hdcp = false; bridge_connector = kzalloc(sizeof(*bridge_connector), GFP_KERNEL); if (!bridge_connector) @@ -376,6 +378,9 @@ struct drm_connector *drm_bridge_connector_init(struct drm_device *drm, if (drm_bridge_is_panel(bridge)) panel_bridge = bridge; + + if (bridge->support_hdcp) + support_hdcp = true; } if (connector_type == DRM_MODE_CONNECTOR_Unknown) { @@ -398,6 +403,10 @@ struct drm_connector *drm_bridge_connector_init(struct drm_device *drm, if (panel_bridge) drm_panel_bridge_set_orientation(connector, panel_bridge); + if (support_hdcp && IS_REACHABLE(CONFIG_DRM_DISPLAY_HELPER) && + IS_ENABLED(CONFIG_DRM_DISPLAY_HDCP_HELPER)) + drm_connector_attach_content_protection_property(connector, true); + return connector; } EXPORT_SYMBOL_GPL(drm_bridge_connector_init); diff --git a/include/drm/drm_bridge.h b/include/drm/drm_bridge.h index 6b65b0dfb4fb..1d2ab70f3436 100644 --- a/include/drm/drm_bridge.h +++ b/include/drm/drm_bridge.h @@ -768,6 +768,10 @@ struct drm_bridge { * modes. */ bool interlace_allowed; + /** + * @support_hdcp: Indicate that the bridge supports HDCP. + */ + bool support_hdcp; /** * @ddc: Associated I2C adapter for DDC access, if any. */ From patchwork Thu Nov 17 11:08:03 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hsin-Yi Wang X-Patchwork-Id: 21576 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:f944:0:0:0:0:0 with SMTP id q4csp338991wrr; Thu, 17 Nov 2022 03:11:42 -0800 (PST) X-Google-Smtp-Source: AA0mqf5pTJdaS7LGMEPzDwFwVWiuQQWZjBG+4uSPaEdNBq20LBKsAaaovT3q8R8IvtvFsHLXJCDS X-Received: by 2002:aa7:93a9:0:b0:562:d5be:adc8 with SMTP id x9-20020aa793a9000000b00562d5beadc8mr2466049pff.50.1668683501812; Thu, 17 Nov 2022 03:11:41 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1668683501; cv=none; d=google.com; s=arc-20160816; b=dnj6gQ/4jRKvq0VNxwQh1QuHRdJOkwloqk+CxXh5NlodXNx9ATk5jXewrBBqB5995g 0tExIgvX6mMqmctkj1D/BVXL7BLyE0tjsS2nE35zEBDaNO59TCzHq2tTk8hpCKTsGu36 gWYxH2GyHBd8Tp/vBjhXPwrZAAaGcva8ts7qNH8aphXUy6QFksfNnHgblGco6QzlRGlu +2Xc5BGUwbSjGxKmbzuNijnE6jyv3l6pFgn2XfBcpKvTOkJQYL9mnGz8TC9iCyPBgaju eAl+dhG7D5c9+vJJD4POqnN1u7FEMmuFmKrJpy2RWQzvHScYcgpWLCVJLK39gIBdmw4Y t7tA== 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=9adTC/kCnTAWZTCymBogkO2KVEPuyw81zYQPMZxxoSo=; b=m7+RFoHuhJ7pGIlae875WMTLlrgE9UFEq20F7J60TzLyI/xcpkX1LM3ozrbeFWODcb ETkmTiojGgO4/ihkyYDY/z59IiRmJ7LNl4YaeCaQdR2w7BfiOapUYZmd3uqdk6jBfU4y Djms9fQ+wilpHQzqsJfJbc5Cz6L8ExokMaF1SKKRBeyLw4WmuVusPvNRv6lrWxu7wuGS ZgyMLEbmuIGZIpBxqTsSNEbUZKxFWCr14vTn7EhENziTYwUTuN/hOdaRPC3trMta/FNl Lh96IKVu7m+OqVdr/JODek8d8JcAAIxwXCiI5HQupbau8kINFGDw2/+zRTGWB2FF+lLn h0Pw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b="RuLMYR/7"; 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=chromium.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id j11-20020a63cf0b000000b0046249619a7fsi698165pgg.553.2022.11.17.03.11.25; Thu, 17 Nov 2022 03:11:41 -0800 (PST) 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=@chromium.org header.s=google header.b="RuLMYR/7"; 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=chromium.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239590AbiKQLJl (ORCPT + 99 others); Thu, 17 Nov 2022 06:09:41 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55002 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239734AbiKQLIP (ORCPT ); Thu, 17 Nov 2022 06:08:15 -0500 Received: from mail-pg1-x52e.google.com (mail-pg1-x52e.google.com [IPv6:2607:f8b0:4864:20::52e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CCCDF42987 for ; Thu, 17 Nov 2022 03:08:11 -0800 (PST) Received: by mail-pg1-x52e.google.com with SMTP id q1so1639189pgl.11 for ; Thu, 17 Nov 2022 03:08:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; 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=9adTC/kCnTAWZTCymBogkO2KVEPuyw81zYQPMZxxoSo=; b=RuLMYR/7GIUlRh1mNcPgSb0/ogtrlYZLLuQLzBZM/cfwz01+rqe0iqeUeS/oXZ2/n+ VlevcOghg3lFqNrl7iEEHHgvKdDffYOe2ShXsXSylfV9oMoM105qreZo9uEPdaFVVVdR RbdlIxs2BBKDo1mqk5/u+LrdZ1Hxmxqmsp3mg= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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=9adTC/kCnTAWZTCymBogkO2KVEPuyw81zYQPMZxxoSo=; b=dR8MXkm3WiGLGiHoHqHM7JXHYVOdUPtShxW0pZBL/vB6GVW1PF/hmWIpgTEBT7BTeB syfLf2Ok3VmfEoAIZUjoJZIbfNT4nTlRgM+xvj/zl8P/KpGVsNZa5CF2mDZ5vmkQ7A/H tZLfAcyCdba/YnApsbTUpDaqQUdV4no2SRl7bvZ1CqtyiNf3ZXc1TFITknETkbU5msjT e3LKfQKkmzoAPQhEgdFE8/SpTP8L2dbk0kaK+1RYAFJMfiucPl2MQWEFXchc3qanfSoc gQYrvwv8KrQ5hGYRcj3IGu95pTzzK7vNJ+5g1SmL/vZgi+DGMX3oCcpHzaC2yWw0kKK9 HK4Q== X-Gm-Message-State: ANoB5pn6xM4ffDiBGGwBfAJ21SxGHNIA8YKfQYlV3/h6P0j0GpWI2FBB zh3ZtpHxub9vqjnAmGrf2gHNFBZxX0UUIw== X-Received: by 2002:a63:180a:0:b0:470:63e5:5c59 with SMTP id y10-20020a63180a000000b0047063e55c59mr1579787pgl.172.1668683291132; Thu, 17 Nov 2022 03:08:11 -0800 (PST) Received: from hsinyi-z840.tpe.corp.google.com ([2401:fa00:1:10:e678:c7f5:9cb3:1a06]) by smtp.gmail.com with ESMTPSA id z18-20020a170902ccd200b0017a032d7ae4sm1025540ple.104.2022.11.17.03.08.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Nov 2022 03:08:10 -0800 (PST) From: Hsin-Yi Wang To: Sean Paul , Douglas Anderson , Robert Foss Cc: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Daniel Vetter , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Allen Chen , David Airlie Subject: [PATCH v6 2/3] drm/bridge: anx7625: register content protect property Date: Thu, 17 Nov 2022 19:08:03 +0800 Message-Id: <20221117110804.1431024-2-hsinyi@chromium.org> X-Mailer: git-send-email 2.38.1.431.g37b22c650d-goog In-Reply-To: <20221117110804.1431024-1-hsinyi@chromium.org> References: <20221117110804.1431024-1-hsinyi@chromium.org> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS 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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1749741471575544923?= X-GMAIL-MSGID: =?utf-8?q?1749741471575544923?= Set support_hdcp so the connector can register content protect proterty when it's initializing. Signed-off-by: Hsin-Yi Wang Reviewed-by: Sean Paul --- v5->v6: no change. --- drivers/gpu/drm/bridge/analogix/anx7625.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/gpu/drm/bridge/analogix/anx7625.c b/drivers/gpu/drm/bridge/analogix/anx7625.c index b0ff1ecb80a5..0636ac59c739 100644 --- a/drivers/gpu/drm/bridge/analogix/anx7625.c +++ b/drivers/gpu/drm/bridge/analogix/anx7625.c @@ -2680,6 +2680,7 @@ static int anx7625_i2c_probe(struct i2c_client *client, platform->bridge.type = platform->pdata.panel_bridge ? DRM_MODE_CONNECTOR_eDP : DRM_MODE_CONNECTOR_DisplayPort; + platform->bridge.support_hdcp = true; drm_bridge_add(&platform->bridge); From patchwork Thu Nov 17 11:08:04 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hsin-Yi Wang X-Patchwork-Id: 21571 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:f944:0:0:0:0:0 with SMTP id q4csp338565wrr; Thu, 17 Nov 2022 03:10:26 -0800 (PST) X-Google-Smtp-Source: AA0mqf4ifOUXcjioE0jDSC/Tn/Ft9ynGxl1ggUfkmdmHXKioulQ6Vo6qz12N5dw9cslP3Cc9Dzjc X-Received: by 2002:a17:902:a5c6:b0:188:d41f:c37b with SMTP id t6-20020a170902a5c600b00188d41fc37bmr2202192plq.132.1668683426714; Thu, 17 Nov 2022 03:10:26 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1668683426; cv=none; d=google.com; s=arc-20160816; b=zdbPAquMlRvIINBU4Ub0MruA86bS7yqfMwcczEAsi+tnUOi4KMkHBGaLXK9bWZ+fZS 2aOTZhxqn/olsywREV2U0rLbrOIitG2StSHtcRIQ2yJrD9xO+92ZL1KG4en6wrxcs/jZ 1Hu1kEjURzzV0GRA9Db86C7QCufY2WVaNej3Sd5bG4QOk0HyBoRZWqiUFq/wN4lOeSL0 HYyhvtO6+SaLwHZM/fZN1gqhzV58/qMgSw0UXYGzag2JOLSH9N3h5Ln3V8guz73nfiim CGGOY2sme5+fk1NzBUde3ykcq5CIe9M1CERMqyTAYyGyz329MHvQez0UIUKmzyW0Df1q PnFA== 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=guDJ2D49X6qr8IBe/bEb2QRhshSWmmIUhs4eglbthY4=; b=O0UbaGwPIDpU0xPcyZsgv2HGoiSe4kaCDaVqhOEGdRDY9ofEoLiwVNVafORZ4zrkZy 9LcyBpEWGmrCcJUPDvaly+HKo9X6L7h/xnXyehdpV00ZpjpKPbJEobRTC/mEaX9KPDf9 FxTI0uNzogPKZo4STj6+Am7zkOn8FC4CMXmIMI62f/NObHalwV3G219cMF1iVIADBNjo J0xF/HSXUTKqjLqg0jXSylXHUMg8sruHej/3gj9Ej9ZmxRL8DkTd3VGn2t4xlTsRhz8o gR9Hn/KV99pWLTaUD3sWG9+xMBdefHW5qT/9E+vAbwuFMcLXOeQwMNTnXp/7wHWrmGVm 1qXg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=T1QGfHbl; 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=chromium.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id c14-20020a170903234e00b00186c56d9829si804423plh.328.2022.11.17.03.10.13; Thu, 17 Nov 2022 03:10:26 -0800 (PST) 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=@chromium.org header.s=google header.b=T1QGfHbl; 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=chromium.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239478AbiKQLI4 (ORCPT + 99 others); Thu, 17 Nov 2022 06:08:56 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54748 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239754AbiKQLIQ (ORCPT ); Thu, 17 Nov 2022 06:08:16 -0500 Received: from mail-pj1-x102d.google.com (mail-pj1-x102d.google.com [IPv6:2607:f8b0:4864:20::102d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id F194D69DC2 for ; Thu, 17 Nov 2022 03:08:13 -0800 (PST) Received: by mail-pj1-x102d.google.com with SMTP id t17so673391pjo.3 for ; Thu, 17 Nov 2022 03:08:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; 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=guDJ2D49X6qr8IBe/bEb2QRhshSWmmIUhs4eglbthY4=; b=T1QGfHblOvZFLAQ313+nynqrD6Pdbe1Pe3Zu2voXKUWYJ9vmhps/ejU6uy25NcskKj akstmsM5kk0uinqghnCVvwnxzAL768fyvX8cacrJ3O8j0shlGjfr37wyPjsFjMlEdpbv GfAHEfTmqlI1eVeggfwxsVmNSXl/XdHkCb2U0= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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=guDJ2D49X6qr8IBe/bEb2QRhshSWmmIUhs4eglbthY4=; b=gu4h5Wo9VgzLKXxW11go5iMDv1YKIAyYWiBkSNMWgMqdHXhQNyD2KeJfyUo16suWmi ODSHj6KJUji/dmpX4YqLuhiY2CQ9jy7Rhrt84nsM0GLQ70Y04O6OV0/40y49jc+4Ybb9 /n5/t1SrVmzSp/OcpKd3/rYCnZxasY4vyHAWHOXNU53yTvbLVepzL74LxrLwdmA2M3FZ EJMYvkdDEEO6Se8Nxsm8bUYia3FpETxMq+8/fGzR6dPYJlzk4x7PeUuRLwhg8sJxV1jN qBpPAAgWmxhKrsle2NCxH0pN0KB0dWbOb+Fd0SssKJ0BEBGqPUEnX1hUZTyDhjFvVBNH nkJg== X-Gm-Message-State: ANoB5pkX/vyFztZv3eY4kpQwBCz4aesA+3HcX5ElT6ARCjIqueTHYOkm yqAe518wZHt62Vmv2WpMpm+bxw== X-Received: by 2002:a17:90a:6547:b0:213:d08f:a483 with SMTP id f7-20020a17090a654700b00213d08fa483mr2325282pjs.21.1668683293463; Thu, 17 Nov 2022 03:08:13 -0800 (PST) Received: from hsinyi-z840.tpe.corp.google.com ([2401:fa00:1:10:e678:c7f5:9cb3:1a06]) by smtp.gmail.com with ESMTPSA id z18-20020a170902ccd200b0017a032d7ae4sm1025540ple.104.2022.11.17.03.08.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Nov 2022 03:08:13 -0800 (PST) From: Hsin-Yi Wang To: Sean Paul , Douglas Anderson , Robert Foss Cc: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Daniel Vetter , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Allen Chen , David Airlie Subject: [PATCH v6 3/3] drm/bridge: it6505: handle HDCP request Date: Thu, 17 Nov 2022 19:08:04 +0800 Message-Id: <20221117110804.1431024-3-hsinyi@chromium.org> X-Mailer: git-send-email 2.38.1.431.g37b22c650d-goog In-Reply-To: <20221117110804.1431024-1-hsinyi@chromium.org> References: <20221117110804.1431024-1-hsinyi@chromium.org> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS 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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1749741392460736940?= X-GMAIL-MSGID: =?utf-8?q?1749741392460736940?= it6505 supports HDCP 1.3, but current implementation lacks the update of HDCP status through drm_hdcp_update_content_protection(). it6505 default enables the HDCP. If user set it to undesired then the driver will stop HDCP. Signed-off-by: Hsin-Yi Wang Reviewed-by: allen chen --- v5->v6: no change. --- drivers/gpu/drm/bridge/ite-it6505.c | 55 +++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/drivers/gpu/drm/bridge/ite-it6505.c b/drivers/gpu/drm/bridge/ite-it6505.c index 21a9b8422bda..be08b42de4ea 100644 --- a/drivers/gpu/drm/bridge/ite-it6505.c +++ b/drivers/gpu/drm/bridge/ite-it6505.c @@ -423,6 +423,7 @@ struct it6505 { struct extcon_dev *extcon; struct work_struct extcon_wq; int extcon_state; + struct drm_connector *connector; enum drm_connector_status connector_status; enum link_train_status link_state; struct work_struct link_works; @@ -2399,6 +2400,14 @@ static void it6505_irq_hdcp_done(struct it6505 *it6505) DRM_DEV_DEBUG_DRIVER(dev, "hdcp done interrupt"); it6505->hdcp_status = HDCP_AUTH_DONE; + if (it6505->connector) { + struct drm_device *drm_dev = it6505->connector->dev; + + drm_modeset_lock(&drm_dev->mode_config.connection_mutex, NULL); + drm_hdcp_update_content_protection(it6505->connector, + DRM_MODE_CONTENT_PROTECTION_ENABLED); + drm_modeset_unlock(&drm_dev->mode_config.connection_mutex); + } it6505_show_hdcp_info(it6505); } @@ -2931,6 +2940,7 @@ static void it6505_bridge_atomic_enable(struct drm_bridge *bridge, if (WARN_ON(!connector)) return; + it6505->connector = connector; conn_state = drm_atomic_get_new_connector_state(state, connector); if (WARN_ON(!conn_state)) @@ -2974,6 +2984,7 @@ static void it6505_bridge_atomic_disable(struct drm_bridge *bridge, DRM_DEV_DEBUG_DRIVER(dev, "start"); + it6505->connector = NULL; if (it6505->powered) { it6505_drm_dp_link_set_power(&it6505->aux, &it6505->link, DP_SET_POWER_D3); @@ -3028,6 +3039,48 @@ static struct edid *it6505_bridge_get_edid(struct drm_bridge *bridge, return edid; } +static int it6505_connector_atomic_check(struct it6505 *it6505, + struct drm_connector_state *state) +{ + struct device *dev = &it6505->client->dev; + int cp = state->content_protection; + + DRM_DEV_DEBUG_DRIVER(dev, "hdcp connector state:%d, curr hdcp state:%d", + cp, it6505->hdcp_status); + + if (!it6505->hdcp_desired) { + DRM_DEV_DEBUG_DRIVER(dev, "sink not support hdcp"); + return 0; + } + + if (it6505->hdcp_status == HDCP_AUTH_GOING) + return -EINVAL; + + if (cp == DRM_MODE_CONTENT_PROTECTION_UNDESIRED) { + if (it6505->hdcp_status == HDCP_AUTH_DONE) + it6505_stop_hdcp(it6505); + } else if (cp == DRM_MODE_CONTENT_PROTECTION_DESIRED) { + if (it6505->hdcp_status == HDCP_AUTH_IDLE && + it6505->link_state == LINK_OK) + it6505_start_hdcp(it6505); + } else { + DRM_DEV_DEBUG_DRIVER(dev, "invalid to set hdcp enabled"); + return -EINVAL; + } + + return 0; +} + +static int it6505_bridge_atomic_check(struct drm_bridge *bridge, + struct drm_bridge_state *bridge_state, + struct drm_crtc_state *crtc_state, + struct drm_connector_state *conn_state) +{ + struct it6505 *it6505 = bridge_to_it6505(bridge); + + return it6505_connector_atomic_check(it6505, conn_state); +} + static const struct drm_bridge_funcs it6505_bridge_funcs = { .atomic_duplicate_state = drm_atomic_helper_bridge_duplicate_state, .atomic_destroy_state = drm_atomic_helper_bridge_destroy_state, @@ -3035,6 +3088,7 @@ static const struct drm_bridge_funcs it6505_bridge_funcs = { .attach = it6505_bridge_attach, .detach = it6505_bridge_detach, .mode_valid = it6505_bridge_mode_valid, + .atomic_check = it6505_bridge_atomic_check, .atomic_enable = it6505_bridge_atomic_enable, .atomic_disable = it6505_bridge_atomic_disable, .atomic_pre_enable = it6505_bridge_atomic_pre_enable, @@ -3354,6 +3408,7 @@ static int it6505_i2c_probe(struct i2c_client *client, it6505->bridge.type = DRM_MODE_CONNECTOR_DisplayPort; it6505->bridge.ops = DRM_BRIDGE_OP_DETECT | DRM_BRIDGE_OP_EDID | DRM_BRIDGE_OP_HPD; + it6505->bridge.support_hdcp = true; drm_bridge_add(&it6505->bridge); return 0;