Received: by 2002:a05:6a10:5594:0:0:0:0 with SMTP id ee20csp305299pxb; Mon, 25 Apr 2022 10:16:41 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzhvQVQpxLwLwTI5noEE5TTrQJDON+y7EWcKs+97IkGu2QtywxmPAlAHcgXjvEOq1ygyp6s X-Received: by 2002:a17:90b:3809:b0:1d2:ab07:484a with SMTP id mq9-20020a17090b380900b001d2ab07484amr32811749pjb.236.1650907001705; Mon, 25 Apr 2022 10:16:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1650907001; cv=none; d=google.com; s=arc-20160816; b=BTv+t0t+k7GWTIOafCP/lMSXV254jZqDOwpuq8ZkydKnp22NpsEZAwobamB8pMMrkE OjtDvNv3zdyuIUpWfK1JYI2RCGtH6mbNOGv/ptggIzEuk8w6DHJ49hGkHIXKrDd2jmhW 2A2yjnOKWzlAJQqsvslEXUvaVLKPVQcS6bAtYvc5a4ZlP5/G/Zt3CyVh5IfjYQlm3DUA UXRkzFozgXXoFPlbJu7ZzNdrbBRz5JpG6Z8JwdFFKDUbkWubeR/Md2I4zKw8/QHTx0jJ g7cQ2RdDOQ4sool8TLPtij5Wr86x11gW/OepgN0e3fmBubVbF3mXvEgYIGUzqoZFwNTv R95g== 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=UN6SFQNZbE9zaNM51H9eT4YuwXVUcUf6icJwAeiY++c=; b=AFMY5pHHFX1zXVtFCoBLBMS/yt5e1qVaYJc9M1w1zpLUPEDlRPE9b1A31G41p40Ca6 INgxFfrS0BQNel2aklwL3P6vnSszrdU2zzrroFLDro01tGRcmsl2K00zpfFIZ1czgUhM vdg5bc17lsKptQyCeM8YeXTnepnCTSN/vPSXfNfShZSsgYRpvOcPLjRd/6xYDxCUOgAK IJJuwdzS6osBZ+G0D5Pru/jgcgUOPGkp8apqSA3Z9HYiyQAWaxnTgLC9MhxSRiBFw946 d7qZeILh6t+i0RjHYMhvhx79luDLRYMZbWX8IR+3RaXl/bxRsuG/Py9QL5Q71Gcxjzff gX3w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=EDnvYWJ8; 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 Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id w18-20020a170902c79200b0015d0f3a4ac5si3580552pla.300.2022.04.25.10.16.19; Mon, 25 Apr 2022 10:16:41 -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=@chromium.org header.s=google header.b=EDnvYWJ8; 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 S242218AbiDYNry (ORCPT + 99 others); Mon, 25 Apr 2022 09:47:54 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46682 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S242212AbiDYNrv (ORCPT ); Mon, 25 Apr 2022 09:47:51 -0400 Received: from mail-pl1-x641.google.com (mail-pl1-x641.google.com [IPv6:2607:f8b0:4864:20::641]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9D9A749F9E for ; Mon, 25 Apr 2022 06:44:45 -0700 (PDT) Received: by mail-pl1-x641.google.com with SMTP id c23so27175339plo.0 for ; Mon, 25 Apr 2022 06:44:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=UN6SFQNZbE9zaNM51H9eT4YuwXVUcUf6icJwAeiY++c=; b=EDnvYWJ8aO9xAWueVAjZLcFurdQarTkkurKI/rSQ5/t3kYJ7vNdUsQDZz6IbJtOFV7 WjLQi3PmJjFuQrCixw0eSB+A27NWoO9yghSzy1xEzh6Agw1QOt9j2o4cPQWv8M23rGFC mlm6dnL9IwtH5p9XIQGBaPb4378IcV74+xADQ= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=UN6SFQNZbE9zaNM51H9eT4YuwXVUcUf6icJwAeiY++c=; b=XBlZEFY2Bt8F3Py54+B/ujNq+/eukZlMyFctBIqvlKT97Ij7AeFkoBNn1JQIBYKgc+ ry/llWDFwZA5TFT9FpnnU04TBZ6FG8cC7waHftzMgxoK6R0Uj4hr65mjKPBEx6EeGQ4f 6kSt2JKjT2CJzDojSwDsbZnlbnU+FMaVLSg/UZY+0upMYZ9xyYsDZRI+Q7HWqTboEDJ7 VGLNxzrlQlhINZ2niSbiqbGASOlFvUvEpOJgsmr57tZwrmW81GvjX7ronY1Fvcz5loSQ PaTSuO5w/izwcFtXF8tDO/J1u/02T/ypTXezjuSyyS/kcca0IzdcvCFdTSVPzYlyNpkD MzIQ== X-Gm-Message-State: AOAM532T4G6r20iB/Ed5FfUwTZQ7G0ffO/WCvgAyA0DgJg9gkjoFhSEB bINKGRiXU1VuoJo8sLFFp2zkX5J1o29Bug== X-Received: by 2002:a17:90a:bb8f:b0:1d9:650e:10f5 with SMTP id v15-20020a17090abb8f00b001d9650e10f5mr7203096pjr.148.1650894285129; Mon, 25 Apr 2022 06:44:45 -0700 (PDT) Received: from treapking.tpe.corp.google.com ([2401:fa00:1:10:7496:6d31:4b51:6d37]) by smtp.gmail.com with ESMTPSA id d9-20020a056a00198900b00508379f2121sm11736582pfl.52.2022.04.25.06.44.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 25 Apr 2022 06:44:44 -0700 (PDT) From: Pin-Yen Lin To: Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , David Airlie , Daniel Vetter Cc: Hsin-Yi Wang , Pin-Yen Lin , Allen Chen , AngeloGioacchino Del Regno , Hermes Wu , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: [PATCH] drm/bridge: it6505: Send DPCD SET_POWER to downstream Date: Mon, 25 Apr 2022 21:44:24 +0800 Message-Id: <20220425134424.1150965-1-treapking@chromium.org> X-Mailer: git-send-email 2.36.0.rc2.479.g8af0fa9b8e-goog MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.7 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 Send DPCD SET_POWER command to downstream in .atomic_disable to make the downstream monitor enter the power down mode, so the device suspend won't be affected. Fixes: b5c84a9edcd418 ("drm/bridge: add it6505 driver") Signed-off-by: Pin-Yen Lin --- drivers/gpu/drm/bridge/ite-it6505.c | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/drivers/gpu/drm/bridge/ite-it6505.c b/drivers/gpu/drm/bridge/ite-it6505.c index 8fed30df08b0..4b673c4792d7 100644 --- a/drivers/gpu/drm/bridge/ite-it6505.c +++ b/drivers/gpu/drm/bridge/ite-it6505.c @@ -737,8 +737,9 @@ static int it6505_drm_dp_link_probe(struct drm_dp_aux *aux, return 0; } -static int it6505_drm_dp_link_power_up(struct drm_dp_aux *aux, - struct it6505_drm_dp_link *link) +static int it6505_drm_dp_link_set_power(struct drm_dp_aux *aux, + struct it6505_drm_dp_link *link, + u8 mode) { u8 value; int err; @@ -752,18 +753,20 @@ static int it6505_drm_dp_link_power_up(struct drm_dp_aux *aux, return err; value &= ~DP_SET_POWER_MASK; - value |= DP_SET_POWER_D0; + value |= mode; err = drm_dp_dpcd_writeb(aux, DP_SET_POWER, value); if (err < 0) return err; - /* - * According to the DP 1.1 specification, a "Sink Device must exit the - * power saving state within 1 ms" (Section 2.5.3.1, Table 5-52, "Sink - * Control Field" (register 0x600). - */ - usleep_range(1000, 2000); + if (mode == DP_SET_POWER_D0) { + /* + * According to the DP 1.1 specification, a "Sink Device must + * exit the power saving state within 1 ms" (Section 2.5.3.1, + * Table 5-52, "Sink Control Field" (register 0x600). + */ + usleep_range(1000, 2000); + } return 0; } @@ -2624,7 +2627,8 @@ static enum drm_connector_status it6505_detect(struct it6505 *it6505) if (it6505_get_sink_hpd_status(it6505)) { it6505_aux_on(it6505); it6505_drm_dp_link_probe(&it6505->aux, &it6505->link); - it6505_drm_dp_link_power_up(&it6505->aux, &it6505->link); + it6505_drm_dp_link_set_power(&it6505->aux, &it6505->link, + DP_SET_POWER_D0); it6505->auto_train_retry = AUTO_TRAIN_RETRY; if (it6505->dpcd[0] == 0) { @@ -2960,8 +2964,11 @@ static void it6505_bridge_atomic_disable(struct drm_bridge *bridge, DRM_DEV_DEBUG_DRIVER(dev, "start"); - if (it6505->powered) + if (it6505->powered) { it6505_video_disable(it6505); + it6505_drm_dp_link_set_power(&it6505->aux, &it6505->link, + DP_SET_POWER_D3); + } } static enum drm_connector_status -- 2.36.0.rc2.479.g8af0fa9b8e-goog