From patchwork Mon Jul 3 00:37:33 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Baryshkov X-Patchwork-Id: 699779 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5BF48EB64DA for ; Mon, 3 Jul 2023 00:37:53 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229497AbjGCAhw (ORCPT ); Sun, 2 Jul 2023 20:37:52 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35810 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229568AbjGCAhv (ORCPT ); Sun, 2 Jul 2023 20:37:51 -0400 Received: from mail-lj1-x229.google.com (mail-lj1-x229.google.com [IPv6:2a00:1450:4864:20::229]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3E81EE45 for ; Sun, 2 Jul 2023 17:37:49 -0700 (PDT) Received: by mail-lj1-x229.google.com with SMTP id 38308e7fff4ca-2b6a6f224a1so61769411fa.1 for ; Sun, 02 Jul 2023 17:37:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1688344667; x=1690936667; 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=Kqfxgg5hIETM5btavOYqKU+bI42Bbyk1/nWlXNa+6Yc=; b=gmr2t5NIMF+dzwqN4av7ctwJ1EB4MUSVI2TvZMf672fqR9I43xSW5MYnVOuN8DhUcH ITwzo1ezfIVLIfD6ZmbhjNFFYd0hZDF/elR1NLk2XpFK+raBaH/WE4r5BCqSUuEAB70s w/mPRO+dARxxylCvV8kyKQmyX0AUMrEKgcGGIwvN8QtQes/UkcbByRTqdd5qAXWciy0j oeRP9lgBC2wObsvgfAfH3S39qIaY60VAnPOyoDGAV1gS/hYljwrAVSkfjByK3N3EkaSo DINx1mS0uOmLa9vJMrjhC/5EBLz0IOHm3UswnSSv82NVgP84WZFgPc61akVWYpPPQo8r j+Vw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1688344667; x=1690936667; 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=Kqfxgg5hIETM5btavOYqKU+bI42Bbyk1/nWlXNa+6Yc=; b=NxxeUXDHCajB3laBvrtSuO2yl1WwMZYCUQjXqTY6IR8oppPuh/2TKq3UIsIqI1hL/m EgYnI85hoHK85sGSQahfzbxKclKToh5v+S9txPnt8RYPP+q+iZ/Y9+N2PlMg/bb31HpZ /tD7bxqnupEmKPKvyVKKqw+XHaYVKtY0+4jC2p/mDwQ5KzujqV4zdz8rdypsAbeOFJL1 u6EDXawvshtJKMA9qMaPN20qZ8KwOmZdklsVg0eDQWLrHgIW0Ax8Xb8Xl2W/m2Ti/WHX qT3wtvj9U5X5gkUhg6gBHWVhR+fvmaWFeL+ajrStk2ucrNXyeB4fuZkZ9FUR9VsN0BxN 2/3w== X-Gm-Message-State: ABy/qLaEXHL0Cq/Xm/h4sL10mMgGMrxFkOnRSG+Kjva9eNvUF38QxRAq dwC7ZiJpKfQZWSzRY6TJcoTrJg== X-Google-Smtp-Source: APBJJlHPCAIxVunklc5TAimhROphRrcoRJsQSB81RSW5XM3zkmardY+glKtdf13VZ49YuzTPCiwNEw== X-Received: by 2002:a2e:9159:0:b0:2b4:75f0:b9e9 with SMTP id q25-20020a2e9159000000b002b475f0b9e9mr6183104ljg.10.1688344667373; Sun, 02 Jul 2023 17:37:47 -0700 (PDT) Received: from lothlorien.lan (dzdqv0yyyyyyyyyyybm5y-3.rev.dnainternet.fi. [2001:14ba:a0db:1f00::ab2]) by smtp.gmail.com with ESMTPSA id s24-20020a2e98d8000000b002b6ebc61e85sm136704ljj.54.2023.07.02.17.37.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 02 Jul 2023 17:37:47 -0700 (PDT) From: Dmitry Baryshkov To: Rob Clark , Sean Paul , Abhinav Kumar , Marijn Suijten Cc: Stephen Boyd , David Airlie , Daniel Vetter , Bjorn Andersson , linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org Subject: [PATCH 01/13] drm/msm/dsi: switch to devm_drm_bridge_add() Date: Mon, 3 Jul 2023 03:37:33 +0300 Message-Id: <20230703003745.34239-2-dmitry.baryshkov@linaro.org> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230703003745.34239-1-dmitry.baryshkov@linaro.org> References: <20230703003745.34239-1-dmitry.baryshkov@linaro.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org Make MSM DSI driver use devm_drm_bridge_add() instead of plain drm_bridge_add(). As the driver doesn't require any additional cleanup, stop adding created bridge to the priv->bridges array. Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/dsi/dsi.c | 28 +++++-------------------- drivers/gpu/drm/msm/dsi/dsi.h | 3 +-- drivers/gpu/drm/msm/dsi/dsi_manager.c | 30 +++++++++------------------ 3 files changed, 16 insertions(+), 45 deletions(-) diff --git a/drivers/gpu/drm/msm/dsi/dsi.c b/drivers/gpu/drm/msm/dsi/dsi.c index baab79ab6e74..61c369494719 100644 --- a/drivers/gpu/drm/msm/dsi/dsi.c +++ b/drivers/gpu/drm/msm/dsi/dsi.c @@ -212,20 +212,14 @@ void __exit msm_dsi_unregister(void) int msm_dsi_modeset_init(struct msm_dsi *msm_dsi, struct drm_device *dev, struct drm_encoder *encoder) { - struct msm_drm_private *priv = dev->dev_private; int ret; - if (priv->num_bridges == ARRAY_SIZE(priv->bridges)) { - DRM_DEV_ERROR(dev->dev, "too many bridges\n"); - return -ENOSPC; - } - msm_dsi->dev = dev; ret = msm_dsi_host_modeset_init(msm_dsi->host, dev); if (ret) { DRM_DEV_ERROR(dev->dev, "failed to modeset init host: %d\n", ret); - goto fail; + return ret; } if (msm_dsi_is_bonded_dsi(msm_dsi) && @@ -239,32 +233,20 @@ int msm_dsi_modeset_init(struct msm_dsi *msm_dsi, struct drm_device *dev, msm_dsi->encoder = encoder; - msm_dsi->bridge = msm_dsi_manager_bridge_init(msm_dsi->id); - if (IS_ERR(msm_dsi->bridge)) { - ret = PTR_ERR(msm_dsi->bridge); + ret = msm_dsi_manager_bridge_init(msm_dsi); + if (ret) { DRM_DEV_ERROR(dev->dev, "failed to create dsi bridge: %d\n", ret); - msm_dsi->bridge = NULL; - goto fail; + return ret; } ret = msm_dsi_manager_ext_bridge_init(msm_dsi->id); if (ret) { DRM_DEV_ERROR(dev->dev, "failed to create dsi connector: %d\n", ret); - goto fail; + return ret; } - priv->bridges[priv->num_bridges++] = msm_dsi->bridge; - return 0; -fail: - /* bridge/connector are normally destroyed by drm: */ - if (msm_dsi->bridge) { - msm_dsi_manager_bridge_destroy(msm_dsi->bridge); - msm_dsi->bridge = NULL; - } - - return ret; } void msm_dsi_snapshot(struct msm_disp_state *disp_state, struct msm_dsi *msm_dsi) diff --git a/drivers/gpu/drm/msm/dsi/dsi.h b/drivers/gpu/drm/msm/dsi/dsi.h index bd3763a5d723..df2bd774909b 100644 --- a/drivers/gpu/drm/msm/dsi/dsi.h +++ b/drivers/gpu/drm/msm/dsi/dsi.h @@ -56,8 +56,7 @@ struct msm_dsi { }; /* dsi manager */ -struct drm_bridge *msm_dsi_manager_bridge_init(u8 id); -void msm_dsi_manager_bridge_destroy(struct drm_bridge *bridge); +int msm_dsi_manager_bridge_init(struct msm_dsi *msm_dsi); int msm_dsi_manager_ext_bridge_init(u8 id); int msm_dsi_manager_cmd_xfer(int id, const struct mipi_dsi_msg *msg); bool msm_dsi_manager_cmd_xfer_trigger(int id, u32 dma_base, u32 len); diff --git a/drivers/gpu/drm/msm/dsi/dsi_manager.c b/drivers/gpu/drm/msm/dsi/dsi_manager.c index 28b8012a21f2..17aa19bb6510 100644 --- a/drivers/gpu/drm/msm/dsi/dsi_manager.c +++ b/drivers/gpu/drm/msm/dsi/dsi_manager.c @@ -466,9 +466,8 @@ static const struct drm_bridge_funcs dsi_mgr_bridge_funcs = { }; /* initialize bridge */ -struct drm_bridge *msm_dsi_manager_bridge_init(u8 id) +int msm_dsi_manager_bridge_init(struct msm_dsi *msm_dsi) { - struct msm_dsi *msm_dsi = dsi_mgr_get_dsi(id); struct drm_bridge *bridge = NULL; struct dsi_bridge *dsi_bridge; struct drm_encoder *encoder; @@ -476,31 +475,27 @@ struct drm_bridge *msm_dsi_manager_bridge_init(u8 id) dsi_bridge = devm_kzalloc(msm_dsi->dev->dev, sizeof(*dsi_bridge), GFP_KERNEL); - if (!dsi_bridge) { - ret = -ENOMEM; - goto fail; - } + if (!dsi_bridge) + return -ENOMEM; - dsi_bridge->id = id; + dsi_bridge->id = msm_dsi->id; encoder = msm_dsi->encoder; bridge = &dsi_bridge->base; bridge->funcs = &dsi_mgr_bridge_funcs; - drm_bridge_add(bridge); + ret = devm_drm_bridge_add(&msm_dsi->pdev->dev, bridge); + if (ret) + return ret; ret = drm_bridge_attach(encoder, bridge, NULL, 0); if (ret) - goto fail; + return ret; - return bridge; + msm_dsi->bridge = bridge; -fail: - if (bridge) - msm_dsi_manager_bridge_destroy(bridge); - - return ERR_PTR(ret); + return 0; } int msm_dsi_manager_ext_bridge_init(u8 id) @@ -557,11 +552,6 @@ int msm_dsi_manager_ext_bridge_init(u8 id) return 0; } -void msm_dsi_manager_bridge_destroy(struct drm_bridge *bridge) -{ - drm_bridge_remove(bridge); -} - int msm_dsi_manager_cmd_xfer(int id, const struct mipi_dsi_msg *msg) { struct msm_dsi *msm_dsi = dsi_mgr_get_dsi(id); From patchwork Mon Jul 3 00:37:34 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Baryshkov X-Patchwork-Id: 698782 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id ABF46C0015E for ; Mon, 3 Jul 2023 00:37:53 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229568AbjGCAhx (ORCPT ); Sun, 2 Jul 2023 20:37:53 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35816 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229709AbjGCAhv (ORCPT ); Sun, 2 Jul 2023 20:37:51 -0400 Received: from mail-lj1-x229.google.com (mail-lj1-x229.google.com [IPv6:2a00:1450:4864:20::229]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E26C1E46 for ; Sun, 2 Jul 2023 17:37:49 -0700 (PDT) Received: by mail-lj1-x229.google.com with SMTP id 38308e7fff4ca-2b6a16254a4so56771511fa.0 for ; Sun, 02 Jul 2023 17:37:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1688344668; x=1690936668; 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=8Dse1m0G6m1qASsdCM4uiEj+LGG7/GtCG3G9yRY+V70=; b=rgN5LtpMcynWbivkJfmuRMBWRQxhyaiEraTUiV9rBrZH/mYHP35gwv1z0WkEP54YQ0 BSBzIn74O8T6cyN1DgSoZCgkxOVQSNmXTNe0xm3BvJTF6uR7gfObF3jT/OvDjlPPqZE8 1hNWodzmZD6xWldYA2KewlDug33Jqd9wXweoCils8K6/YGa1k8NlV/Z1uRMkggrIk0bb yXvAE0QoFZckmynQ8r57Y5LcfpgHUdMsFBgGip6Jtbpz7j8v1EIhW7uS80O+OKCEF2E4 EAvxIKhKPHzW1/SjSzDFjnc8LTxpdx+aAm1DGWrZcTI2Ue119VpfkaxymOnJZiqKh3qq vZUA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1688344668; x=1690936668; 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=8Dse1m0G6m1qASsdCM4uiEj+LGG7/GtCG3G9yRY+V70=; b=jqyRv6CDwsVWCDm+kVNwLUzU8gyeBdAirvIsG7zwokhJORBhUacsR97Lg3X5fE7n0T V9U3QTzK3hqASpKLRFDvZatBXKF1BqhBXd/87ECqh4swFF/iBvXugWmHse5VGg86aWYo zF2of/M6IP8M86U5UX8mbS+u3L3C6u8EkwcdKD/RDL6hhY9hGhSGtKfLEDty273YZwOT 5PEapKmLY3UOke8GzrRl6F/6sw7r6rGzMnDsyGp58F6Df8EtOv4/RRDFQIhcHTSIY5vM RVUCFvW3ngoDPtwlbLF9CuJNVAG8sf11qc1asnWe0ReoiPmKgttaE2o6lQxjGQRPO/yx gCIw== X-Gm-Message-State: ABy/qLbmUGBqcUfRzOAQOuxFtQ1BZL7le7R3s1Xkdztjq+JpoV1LXi7O ET+5XdGYGgKOBbGjA+MbmOL9Mw== X-Google-Smtp-Source: APBJJlHi3v8VjEObPhV7IPLFGJAl5ZS3wLaqgtqQ2wH2F6pdj0og7uKtkuYkMO8m6b1dyG1zLx4uyw== X-Received: by 2002:a2e:83cd:0:b0:2b4:7f66:8c92 with SMTP id s13-20020a2e83cd000000b002b47f668c92mr5920737ljh.31.1688344668207; Sun, 02 Jul 2023 17:37:48 -0700 (PDT) Received: from lothlorien.lan (dzdqv0yyyyyyyyyyybm5y-3.rev.dnainternet.fi. [2001:14ba:a0db:1f00::ab2]) by smtp.gmail.com with ESMTPSA id s24-20020a2e98d8000000b002b6ebc61e85sm136704ljj.54.2023.07.02.17.37.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 02 Jul 2023 17:37:47 -0700 (PDT) From: Dmitry Baryshkov To: Rob Clark , Sean Paul , Abhinav Kumar , Marijn Suijten Cc: Stephen Boyd , David Airlie , Daniel Vetter , Bjorn Andersson , linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org Subject: [PATCH 02/13] drm/msm/hdmi: switch to devm_drm_bridge_add() Date: Mon, 3 Jul 2023 03:37:34 +0300 Message-Id: <20230703003745.34239-3-dmitry.baryshkov@linaro.org> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230703003745.34239-1-dmitry.baryshkov@linaro.org> References: <20230703003745.34239-1-dmitry.baryshkov@linaro.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org Make MSM HDMI driver use devm_drm_bridge_add() instead of plain drm_bridge_add(). As the driver doesn't require any additional cleanup, stop adding created bridge to the priv->bridges array. Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/hdmi/hdmi.c | 22 +++++-------------- drivers/gpu/drm/msm/hdmi/hdmi.h | 5 ++--- drivers/gpu/drm/msm/hdmi/hdmi_bridge.c | 30 ++++++++------------------ drivers/gpu/drm/msm/hdmi/hdmi_hpd.c | 3 +-- 4 files changed, 17 insertions(+), 43 deletions(-) diff --git a/drivers/gpu/drm/msm/hdmi/hdmi.c b/drivers/gpu/drm/msm/hdmi/hdmi.c index 3132105a2a43..1967d88d93a1 100644 --- a/drivers/gpu/drm/msm/hdmi/hdmi.c +++ b/drivers/gpu/drm/msm/hdmi/hdmi.c @@ -158,24 +158,16 @@ static int msm_hdmi_init(struct hdmi *hdmi) int msm_hdmi_modeset_init(struct hdmi *hdmi, struct drm_device *dev, struct drm_encoder *encoder) { - struct msm_drm_private *priv = dev->dev_private; int ret; - if (priv->num_bridges == ARRAY_SIZE(priv->bridges)) { - DRM_DEV_ERROR(dev->dev, "too many bridges\n"); - return -ENOSPC; - } - hdmi->dev = dev; hdmi->encoder = encoder; hdmi_audio_infoframe_init(&hdmi->audio.infoframe); - hdmi->bridge = msm_hdmi_bridge_init(hdmi); - if (IS_ERR(hdmi->bridge)) { - ret = PTR_ERR(hdmi->bridge); + ret = msm_hdmi_bridge_init(hdmi); + if (ret) { DRM_DEV_ERROR(dev->dev, "failed to create HDMI bridge: %d\n", ret); - hdmi->bridge = NULL; goto fail; } @@ -213,16 +205,9 @@ int msm_hdmi_modeset_init(struct hdmi *hdmi, goto fail; } - priv->bridges[priv->num_bridges++] = hdmi->bridge; - return 0; fail: - /* bridge is normally destroyed by drm: */ - if (hdmi->bridge) { - msm_hdmi_bridge_destroy(hdmi->bridge); - hdmi->bridge = NULL; - } if (hdmi->connector) { hdmi->connector->funcs->destroy(hdmi->connector); hdmi->connector = NULL; @@ -393,6 +378,9 @@ static void msm_hdmi_unbind(struct device *dev, struct device *master, if (priv->hdmi->audio_pdev) platform_device_unregister(priv->hdmi->audio_pdev); + if (priv->hdmi->bridge) + msm_hdmi_hpd_disable(priv->hdmi); + msm_hdmi_destroy(priv->hdmi); priv->hdmi = NULL; } diff --git a/drivers/gpu/drm/msm/hdmi/hdmi.h b/drivers/gpu/drm/msm/hdmi/hdmi.h index e8dbee50637f..ec5786440391 100644 --- a/drivers/gpu/drm/msm/hdmi/hdmi.h +++ b/drivers/gpu/drm/msm/hdmi/hdmi.h @@ -224,14 +224,13 @@ void msm_hdmi_audio_set_sample_rate(struct hdmi *hdmi, int rate); * hdmi bridge: */ -struct drm_bridge *msm_hdmi_bridge_init(struct hdmi *hdmi); -void msm_hdmi_bridge_destroy(struct drm_bridge *bridge); +int msm_hdmi_bridge_init(struct hdmi *hdmi); void msm_hdmi_hpd_irq(struct drm_bridge *bridge); enum drm_connector_status msm_hdmi_bridge_detect( struct drm_bridge *bridge); int msm_hdmi_hpd_enable(struct drm_bridge *bridge); -void msm_hdmi_hpd_disable(struct hdmi_bridge *hdmi_bridge); +void msm_hdmi_hpd_disable(struct hdmi *hdmi); /* * i2c adapter for ddc: diff --git a/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c b/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c index 9b1391d27ed3..0b7a6a56677e 100644 --- a/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c +++ b/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c @@ -11,14 +11,6 @@ #include "msm_kms.h" #include "hdmi.h" -void msm_hdmi_bridge_destroy(struct drm_bridge *bridge) -{ - struct hdmi_bridge *hdmi_bridge = to_hdmi_bridge(bridge); - - msm_hdmi_hpd_disable(hdmi_bridge); - drm_bridge_remove(bridge); -} - static void msm_hdmi_power_on(struct drm_bridge *bridge) { struct drm_device *dev = bridge->dev; @@ -317,7 +309,7 @@ msm_hdmi_hotplug_work(struct work_struct *work) } /* initialize bridge */ -struct drm_bridge *msm_hdmi_bridge_init(struct hdmi *hdmi) +int msm_hdmi_bridge_init(struct hdmi *hdmi) { struct drm_bridge *bridge = NULL; struct hdmi_bridge *hdmi_bridge; @@ -325,10 +317,8 @@ struct drm_bridge *msm_hdmi_bridge_init(struct hdmi *hdmi) hdmi_bridge = devm_kzalloc(hdmi->dev->dev, sizeof(*hdmi_bridge), GFP_KERNEL); - if (!hdmi_bridge) { - ret = -ENOMEM; - goto fail; - } + if (!hdmi_bridge) + return -ENOMEM; hdmi_bridge->hdmi = hdmi; INIT_WORK(&hdmi_bridge->hpd_work, msm_hdmi_hotplug_work); @@ -341,17 +331,15 @@ struct drm_bridge *msm_hdmi_bridge_init(struct hdmi *hdmi) DRM_BRIDGE_OP_DETECT | DRM_BRIDGE_OP_EDID; - drm_bridge_add(bridge); + ret = devm_drm_bridge_add(&hdmi->pdev->dev, bridge); + if (ret) + return ret; ret = drm_bridge_attach(hdmi->encoder, bridge, NULL, DRM_BRIDGE_ATTACH_NO_CONNECTOR); if (ret) - goto fail; + return ret; - return bridge; + hdmi->bridge = bridge; -fail: - if (bridge) - msm_hdmi_bridge_destroy(bridge); - - return ERR_PTR(ret); + return 0; } diff --git a/drivers/gpu/drm/msm/hdmi/hdmi_hpd.c b/drivers/gpu/drm/msm/hdmi/hdmi_hpd.c index bfa827b47989..9ce0ffa35417 100644 --- a/drivers/gpu/drm/msm/hdmi/hdmi_hpd.c +++ b/drivers/gpu/drm/msm/hdmi/hdmi_hpd.c @@ -147,9 +147,8 @@ int msm_hdmi_hpd_enable(struct drm_bridge *bridge) return ret; } -void msm_hdmi_hpd_disable(struct hdmi_bridge *hdmi_bridge) +void msm_hdmi_hpd_disable(struct hdmi *hdmi) { - struct hdmi *hdmi = hdmi_bridge->hdmi; const struct hdmi_platform_config *config = hdmi->config; struct device *dev = &hdmi->pdev->dev; int ret; From patchwork Mon Jul 3 00:37:35 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Baryshkov X-Patchwork-Id: 699777 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 38ED8C001DB for ; Mon, 3 Jul 2023 00:37:54 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229709AbjGCAhx (ORCPT ); Sun, 2 Jul 2023 20:37:53 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35822 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229797AbjGCAhw (ORCPT ); Sun, 2 Jul 2023 20:37:52 -0400 Received: from mail-lj1-x229.google.com (mail-lj1-x229.google.com [IPv6:2a00:1450:4864:20::229]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D2859E47 for ; Sun, 2 Jul 2023 17:37:50 -0700 (PDT) Received: by mail-lj1-x229.google.com with SMTP id 38308e7fff4ca-2b6a1245542so63378581fa.1 for ; Sun, 02 Jul 2023 17:37:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1688344669; x=1690936669; 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=UrmNUNbSa3tDlWvkXNUA3OnvsgDhFRqEs/bq/9Jm/+4=; b=WBxS5eJ3ZvSEaauUqyNx8qp2HWjRTd3p8EVWjk47ieV9CwHpbes/akHX5/4Qr4Srpj 8eoqwnduFEhfq/SgayMjuuoC/zJe69UZojA6z0IWpGZI5ZtZnKglOsn74tPUU/J1HjR0 o9dTsPn8ckGNzXw8EE0Vxevc5y5o9EaLmgSb5qC8XhMWDesK1fiFA3RQakivQVvoD4Yy j4MMgHumhoKS8dHqNbKtMZYxgdmFcK541p9Qwu4mdUN+zIgihyITER61QrsKIv6w3jRm deXEydCzhc6kDyphzrVbmfxDKa6M8sC2zLnOSklbYrGRphShtrPyn/jpr9HY89ILyzQ3 Gg3A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1688344669; x=1690936669; 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=UrmNUNbSa3tDlWvkXNUA3OnvsgDhFRqEs/bq/9Jm/+4=; b=LeJt31lpXNE0ihb9eJrCM44F44XXPxncYypsMJ14aZaNZeqJ3pJWU4vEnxvvuHkom7 HgGcXAEtdl++XK7fV6z1+NBFl6oadbJOd8pSw7E6ezCHYIaBCFAPiAwsDX+HEk8uZQpu A4GhwxN2AnPyXmesPQratq5A0b9/hd8i0UM/TztKgpraQr/fWQDbr1f247k8zhdvz/3z MAwm426Bmhxg7u78zsNvnSK5HVTuqaLwuAcG+egcG4aKXKvXOr0HBsqfva+IxG2LgHB+ JUkrtJJPpXNvXe5L25gn9JZwpGlkEmUw9zAps/LVWzlkjWZMrvX8cWHr8sYLhFUp4SWa ZYSA== X-Gm-Message-State: ABy/qLa/nu6+Jt1xY28ois5LhxOh1/sxCCW80DHTsWIaN7IeMB5mo3IM jAkGe9Kf4nX4Ctt3xdqeWxz5fM6BxsA3USEqnUM= X-Google-Smtp-Source: APBJJlFYrkYpqeVgh/Gk84cRXdVKifXhjx3onZhdOFDZwlYuOA7HKrtL4bBILqXT9595tHr9NvCBKQ== X-Received: by 2002:a2e:91ce:0:b0:2ac:82c1:5a3d with SMTP id u14-20020a2e91ce000000b002ac82c15a3dmr6708918ljg.23.1688344669156; Sun, 02 Jul 2023 17:37:49 -0700 (PDT) Received: from lothlorien.lan (dzdqv0yyyyyyyyyyybm5y-3.rev.dnainternet.fi. [2001:14ba:a0db:1f00::ab2]) by smtp.gmail.com with ESMTPSA id s24-20020a2e98d8000000b002b6ebc61e85sm136704ljj.54.2023.07.02.17.37.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 02 Jul 2023 17:37:48 -0700 (PDT) From: Dmitry Baryshkov To: Rob Clark , Sean Paul , Abhinav Kumar , Marijn Suijten Cc: Stephen Boyd , David Airlie , Daniel Vetter , Bjorn Andersson , linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org Subject: [PATCH 03/13] drm/msm/dp: move pdev from struct dp_display_private to struct msm_dp Date: Mon, 3 Jul 2023 03:37:35 +0300 Message-Id: <20230703003745.34239-4-dmitry.baryshkov@linaro.org> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230703003745.34239-1-dmitry.baryshkov@linaro.org> References: <20230703003745.34239-1-dmitry.baryshkov@linaro.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org The dp_drm needs accessing the DP's platform device. Move pdev to the public structure. Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/dp/dp_display.c | 25 ++++++++++++------------- drivers/gpu/drm/msm/dp/dp_display.h | 1 + 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/dp_display.c index 76f13954015b..1267e3dbcb1a 100644 --- a/drivers/gpu/drm/msm/dp/dp_display.c +++ b/drivers/gpu/drm/msm/dp/dp_display.c @@ -88,7 +88,6 @@ struct dp_display_private { bool audio_supported; struct drm_device *drm_dev; - struct platform_device *pdev; struct dentry *root; struct dp_parser *parser; @@ -603,7 +602,7 @@ static int dp_hpd_plug_handle(struct dp_display_private *dp, u32 data) return 0; } - ret = dp_display_usbpd_configure_cb(&dp->pdev->dev); + ret = dp_display_usbpd_configure_cb(&dp->dp_display.pdev->dev); if (ret) { /* link train failed */ dp->hpd_state = ST_DISCONNECTED; } else { @@ -651,7 +650,7 @@ static int dp_hpd_unplug_handle(struct dp_display_private *dp, u32 data) if (dp->link->sink_count == 0) { dp_display_host_phy_exit(dp); } - dp_display_notify_disconnect(&dp->pdev->dev); + dp_display_notify_disconnect(&dp->dp_display.pdev->dev); mutex_unlock(&dp->event_mutex); return 0; } else if (state == ST_DISCONNECT_PENDING) { @@ -661,7 +660,7 @@ static int dp_hpd_unplug_handle(struct dp_display_private *dp, u32 data) dp_ctrl_off_link(dp->ctrl); dp_display_host_phy_exit(dp); dp->hpd_state = ST_DISCONNECTED; - dp_display_notify_disconnect(&dp->pdev->dev); + dp_display_notify_disconnect(&dp->dp_display.pdev->dev); mutex_unlock(&dp->event_mutex); return 0; } @@ -670,7 +669,7 @@ static int dp_hpd_unplug_handle(struct dp_display_private *dp, u32 data) * We don't need separate work for disconnect as * connect/attention interrupts are disabled */ - dp_display_notify_disconnect(&dp->pdev->dev); + dp_display_notify_disconnect(&dp->dp_display.pdev->dev); if (state == ST_DISPLAY_OFF) { dp->hpd_state = ST_DISCONNECTED; @@ -712,7 +711,7 @@ static int dp_irq_hpd_handle(struct dp_display_private *dp, u32 data) return 0; } - dp_display_usbpd_attention_cb(&dp->pdev->dev); + dp_display_usbpd_attention_cb(&dp->dp_display.pdev->dev); drm_dbg_dp(dp->drm_dev, "After, type=%d hpd_state=%d\n", dp->dp_display.connector_type, state); @@ -733,12 +732,12 @@ static void dp_display_deinit_sub_modules(struct dp_display_private *dp) static int dp_init_sub_modules(struct dp_display_private *dp) { int rc = 0; - struct device *dev = &dp->pdev->dev; + struct device *dev = &dp->dp_display.pdev->dev; struct dp_panel_in panel_in = { .dev = dev, }; - dp->parser = dp_parser_get(dp->pdev); + dp->parser = dp_parser_get(dp->dp_display.pdev); if (IS_ERR(dp->parser)) { rc = PTR_ERR(dp->parser); DRM_ERROR("failed to initialize parser, rc = %d\n", rc); @@ -799,7 +798,7 @@ static int dp_init_sub_modules(struct dp_display_private *dp) goto error_ctrl; } - dp->audio = dp_audio_get(dp->pdev, dp->panel, dp->catalog); + dp->audio = dp_audio_get(dp->dp_display.pdev, dp->panel, dp->catalog); if (IS_ERR(dp->audio)) { rc = PTR_ERR(dp->audio); pr_err("failed to initialize audio, rc = %d\n", rc); @@ -1205,7 +1204,7 @@ int dp_display_request_irq(struct msm_dp *dp_display) dp = container_of(dp_display, struct dp_display_private, dp_display); - dp->irq = irq_of_parse_and_map(dp->pdev->dev.of_node, 0); + dp->irq = irq_of_parse_and_map(dp->dp_display.pdev->dev.of_node, 0); if (!dp->irq) { DRM_ERROR("failed to get irq\n"); return -EINVAL; @@ -1261,7 +1260,7 @@ static int dp_display_probe(struct platform_device *pdev) if (!desc) return -EINVAL; - dp->pdev = pdev; + dp->dp_display.pdev = pdev; dp->name = "drm_dp"; dp->id = desc->id; dp->dp_display.connector_type = desc->connector_type; @@ -1469,7 +1468,7 @@ void msm_dp_debugfs_init(struct msm_dp *dp_display, struct drm_minor *minor) int rc; dp = container_of(dp_display, struct dp_display_private, dp_display); - dev = &dp->pdev->dev; + dev = &dp->dp_display.pdev->dev; dp->debug = dp_debug_get(dev, dp->panel, dp->link, dp->dp_display.connector, @@ -1489,7 +1488,7 @@ static int dp_display_get_next_bridge(struct msm_dp *dp) struct device *dev; dp_priv = container_of(dp, struct dp_display_private, dp_display); - dev = &dp_priv->pdev->dev; + dev = &dp_priv->dp_display.pdev->dev; aux_bus = of_get_child_by_name(dev->of_node, "aux-bus"); if (aux_bus && dp->is_edp) { diff --git a/drivers/gpu/drm/msm/dp/dp_display.h b/drivers/gpu/drm/msm/dp/dp_display.h index 1e9415ab15d8..f66cdbc35785 100644 --- a/drivers/gpu/drm/msm/dp/dp_display.h +++ b/drivers/gpu/drm/msm/dp/dp_display.h @@ -12,6 +12,7 @@ struct msm_dp { struct drm_device *drm_dev; + struct platform_device *pdev; struct device *codec_dev; struct drm_bridge *bridge; struct drm_connector *connector; From patchwork Mon Jul 3 00:37:36 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Baryshkov X-Patchwork-Id: 698781 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 86D44C001DD for ; Mon, 3 Jul 2023 00:37:55 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229874AbjGCAhy (ORCPT ); Sun, 2 Jul 2023 20:37:54 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35832 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229608AbjGCAhy (ORCPT ); Sun, 2 Jul 2023 20:37:54 -0400 Received: from mail-lj1-x231.google.com (mail-lj1-x231.google.com [IPv6:2a00:1450:4864:20::231]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A81161BF for ; Sun, 2 Jul 2023 17:37:51 -0700 (PDT) Received: by mail-lj1-x231.google.com with SMTP id 38308e7fff4ca-2b5c231f842so56500341fa.2 for ; Sun, 02 Jul 2023 17:37:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1688344670; x=1690936670; 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=93jFhS1FMTLrnvHTPQNzVi4tMfuOvCP3+OwFQYB80dc=; b=oveRFf+qZKlMD8iIj2W2xDE//gM0strzsIrwXIcuiKSjbOhCrPjugoVnM4bgVODI6y AOWyPo4BjaWHMA+RXYs6D5EI7v+HNVbA2ZaLt8IAye1RL658prp6f+bnzKV+3N6tVJT7 rlwIO5MrNwkG4REHrZB9jtxIm2OoCne4cKHqCyb4Jftv7c4drJq3tquSE8ZmgB3LNlOv 8skseV8B3D1/0G1Y0UveONv90ABFm288BZ/migk06CejXcPi0hzz48l5O25GuZxJoBk5 CmDzWfFM5oBbRGZDOzWa1X2VZmqPP8UR/u/pedidojVbLrKU7YnW6WmXhV5qJa0BkJDs kRDw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1688344670; x=1690936670; 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=93jFhS1FMTLrnvHTPQNzVi4tMfuOvCP3+OwFQYB80dc=; b=QiftKCJ6BI1ZnkXQnLM5g0DwVqxAjB2MbA5e99VcDsLo6ejBFXmEimWMArpl5A9kpy OGH9Mr1Py/mgnFhJ5p7WzXwTfsAlp+3VhMlqPvBUKNp+9XITa0Wk5Y8XE+dZ5jJIOjUv dtSFTv9eT87uthdRJ6YPqv6rVTTxtY4ELBPR++W5+6fsvLe3SeqEYbsW6XMmm7wS53D0 3VjctNGDQinI4d9QxoFovh6A1A8p9DWWTcgQiooxBlMof5zrcM1afKtbUod8XobhuLFj bR3NxJ5G+gjmI5Hwh+EdN+8J5/ljc6osXAq8Sy5lCTaWBbypdD+i0heYUBm2YfyIyIHd Obuw== X-Gm-Message-State: ABy/qLZk927P7vW0P2nTKeU0g283pW84LhH/jGo9PSZlbzwapAWypmHJ y+GURCx5MiONFP6urRM98wHZug== X-Google-Smtp-Source: APBJJlHVGpUB4uRGxt5TWIBFwRBLsHdWhRj18cm7VkDHfJNM+HZXqTpUJMXOywHMSZhTRTttDpOQ2Q== X-Received: by 2002:a2e:87c4:0:b0:2b6:de41:b72f with SMTP id v4-20020a2e87c4000000b002b6de41b72fmr2653817ljj.4.1688344670021; Sun, 02 Jul 2023 17:37:50 -0700 (PDT) Received: from lothlorien.lan (dzdqv0yyyyyyyyyyybm5y-3.rev.dnainternet.fi. [2001:14ba:a0db:1f00::ab2]) by smtp.gmail.com with ESMTPSA id s24-20020a2e98d8000000b002b6ebc61e85sm136704ljj.54.2023.07.02.17.37.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 02 Jul 2023 17:37:49 -0700 (PDT) From: Dmitry Baryshkov To: Rob Clark , Sean Paul , Abhinav Kumar , Marijn Suijten Cc: Stephen Boyd , David Airlie , Daniel Vetter , Bjorn Andersson , linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org Subject: [PATCH 04/13] drm/msm/dp: switch to devm_drm_bridge_add() Date: Mon, 3 Jul 2023 03:37:36 +0300 Message-Id: <20230703003745.34239-5-dmitry.baryshkov@linaro.org> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230703003745.34239-1-dmitry.baryshkov@linaro.org> References: <20230703003745.34239-1-dmitry.baryshkov@linaro.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org Make MSM DP driver use devm_drm_bridge_add() instead of plain drm_bridge_add(). As the driver doesn't require any additional cleanup, stop adding created bridge to the priv->bridges array. Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/dp/dp_display.c | 9 ++------- drivers/gpu/drm/msm/dp/dp_drm.c | 21 +++++++++++++-------- drivers/gpu/drm/msm/dp/dp_drm.h | 2 +- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/dp_display.c index 1267e3dbcb1a..7fa245629251 100644 --- a/drivers/gpu/drm/msm/dp/dp_display.c +++ b/drivers/gpu/drm/msm/dp/dp_display.c @@ -1540,7 +1540,6 @@ static int dp_display_get_next_bridge(struct msm_dp *dp) int msm_dp_modeset_init(struct msm_dp *dp_display, struct drm_device *dev, struct drm_encoder *encoder) { - struct msm_drm_private *priv = dev->dev_private; struct dp_display_private *dp_priv; int ret; @@ -1558,17 +1557,13 @@ int msm_dp_modeset_init(struct msm_dp *dp_display, struct drm_device *dev, if (ret) return ret; - dp_display->bridge = dp_bridge_init(dp_display, dev, encoder); - if (IS_ERR(dp_display->bridge)) { - ret = PTR_ERR(dp_display->bridge); + ret = dp_bridge_init(dp_display, dev, encoder); + if (ret) { DRM_DEV_ERROR(dev->dev, "failed to create dp bridge: %d\n", ret); - dp_display->bridge = NULL; return ret; } - priv->bridges[priv->num_bridges++] = dp_display->bridge; - dp_display->connector = dp_drm_connector_init(dp_display, encoder); if (IS_ERR(dp_display->connector)) { ret = PTR_ERR(dp_display->connector); diff --git a/drivers/gpu/drm/msm/dp/dp_drm.c b/drivers/gpu/drm/msm/dp/dp_drm.c index 785d76639497..284ff7df058a 100644 --- a/drivers/gpu/drm/msm/dp/dp_drm.c +++ b/drivers/gpu/drm/msm/dp/dp_drm.c @@ -272,7 +272,7 @@ static const struct drm_bridge_funcs edp_bridge_ops = { .atomic_check = edp_bridge_atomic_check, }; -struct drm_bridge *dp_bridge_init(struct msm_dp *dp_display, struct drm_device *dev, +int dp_bridge_init(struct msm_dp *dp_display, struct drm_device *dev, struct drm_encoder *encoder) { int rc; @@ -281,7 +281,7 @@ struct drm_bridge *dp_bridge_init(struct msm_dp *dp_display, struct drm_device * dp_bridge = devm_kzalloc(dev->dev, sizeof(*dp_bridge), GFP_KERNEL); if (!dp_bridge) - return ERR_PTR(-ENOMEM); + return -ENOMEM; dp_bridge->dp_display = dp_display; @@ -307,14 +307,18 @@ struct drm_bridge *dp_bridge_init(struct msm_dp *dp_display, struct drm_device * DRM_BRIDGE_OP_MODES; } - drm_bridge_add(bridge); + rc = devm_drm_bridge_add(&dp_display->pdev->dev, bridge); + if (rc) { + DRM_ERROR("failed to add bridge, rc=%d\n", rc); + + return rc; + } rc = drm_bridge_attach(encoder, bridge, NULL, DRM_BRIDGE_ATTACH_NO_CONNECTOR); if (rc) { DRM_ERROR("failed to attach bridge, rc=%d\n", rc); - drm_bridge_remove(bridge); - return ERR_PTR(rc); + return rc; } if (dp_display->next_bridge) { @@ -323,12 +327,13 @@ struct drm_bridge *dp_bridge_init(struct msm_dp *dp_display, struct drm_device * DRM_BRIDGE_ATTACH_NO_CONNECTOR); if (rc < 0) { DRM_ERROR("failed to attach panel bridge: %d\n", rc); - drm_bridge_remove(bridge); - return ERR_PTR(rc); + return rc; } } - return bridge; + dp_display->bridge = bridge; + + return 0; } /* connector initialization */ diff --git a/drivers/gpu/drm/msm/dp/dp_drm.h b/drivers/gpu/drm/msm/dp/dp_drm.h index afe79b85e183..b3d684db2383 100644 --- a/drivers/gpu/drm/msm/dp/dp_drm.h +++ b/drivers/gpu/drm/msm/dp/dp_drm.h @@ -20,7 +20,7 @@ struct msm_dp_bridge { #define to_dp_bridge(x) container_of((x), struct msm_dp_bridge, bridge) struct drm_connector *dp_drm_connector_init(struct msm_dp *dp_display, struct drm_encoder *encoder); -struct drm_bridge *dp_bridge_init(struct msm_dp *dp_display, struct drm_device *dev, +int dp_bridge_init(struct msm_dp *dp_display, struct drm_device *dev, struct drm_encoder *encoder); void dp_bridge_atomic_enable(struct drm_bridge *drm_bridge, From patchwork Mon Jul 3 00:37:37 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Baryshkov X-Patchwork-Id: 699776 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8FCB4EB64D9 for ; Mon, 3 Jul 2023 00:37:56 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229797AbjGCAhz (ORCPT ); Sun, 2 Jul 2023 20:37:55 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35840 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229908AbjGCAhy (ORCPT ); Sun, 2 Jul 2023 20:37:54 -0400 Received: from mail-lj1-x22b.google.com (mail-lj1-x22b.google.com [IPv6:2a00:1450:4864:20::22b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 57067E45 for ; Sun, 2 Jul 2023 17:37:52 -0700 (PDT) Received: by mail-lj1-x22b.google.com with SMTP id 38308e7fff4ca-2b6a1245542so63378891fa.1 for ; Sun, 02 Jul 2023 17:37:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1688344670; x=1690936670; 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=kJT3A9uNfEQ8+tvyxbze44I0KEmknlkiQGr1UM0OaH4=; b=d7ThNK+o9atNh//6q81rE7YgLwYJx2IHYIHa9ebgYCVF30cx9+mwklMAUJQ/oKB7d6 dgf9EQEZdnhldn1jKZ9o2eHwSGs0a8VdK4v3LNiIjPhsc8iejAtHB29ObNh9lgQ8Zoo+ W4Lx1WhQS/C0cDaCjZZ2KhQSmHv5VtjqhX2kfN6FO6oVkileZYVFWLgcY6dxwg4oWRgp oesqJxUGryi4eptwhHGLNVm2yUJ97tVhBkNS8kSgdnL2qkmb/Kots7UEpSc1Uj+MRxik FG2dlW7IiGAjq8JJjYNf12tHkt6ASLsqn0AQnl03j3lirSLjBdBpXqAn5CAQfR7T/Nx5 aW1Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1688344670; x=1690936670; 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=kJT3A9uNfEQ8+tvyxbze44I0KEmknlkiQGr1UM0OaH4=; b=Vj+wZ442FpsVHQ/n8k5x6dvbKO7z2NZiPSMMiGWMRtAw/MNSw3Ch//lwSozXfQRhh8 7QmmZNrxH8OCuC7gbDQtwX+dTR8Gn4SwHLBqevOjzsw8t9xRDVi/gR/POc6fiNGxvXcR o9lULPmvYkM87bMA65JqGarlXmX4gBAPRcsSnvpBRXrwU+gvf14QQ1LkcjWwJZ1QJrS6 J+qyI2P2425NHco2UGjP4V4+Xb/sHzvx9Oz9I+zziKliHnVb4Mr3HK/Kbbav3nU5aRjN YOLs4iUTjLhHswF2RM9vZE5veoa5psU6dKC6rWVMHB8kL7z9IdCk2YT7eNQ78INW3vtX w87g== X-Gm-Message-State: ABy/qLZsql+BHC5EPu0zQsqHdzmN7dv+UKbhwekBP9+0klPeOZQ7XZsA /vl4gONSglmGo7wCOkOdzWn7gA== X-Google-Smtp-Source: APBJJlEMQuY75NfZIMuHrnBLD/fH8zkaxyPk5kvE/0tWTWrL6JojSH2RFylPfgTHHTuCSKAQEYKOtg== X-Received: by 2002:a2e:8216:0:b0:2b6:a475:2989 with SMTP id w22-20020a2e8216000000b002b6a4752989mr6001546ljg.30.1688344670741; Sun, 02 Jul 2023 17:37:50 -0700 (PDT) Received: from lothlorien.lan (dzdqv0yyyyyyyyyyybm5y-3.rev.dnainternet.fi. [2001:14ba:a0db:1f00::ab2]) by smtp.gmail.com with ESMTPSA id s24-20020a2e98d8000000b002b6ebc61e85sm136704ljj.54.2023.07.02.17.37.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 02 Jul 2023 17:37:50 -0700 (PDT) From: Dmitry Baryshkov To: Rob Clark , Sean Paul , Abhinav Kumar , Marijn Suijten Cc: Stephen Boyd , David Airlie , Daniel Vetter , Bjorn Andersson , linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org Subject: [PATCH 05/13] drm/msm: remove msm_drm_private::bridges field Date: Mon, 3 Jul 2023 03:37:37 +0300 Message-Id: <20230703003745.34239-6-dmitry.baryshkov@linaro.org> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230703003745.34239-1-dmitry.baryshkov@linaro.org> References: <20230703003745.34239-1-dmitry.baryshkov@linaro.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org As all output devices have switched to devm_drm_bridge_add(), we can drop the bridges array from struct msm_drm_private. Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/msm_drv.c | 4 ---- drivers/gpu/drm/msm/msm_drv.h | 3 --- 2 files changed, 7 deletions(-) diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c index f06a06ab26fa..9fe789a546f5 100644 --- a/drivers/gpu/drm/msm/msm_drv.c +++ b/drivers/gpu/drm/msm/msm_drv.c @@ -240,10 +240,6 @@ static int msm_drm_uninit(struct device *dev) drm_mode_config_cleanup(ddev); - for (i = 0; i < priv->num_bridges; i++) - drm_bridge_remove(priv->bridges[i]); - priv->num_bridges = 0; - if (kms) { pm_runtime_get_sync(dev); msm_irq_uninstall(ddev); diff --git a/drivers/gpu/drm/msm/msm_drv.h b/drivers/gpu/drm/msm/msm_drv.h index 6787bd302dfa..deb5ee236a2a 100644 --- a/drivers/gpu/drm/msm/msm_drv.h +++ b/drivers/gpu/drm/msm/msm_drv.h @@ -202,9 +202,6 @@ struct msm_drm_private { struct msm_drm_thread event_thread[MAX_CRTCS]; - unsigned int num_bridges; - struct drm_bridge *bridges[MAX_BRIDGES]; - /* VRAM carveout, used when no IOMMU: */ struct { unsigned long size; From patchwork Mon Jul 3 00:37:38 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Baryshkov X-Patchwork-Id: 699778 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id EC7CFEB64DA for ; Mon, 3 Jul 2023 00:37:55 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229608AbjGCAhz (ORCPT ); Sun, 2 Jul 2023 20:37:55 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35834 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229797AbjGCAhy (ORCPT ); Sun, 2 Jul 2023 20:37:54 -0400 Received: from mail-lj1-x230.google.com (mail-lj1-x230.google.com [IPv6:2a00:1450:4864:20::230]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 488CFE46 for ; Sun, 2 Jul 2023 17:37:53 -0700 (PDT) Received: by mail-lj1-x230.google.com with SMTP id 38308e7fff4ca-2b63e5f94f1so48532891fa.1 for ; Sun, 02 Jul 2023 17:37:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1688344671; x=1690936671; 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=gi6uYs0yy4iwxnVM5Npf/ZisXoud61FuBDGjFnoLitw=; b=bPclgG/9b5NaCNxTxnhM6g+c02HqU/l4Xc7QOmVOxGLUiRZ3oqbxpUo3q351s1G3fE Tj5V+qwfI2yC3fC4cFY/y2WsKyJXTas7V9wSxsl/qf9wRvbgR4ogfYafJs8RM7ssqtdX r8MuPyjgtCfnIpXeOyVY/a8buxGWRrwAiYgLDXJ3g+SPg2prRmwuAHxO0AsqaTHkZpze 0/Ozh4nFoeBI8AK/MQOqrXeXgpuL85s1SSsvR9tA1/cYwkFDGA7Bm9Vapdq+9aOanIIY 8frFITUoOaVe4atGCrInx/yVZ9xoEBPu4Kl6O6WfxoQ3Da6Ul8ddanDLbT2T2hMcWlBg jVuw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1688344671; x=1690936671; 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=gi6uYs0yy4iwxnVM5Npf/ZisXoud61FuBDGjFnoLitw=; b=mInua9uUjK1mCBRYmX/0GP4iFUfqi0zhWBcqnQqP4281i6qhMSjy0CTrLRvfxPCp3G ohwhgWRSgxhm1lTid4ENP62eXT8jIkHKXBons4nMPC0K6ucznnU2T5Nd88em3L8Xy6hY sBX/revZIlLPAtxw7zFSJCe0Z7GmXha8Ahdg/wEJX4r9r1KpXAONXSerrmrAVxKp9JWF M6LMJMQSC5rfRwNdlF/D4/YG4Oq6czU9NSG83UXMa+wfFGYTMvoKIJz6zSBltWxGOMpD DrMrESTzsL57RmISE8bW954iiyYHekZx+ZMqvpjcEiBOA0eTfjljauPUXAYDnFyjlg8i VZIg== X-Gm-Message-State: AC+VfDw1IavU7ObJ3qFxtJw7r+0AL3Itjuj0sOntdr+aW1YrbWXAyfV8 ghUwOGeXBjOu7HIpl2on7+Vg8g== X-Google-Smtp-Source: ACHHUZ6cEuCuRJauL94EMMA9/zg+ErB/kYdxQ2lOaMyLtFzzNZ5MR+FZ2EF3HsTFomamhe4i+lBc1Q== X-Received: by 2002:a05:651c:124b:b0:2b6:a694:aaa1 with SMTP id h11-20020a05651c124b00b002b6a694aaa1mr4520858ljh.1.1688344671623; Sun, 02 Jul 2023 17:37:51 -0700 (PDT) Received: from lothlorien.lan (dzdqv0yyyyyyyyyyybm5y-3.rev.dnainternet.fi. [2001:14ba:a0db:1f00::ab2]) by smtp.gmail.com with ESMTPSA id s24-20020a2e98d8000000b002b6ebc61e85sm136704ljj.54.2023.07.02.17.37.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 02 Jul 2023 17:37:51 -0700 (PDT) From: Dmitry Baryshkov To: Rob Clark , Sean Paul , Abhinav Kumar , Marijn Suijten Cc: Stephen Boyd , David Airlie , Daniel Vetter , Bjorn Andersson , linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org Subject: [PATCH 06/13] drm/msm: drop pm ops from the headless msm driver Date: Mon, 3 Jul 2023 03:37:38 +0300 Message-Id: <20230703003745.34239-7-dmitry.baryshkov@linaro.org> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230703003745.34239-1-dmitry.baryshkov@linaro.org> References: <20230703003745.34239-1-dmitry.baryshkov@linaro.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org The msm_pm_prepare()/msm_pm_complete() only make sense for the KMS-enabled devices, they have priv->kms guards inside. Drop global msm_pm_ops, which were used only by the headless msm device. Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/msm_drv.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c index 9fe789a546f5..a85eb7b21061 100644 --- a/drivers/gpu/drm/msm/msm_drv.c +++ b/drivers/gpu/drm/msm/msm_drv.c @@ -1123,11 +1123,6 @@ void msm_pm_complete(struct device *dev) drm_mode_config_helper_resume(ddev); } -static const struct dev_pm_ops msm_pm_ops = { - .prepare = msm_pm_prepare, - .complete = msm_pm_complete, -}; - /* * Componentized driver support: */ @@ -1308,7 +1303,6 @@ static struct platform_driver msm_platform_driver = { .shutdown = msm_drv_shutdown, .driver = { .name = "msm", - .pm = &msm_pm_ops, }, }; From patchwork Mon Jul 3 00:37:39 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Baryshkov X-Patchwork-Id: 698780 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 21D00EB64DD for ; Mon, 3 Jul 2023 00:37:57 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229908AbjGCAh4 (ORCPT ); Sun, 2 Jul 2023 20:37:56 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35842 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229927AbjGCAhz (ORCPT ); Sun, 2 Jul 2023 20:37:55 -0400 Received: from mail-lj1-x22c.google.com (mail-lj1-x22c.google.com [IPv6:2a00:1450:4864:20::22c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2E10BE47 for ; Sun, 2 Jul 2023 17:37:54 -0700 (PDT) Received: by mail-lj1-x22c.google.com with SMTP id 38308e7fff4ca-2b699a2fe86so63351731fa.3 for ; Sun, 02 Jul 2023 17:37:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1688344672; x=1690936672; 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=dWhFZIVk6jmTe7cLijy1h6IIQ5YlvCfQh9mJf+Vzxo4=; b=SH7IrH68+0rT6/+5nwk7nTj/U4K3RXLgJ+aOZfE81WOp/sITptOIOs2a9tArBO2Qrt YxA3Y8n5ffJ8LLaIi4u82eg3nuPZVN4nmHBQn4Sl+vQIHgyJdRM0aozSFG+CH0xAFVq2 Gih+U2ubtXLUBFeXDqEf8to/jAqMot+JSHf3HHJYN2zUWESwCsKOW54w/MiBZ+P4tJXN uXbMXE27r0zjdSYrYbmfLhB/VzvpruW9CqPdJ1mNqkybeQhOCPXBZAZK3lO5RdCSqAjb FKmQ+c08CUbe563llyszZaJOk+GtX1p/8JHlGOOUYEXuK4qT9wXlpjG7MJMwLKaeluck unjQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1688344672; x=1690936672; 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=dWhFZIVk6jmTe7cLijy1h6IIQ5YlvCfQh9mJf+Vzxo4=; b=lT0sKYo5EC4jwj+o4wIG2iUZhJkffa7Bt4rsHAAKm8HP9ZZfDjJSqNroQ8Mq4eJ0Tj QBGvTcsnnxoDRYRWEa6Rh4odVRQzkEZkqYY/9cCnGDCHWrYxH5DSSB4iQom5ClQfMb5J qckXJAp5ziz3vS3OgmBQlNNFw/hDDFZebYHjSmzp3d6jvicmBXe/QbnTnTZpPCCNy2Cf Ok3zTkzZLFeJM4w8Bre6a3/7+pJ1RRono2hLAaOHAAPSXY25uW8wQm9lYtkaVbQ98ejq Jt21YKJVEyyY7wVMK3R4b8bsb6RfSat58vg1dLZNaPLfYw4PM6r5lV2zPZy26zwr+895 mSoA== X-Gm-Message-State: ABy/qLZ7kfD+uQRw78BeErwKW7Tt1XIZrlW5gQvFImOnzJs2FAOoAmiP X0CXbM6jTPAEJgIZOKoN6pYWH20MoQvB4zOZa6A= X-Google-Smtp-Source: APBJJlFaaeQC2D2v8hBgCFpbEqDjXpmZt8jdpr9h6CMFCCqDXLMkuRww3PL89GeZo/qLsVSYlEILhw== X-Received: by 2002:a2e:6e18:0:b0:2b6:dc3a:a99f with SMTP id j24-20020a2e6e18000000b002b6dc3aa99fmr3021975ljc.17.1688344672582; Sun, 02 Jul 2023 17:37:52 -0700 (PDT) Received: from lothlorien.lan (dzdqv0yyyyyyyyyyybm5y-3.rev.dnainternet.fi. [2001:14ba:a0db:1f00::ab2]) by smtp.gmail.com with ESMTPSA id s24-20020a2e98d8000000b002b6ebc61e85sm136704ljj.54.2023.07.02.17.37.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 02 Jul 2023 17:37:52 -0700 (PDT) From: Dmitry Baryshkov To: Rob Clark , Sean Paul , Abhinav Kumar , Marijn Suijten Cc: Stephen Boyd , David Airlie , Daniel Vetter , Bjorn Andersson , linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org Subject: [PATCH 07/13] drm/msm: rename msm_pm_prepare/complete to note the KMS nature Date: Mon, 3 Jul 2023 03:37:39 +0300 Message-Id: <20230703003745.34239-8-dmitry.baryshkov@linaro.org> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230703003745.34239-1-dmitry.baryshkov@linaro.org> References: <20230703003745.34239-1-dmitry.baryshkov@linaro.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org Rename the msm_pm_prepare() and msm_pm_complete() to msm_kms_pm_prepare() and msm_kms_pm_complete() consequently. Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 4 ++-- drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c | 4 ++-- drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c | 4 ++-- drivers/gpu/drm/msm/msm_drv.c | 4 ++-- drivers/gpu/drm/msm/msm_drv.h | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c index 5b04c37c102f..8a5249907f53 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c @@ -1293,8 +1293,8 @@ static const struct dev_pm_ops dpu_pm_ops = { SET_RUNTIME_PM_OPS(dpu_runtime_suspend, dpu_runtime_resume, NULL) SET_SYSTEM_SLEEP_PM_OPS(pm_runtime_force_suspend, pm_runtime_force_resume) - .prepare = msm_pm_prepare, - .complete = msm_pm_complete, + .prepare = msm_kms_pm_prepare, + .complete = msm_kms_pm_complete, }; static const struct of_device_id dpu_dt_match[] = { diff --git a/drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c b/drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c index a3f1da3382e8..302f3d10a464 100644 --- a/drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c +++ b/drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c @@ -501,8 +501,8 @@ static int mdp4_kms_init(struct drm_device *dev) } static const struct dev_pm_ops mdp4_pm_ops = { - .prepare = msm_pm_prepare, - .complete = msm_pm_complete, + .prepare = msm_kms_pm_prepare, + .complete = msm_kms_pm_complete, }; static int mdp4_probe(struct platform_device *pdev) diff --git a/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c b/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c index 52f176e08690..7572e8616961 100644 --- a/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c +++ b/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c @@ -961,8 +961,8 @@ static __maybe_unused int mdp5_runtime_resume(struct device *dev) static const struct dev_pm_ops mdp5_pm_ops = { SET_RUNTIME_PM_OPS(mdp5_runtime_suspend, mdp5_runtime_resume, NULL) - .prepare = msm_pm_prepare, - .complete = msm_pm_complete, + .prepare = msm_kms_pm_prepare, + .complete = msm_kms_pm_complete, }; static const struct of_device_id mdp5_dt_match[] = { diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c index a85eb7b21061..ee27837516fc 100644 --- a/drivers/gpu/drm/msm/msm_drv.c +++ b/drivers/gpu/drm/msm/msm_drv.c @@ -1101,7 +1101,7 @@ static const struct drm_driver msm_driver = { .patchlevel = MSM_VERSION_PATCHLEVEL, }; -int msm_pm_prepare(struct device *dev) +int msm_kms_pm_prepare(struct device *dev) { struct msm_drm_private *priv = dev_get_drvdata(dev); struct drm_device *ddev = priv ? priv->dev : NULL; @@ -1112,7 +1112,7 @@ int msm_pm_prepare(struct device *dev) return drm_mode_config_helper_suspend(ddev); } -void msm_pm_complete(struct device *dev) +void msm_kms_pm_complete(struct device *dev) { struct msm_drm_private *priv = dev_get_drvdata(dev); struct drm_device *ddev = priv ? priv->dev : NULL; diff --git a/drivers/gpu/drm/msm/msm_drv.h b/drivers/gpu/drm/msm/msm_drv.h index deb5ee236a2a..67450dccc5a6 100644 --- a/drivers/gpu/drm/msm/msm_drv.h +++ b/drivers/gpu/drm/msm/msm_drv.h @@ -555,8 +555,8 @@ static inline unsigned long timeout_to_jiffies(const ktime_t *timeout) extern const struct component_master_ops msm_drm_ops; -int msm_pm_prepare(struct device *dev); -void msm_pm_complete(struct device *dev); +int msm_kms_pm_prepare(struct device *dev); +void msm_kms_pm_complete(struct device *dev); int msm_drv_probe(struct device *dev, int (*kms_init)(struct drm_device *dev), From patchwork Mon Jul 3 00:37:40 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Baryshkov X-Patchwork-Id: 698779 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 45EFBEB64DA for ; Mon, 3 Jul 2023 00:37:58 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229554AbjGCAh4 (ORCPT ); Sun, 2 Jul 2023 20:37:56 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35848 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229875AbjGCAh4 (ORCPT ); Sun, 2 Jul 2023 20:37:56 -0400 Received: from mail-lf1-x132.google.com (mail-lf1-x132.google.com [IPv6:2a00:1450:4864:20::132]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1674B1BF for ; Sun, 2 Jul 2023 17:37:55 -0700 (PDT) Received: by mail-lf1-x132.google.com with SMTP id 2adb3069b0e04-4fb5bcb9a28so5875106e87.3 for ; Sun, 02 Jul 2023 17:37:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1688344673; x=1690936673; 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=FTB2UHvzkUCn5HR1GgoJDqVIQMk8vQmx+jHt1n0pheQ=; b=GNUJ5dx3XGOSECmjT1DMYoW8QGVRluZHuI+0QWBakn+TWkbdgOu+rpcAfxF8NdhplA DTBuOcGYSNhynFV+Tt6n6jW1lqrHvrLCK9AwzacU9fjSgfHRLT2XfRaFd2WeMyVnq9TQ 4a+JAqrHd4xFLhqQ1OazJ1tx/JlyaOuMaHjZ3eJfBWVzx+sLgXpdVvm+hczRgcQQDsBN q3Z2u9vjdv2wPsP8WyNWIx4SNwniXKQnfh+1pIN3bwCNJb8slf7d+o3zdZduCI5TMApy DlMOLAruegYEbhu5LRY9Js4rRXuj979oQ1juzuiySOF9x9n3L95LqKa9aUBJPEc/xeoz GWYg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1688344673; x=1690936673; 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=FTB2UHvzkUCn5HR1GgoJDqVIQMk8vQmx+jHt1n0pheQ=; b=ekT8hnJcpi6JbGOIcCFwhon/q5KhWGR++73rf1YBvfjfuS2FMKx5lt0zBnJfhGGPJm Po1b6vpuBoD3fSxYctWmowwGewq7DvO4HvrKLJqz5JgjSE21cgBWSJL6qE2XgYFkOHFA 3l58BSH7FqKo5JLIobLPUAJT3Co87CZWtQlnkO28HMirl+5DX5/X96JHI3SFNTkf6lBQ CbMZ+sn4v38fiSI2G2jWt4VzPIV31aHDFqtdsYO050Q7P2Y/23ysmNXfn+s04dF47PMZ ycOJc9rlxMx4MT/Lm1f3UXwu7l7iTzd6O/lg2lfFEbxtmzUH9Atzxp82OpEPGONCwwh3 dFww== X-Gm-Message-State: ABy/qLYFENDUL8wAVAPXDYczbfRKv1sz9lqvow65KlRZ7OhU6yFP1jQN vX02OGn0DVdYGz/ALYEFexDVEw== X-Google-Smtp-Source: APBJJlFvEw8xaJIG4fjGk0k2vy5tuEF7kntjvRGGs5H0vS/etieC0ZXXWlXFPd2CefZs9E4mdiYfSg== X-Received: by 2002:a2e:9844:0:b0:2b5:86e4:558e with SMTP id e4-20020a2e9844000000b002b586e4558emr5513769ljj.38.1688344673460; Sun, 02 Jul 2023 17:37:53 -0700 (PDT) Received: from lothlorien.lan (dzdqv0yyyyyyyyyyybm5y-3.rev.dnainternet.fi. [2001:14ba:a0db:1f00::ab2]) by smtp.gmail.com with ESMTPSA id s24-20020a2e98d8000000b002b6ebc61e85sm136704ljj.54.2023.07.02.17.37.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 02 Jul 2023 17:37:52 -0700 (PDT) From: Dmitry Baryshkov To: Rob Clark , Sean Paul , Abhinav Kumar , Marijn Suijten Cc: Stephen Boyd , David Airlie , Daniel Vetter , Bjorn Andersson , linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org Subject: [PATCH 08/13] drm/msm: remove shutdown callback from msm_platform_driver Date: Mon, 3 Jul 2023 03:37:40 +0300 Message-Id: <20230703003745.34239-9-dmitry.baryshkov@linaro.org> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230703003745.34239-1-dmitry.baryshkov@linaro.org> References: <20230703003745.34239-1-dmitry.baryshkov@linaro.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org The msm_drv_shutdown only makes sense for the KMS-enabled devices, while msm_platform_driver is only used in the headless case. Remove the shutdown callback from the driver structure. Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/msm_drv.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c index ee27837516fc..971c008e82cb 100644 --- a/drivers/gpu/drm/msm/msm_drv.c +++ b/drivers/gpu/drm/msm/msm_drv.c @@ -1300,7 +1300,6 @@ void msm_drv_shutdown(struct platform_device *pdev) static struct platform_driver msm_platform_driver = { .probe = msm_pdev_probe, .remove = msm_pdev_remove, - .shutdown = msm_drv_shutdown, .driver = { .name = "msm", }, From patchwork Mon Jul 3 00:37:41 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Baryshkov X-Patchwork-Id: 698778 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2909BEB64DA for ; Mon, 3 Jul 2023 00:38:00 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229928AbjGCAh7 (ORCPT ); Sun, 2 Jul 2023 20:37:59 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35858 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229715AbjGCAh5 (ORCPT ); Sun, 2 Jul 2023 20:37:57 -0400 Received: from mail-lj1-x22d.google.com (mail-lj1-x22d.google.com [IPv6:2a00:1450:4864:20::22d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E6F04E45 for ; Sun, 2 Jul 2023 17:37:55 -0700 (PDT) Received: by mail-lj1-x22d.google.com with SMTP id 38308e7fff4ca-2b5c2433134so48714871fa.0 for ; Sun, 02 Jul 2023 17:37:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1688344674; x=1690936674; 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=7G1CsCJ23zaCfQOQFeshNDkLCUSa7yYapmukMUdJ04U=; b=PBuB1pO7o603SkfIOeeA/WpLHfIMMzwz1dV2GHudNFtU2g7cqvtT1RBlHalGL0C0+2 8f7Xfi0pPHM5LygP4S18yLatZQLAvcukvWI45cX167URHO2gN9jFMRTgWuyBj751iTrv nd3lti5NpZytzH95/XsY85cC2epdRU8sEMtm5xrOPU9uwUU9GHP/4UoEq91JUX0zTXX2 Sb1ZIWxNDvwd/Ngank6BQOiT0WVHLCBDXmvs8AC7GBKT9y4X9Jl8TxQouuHsN0GMKwjB 5jHvffSoX93IF9kuc6pm/zOJUm9QsW8M1l4cgtxZE0Y03kN3jLZcY+3j08rZet+k5/L6 NPLg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1688344674; x=1690936674; 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=7G1CsCJ23zaCfQOQFeshNDkLCUSa7yYapmukMUdJ04U=; b=a0+N8/NvPpUv1FNGnLYfcrnSWbHmP0xnkzMQFOazjKMrpZgjkNzgtEw4Dy9W4V6Xt2 33MbSmT0PTNr2V1BEOWZvtVXp0a2/g5r9EwucpJsHd4yvE+q2XytnhmhyXrztwB2PEDx BHhReW6PnY1yXTlvVClKKhEuD8l+1Uh9bm60//bzQEiETj2eTDANKPygdUdwdXNw78cq cHqs1kNJuto1kWEocbfn9q5qYuxwW5ZnIYQSo9PHXeaG1DlYWLYq5VfkivGVrDEiBTfr LXovg4gd1k5euNU1IbOGMunnUYmRiPt7E1GV5pFxXaTi2xylAqcs/g5k9Kks7jx8h5+S Ck2A== X-Gm-Message-State: AC+VfDyXg0AMp1pbVBz5Cmt60fCxmbnMH91tTxBcBzoLFkhnz9jnImEf zlP9XxYCbj/5FuHh1fVLHdGWnA== X-Google-Smtp-Source: ACHHUZ4QHiwmcxeXKRHyuXg/5wgfUeP3Y9/Fy/S1J4q/ljb2RH4oaJkmIv+syp6mKGIlTMDgk0unyg== X-Received: by 2002:a2e:a453:0:b0:2b6:a570:1d5 with SMTP id v19-20020a2ea453000000b002b6a57001d5mr4493534ljn.10.1688344674337; Sun, 02 Jul 2023 17:37:54 -0700 (PDT) Received: from lothlorien.lan (dzdqv0yyyyyyyyyyybm5y-3.rev.dnainternet.fi. [2001:14ba:a0db:1f00::ab2]) by smtp.gmail.com with ESMTPSA id s24-20020a2e98d8000000b002b6ebc61e85sm136704ljj.54.2023.07.02.17.37.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 02 Jul 2023 17:37:53 -0700 (PDT) From: Dmitry Baryshkov To: Rob Clark , Sean Paul , Abhinav Kumar , Marijn Suijten Cc: Stephen Boyd , David Airlie , Daniel Vetter , Bjorn Andersson , linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org Subject: [PATCH 09/13] drm/msm: rename msm_drv_shutdown() to msm_kms_shutdown() Date: Mon, 3 Jul 2023 03:37:41 +0300 Message-Id: <20230703003745.34239-10-dmitry.baryshkov@linaro.org> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230703003745.34239-1-dmitry.baryshkov@linaro.org> References: <20230703003745.34239-1-dmitry.baryshkov@linaro.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org The msm_drv_shutdown function should only be used in the KMS case. Rename it accordingly. Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 2 +- drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c | 2 +- drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c | 2 +- drivers/gpu/drm/msm/msm_drv.c | 2 +- drivers/gpu/drm/msm/msm_drv.h | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c index 8a5249907f53..993799c0945e 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c @@ -1320,7 +1320,7 @@ MODULE_DEVICE_TABLE(of, dpu_dt_match); static struct platform_driver dpu_driver = { .probe = dpu_dev_probe, .remove = dpu_dev_remove, - .shutdown = msm_drv_shutdown, + .shutdown = msm_kms_shutdown, .driver = { .name = "msm_dpu", .of_match_table = dpu_dt_match, diff --git a/drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c b/drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c index 302f3d10a464..e35d450492f1 100644 --- a/drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c +++ b/drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c @@ -572,7 +572,7 @@ MODULE_DEVICE_TABLE(of, mdp4_dt_match); static struct platform_driver mdp4_platform_driver = { .probe = mdp4_probe, .remove = mdp4_remove, - .shutdown = msm_drv_shutdown, + .shutdown = msm_kms_shutdown, .driver = { .name = "mdp4", .of_match_table = mdp4_dt_match, diff --git a/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c b/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c index 7572e8616961..edd4e68b6e3a 100644 --- a/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c +++ b/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c @@ -976,7 +976,7 @@ MODULE_DEVICE_TABLE(of, mdp5_dt_match); static struct platform_driver mdp5_driver = { .probe = mdp5_dev_probe, .remove = mdp5_dev_remove, - .shutdown = msm_drv_shutdown, + .shutdown = msm_kms_shutdown, .driver = { .name = "msm_mdp", .of_match_table = mdp5_dt_match, diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c index 971c008e82cb..e929da9360e4 100644 --- a/drivers/gpu/drm/msm/msm_drv.c +++ b/drivers/gpu/drm/msm/msm_drv.c @@ -1281,7 +1281,7 @@ static int msm_pdev_remove(struct platform_device *pdev) return 0; } -void msm_drv_shutdown(struct platform_device *pdev) +void msm_kms_shutdown(struct platform_device *pdev) { struct msm_drm_private *priv = platform_get_drvdata(pdev); struct drm_device *drm = priv ? priv->dev : NULL; diff --git a/drivers/gpu/drm/msm/msm_drv.h b/drivers/gpu/drm/msm/msm_drv.h index 67450dccc5a6..17f22b283c30 100644 --- a/drivers/gpu/drm/msm/msm_drv.h +++ b/drivers/gpu/drm/msm/msm_drv.h @@ -561,7 +561,7 @@ void msm_kms_pm_complete(struct device *dev); int msm_drv_probe(struct device *dev, int (*kms_init)(struct drm_device *dev), struct msm_kms *kms); -void msm_drv_shutdown(struct platform_device *pdev); +void msm_kms_shutdown(struct platform_device *pdev); #endif /* __MSM_DRV_H__ */ From patchwork Mon Jul 3 00:37:42 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Baryshkov X-Patchwork-Id: 699775 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id A7787C0015E for ; Mon, 3 Jul 2023 00:37:59 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229927AbjGCAh6 (ORCPT ); Sun, 2 Jul 2023 20:37:58 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35860 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229816AbjGCAh5 (ORCPT ); Sun, 2 Jul 2023 20:37:57 -0400 Received: from mail-lj1-x235.google.com (mail-lj1-x235.google.com [IPv6:2a00:1450:4864:20::235]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C99591BF for ; Sun, 2 Jul 2023 17:37:56 -0700 (PDT) Received: by mail-lj1-x235.google.com with SMTP id 38308e7fff4ca-2b6a5fd1f46so58598831fa.1 for ; Sun, 02 Jul 2023 17:37:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1688344675; x=1690936675; 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=JPFwCvRngaFzJ94U7CZjB/OGCFNsTWeZNPgu469jNjI=; b=zqc8yxn+85gSqrBDI0ZGz0xLVJhr/wm+fFHjv88VmquMMzqCImDdrX/yVEWaJfLtzt bztABFbB7IIrko9nWgeExVDNlF/vTz/DO161LfevnzAXu/oOonoHgsXdb7ALC2diIRvj XBiMjSITEDbUe0KEqpb0SvZCsHvzjcesL8v2TBuBBZcUsM+8aFSMjvQq9T7hooPriW/J pl+c71IxTFjUN8FE3xDbqMWksY+4nn4k2vGzj7WLcEPpIQK7woZlJ2oyrWsFXRCpCOOx 9hpLz5de9zSnKhtQiWFjiek/mg08NFMGVp6PCWYDiF65EqWzyw6QVZn337z0jRRsDtwX otlg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1688344675; x=1690936675; 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=JPFwCvRngaFzJ94U7CZjB/OGCFNsTWeZNPgu469jNjI=; b=cTYKnflE3Avw5Pizo+QZwhzQIGnMjKlGpjqhBtoHAdTCQf6euRsH8WXVOfqmQ+kxfP QTvox4of8xUAhRbRU4NIqSFkY8Q+mePw/Vpir66aNSvh1kgoasW/nHQMDkIRk+aKcQLd jprqtu3Tfetq0dg2taNHPEpiuuVzHVZA1jpVpERWngiPpwse11y/n6zSyPhABLKo6CkA tlBXO7BLy7CdVTnXKcXNdpILXZNStjrXALPOWSGSNxiY7/O6RYv4k2vWCV4Iy3KgqDHg zeEW/uEvbCFs21SteBh9EDWBpRBykgg6rFXyGT2G0Bxy7NY+jh9FWwniEU4d3n4pL+wA BUsg== X-Gm-Message-State: ABy/qLYNdeGMYmgTqDOPtWrrS8UhybCi1XGeXuDxTNur/w/Zwn90kE3f jEo63sjeu9pVWeEXHBBOYazdig== X-Google-Smtp-Source: APBJJlGRBoBupoFRwJOOIXxbqzcof+LE14S8pxvp2t7NizJblaQDQ3CdluQZWpm+UEkjaCU7nqT9Fg== X-Received: by 2002:a2e:2e04:0:b0:2b4:737c:e316 with SMTP id u4-20020a2e2e04000000b002b4737ce316mr6595190lju.14.1688344675238; Sun, 02 Jul 2023 17:37:55 -0700 (PDT) Received: from lothlorien.lan (dzdqv0yyyyyyyyyyybm5y-3.rev.dnainternet.fi. [2001:14ba:a0db:1f00::ab2]) by smtp.gmail.com with ESMTPSA id s24-20020a2e98d8000000b002b6ebc61e85sm136704ljj.54.2023.07.02.17.37.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 02 Jul 2023 17:37:54 -0700 (PDT) From: Dmitry Baryshkov To: Rob Clark , Sean Paul , Abhinav Kumar , Marijn Suijten Cc: Stephen Boyd , David Airlie , Daniel Vetter , Bjorn Andersson , linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org Subject: [PATCH 10/13] drm/msm: switch to drmm_mode_config_init() Date: Mon, 3 Jul 2023 03:37:42 +0300 Message-Id: <20230703003745.34239-11-dmitry.baryshkov@linaro.org> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230703003745.34239-1-dmitry.baryshkov@linaro.org> References: <20230703003745.34239-1-dmitry.baryshkov@linaro.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org Switch to drmm_mode_config_init() instead of drm_mode_config_init(). Drop drm_mode_config_cleanup() calls. Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/msm_drv.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c index e929da9360e4..6b734be17f3f 100644 --- a/drivers/gpu/drm/msm/msm_drv.c +++ b/drivers/gpu/drm/msm/msm_drv.c @@ -238,8 +238,6 @@ static int msm_drm_uninit(struct device *dev) if (kms) msm_disp_snapshot_destroy(ddev); - drm_mode_config_cleanup(ddev); - if (kms) { pm_runtime_get_sync(dev); msm_irq_uninstall(ddev); @@ -439,11 +437,13 @@ static int msm_drm_init(struct device *dev, const struct drm_driver *drv) might_lock(&priv->lru.lock); fs_reclaim_release(GFP_KERNEL); - drm_mode_config_init(ddev); + ret = drmm_mode_config_init(ddev); + if (ret) + goto err_destroy_wq; ret = msm_init_vram(ddev); if (ret) - goto err_cleanup_mode_config; + goto err_destroy_wq; dma_set_max_seg_size(dev, UINT_MAX); @@ -551,8 +551,7 @@ static int msm_drm_init(struct device *dev, const struct drm_driver *drv) err_deinit_vram: msm_deinit_vram(ddev); -err_cleanup_mode_config: - drm_mode_config_cleanup(ddev); +err_destroy_wq: destroy_workqueue(priv->wq); err_put_dev: drm_dev_put(ddev); From patchwork Mon Jul 3 00:37:43 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Baryshkov X-Patchwork-Id: 699774 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7F378EB64D9 for ; Mon, 3 Jul 2023 00:38:00 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229715AbjGCAh7 (ORCPT ); Sun, 2 Jul 2023 20:37:59 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35866 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229875AbjGCAh6 (ORCPT ); Sun, 2 Jul 2023 20:37:58 -0400 Received: from mail-lj1-x22a.google.com (mail-lj1-x22a.google.com [IPv6:2a00:1450:4864:20::22a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 937D2E46 for ; Sun, 2 Jul 2023 17:37:57 -0700 (PDT) Received: by mail-lj1-x22a.google.com with SMTP id 38308e7fff4ca-2b6a0e36d42so46969411fa.0 for ; Sun, 02 Jul 2023 17:37:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1688344676; x=1690936676; 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=S7GwLdWUZVT1Ti3y8jUA1Y6eL5SvuXMoiLEPs7RJxLY=; b=QNNnPQQ7dz3xZB2ev0BD7VEVrGaMkcM2tKSTv88yUcMezVqyKYeVdzKNsvehicWi2n PKFrwHTrZuNCIzFRLqaG7p1PwS8xQNbvKqZWNMALbZk2ylClaH4h0IqhjmYzhjnPm8h4 LZcQbcItjVHRC7t5riXOR37329lDjDrCuJocVBrKSiMgK29gedWxLyvxwj3Irccxc4oG EvhlcAMAMfXPF17X+Fd3v5hy1tOq3tix0l4VRzQtjcTzrAGUD/oyD1GOBR14xnxYn+bz BHclThixPj6tclubtQkRJisBAPEaBiImHyeUz/Yx1RQYEG8dTvmyXJQODFQl0ezXqbZM +4WQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1688344676; x=1690936676; 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=S7GwLdWUZVT1Ti3y8jUA1Y6eL5SvuXMoiLEPs7RJxLY=; b=Xn2fltCp2w1xY22Tve8q3vgigXDBlU4Ni5eO5IdqUIs0qz9aUAmiiOFgwQdwW1eJI2 UyhpqRVj8zj+fWSRx3+cek29GudrgyuFeujAea14WrkexuvSVPTdTm5BBAzEkjFwMViZ jhfyX5JfeOxwSahwJwDzABU0b4/9CbPxDbMiZHgyNcb/35VS776KuRIAqorIxqJqmq+0 ImrQActipZWVUAQcKdit3szremaPtnor8e58XJjiduZSx2OiupsUidIbeD+e7dOGt1J/ T1wRvWAYzANmqLEyXV5YVRItfJYFoYYIn3nD7vtIp/G22bqov3hg1sRs0BUcxpUrH68n p1iA== X-Gm-Message-State: ABy/qLYg57H8uvp9RSyPrliMkSuvHaarnFvA7OZI6TIm5ZSLSxfoCjyj EPUPV0P13Swmihv7NG5LVl+5zg== X-Google-Smtp-Source: APBJJlFKRoblJGMV6xQ3svB6jx8CgG7VOpUhAHBXfpfUHeZCmBR7GQEL8V/eIHQSK5ZNriWsQ9dXzA== X-Received: by 2002:a05:651c:2ce:b0:2b6:d956:79d4 with SMTP id f14-20020a05651c02ce00b002b6d95679d4mr1708631ljo.14.1688344675998; Sun, 02 Jul 2023 17:37:55 -0700 (PDT) Received: from lothlorien.lan (dzdqv0yyyyyyyyyyybm5y-3.rev.dnainternet.fi. [2001:14ba:a0db:1f00::ab2]) by smtp.gmail.com with ESMTPSA id s24-20020a2e98d8000000b002b6ebc61e85sm136704ljj.54.2023.07.02.17.37.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 02 Jul 2023 17:37:55 -0700 (PDT) From: Dmitry Baryshkov To: Rob Clark , Sean Paul , Abhinav Kumar , Marijn Suijten Cc: Stephen Boyd , David Airlie , Daniel Vetter , Bjorn Andersson , linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org Subject: [PATCH 11/13] drm/msm: only register 'kms' debug file if KMS is used Date: Mon, 3 Jul 2023 03:37:43 +0300 Message-Id: <20230703003745.34239-12-dmitry.baryshkov@linaro.org> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230703003745.34239-1-dmitry.baryshkov@linaro.org> References: <20230703003745.34239-1-dmitry.baryshkov@linaro.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org There is little point in having the empty debugfs file which always returns -ENODEV. Change this file to be created only if KMS is actually used. Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/msm_debugfs.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/msm/msm_debugfs.c b/drivers/gpu/drm/msm/msm_debugfs.c index a0a936f80ae3..06fc632fd6f9 100644 --- a/drivers/gpu/drm/msm/msm_debugfs.c +++ b/drivers/gpu/drm/msm/msm_debugfs.c @@ -314,8 +314,9 @@ void msm_debugfs_init(struct drm_minor *minor) debugfs_create_file("gpu", S_IRUSR, minor->debugfs_root, dev, &msm_gpu_fops); - debugfs_create_file("kms", S_IRUSR, minor->debugfs_root, - dev, &msm_kms_fops); + if (priv->kms) + debugfs_create_file("kms", S_IRUSR, minor->debugfs_root, + dev, &msm_kms_fops); debugfs_create_u32("hangcheck_period_ms", 0600, minor->debugfs_root, &priv->hangcheck_period); From patchwork Mon Jul 3 00:37:44 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Baryshkov X-Patchwork-Id: 698777 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id EAADFEB64DD for ; Mon, 3 Jul 2023 00:38:00 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229875AbjGCAiA (ORCPT ); Sun, 2 Jul 2023 20:38:00 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35872 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229816AbjGCAh7 (ORCPT ); Sun, 2 Jul 2023 20:37:59 -0400 Received: from mail-lj1-x22b.google.com (mail-lj1-x22b.google.com [IPv6:2a00:1450:4864:20::22b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4F91FE47 for ; Sun, 2 Jul 2023 17:37:58 -0700 (PDT) Received: by mail-lj1-x22b.google.com with SMTP id 38308e7fff4ca-2b6a152a933so58373321fa.1 for ; Sun, 02 Jul 2023 17:37:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1688344676; x=1690936676; 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=QKBTuSmWc6m/vBhUXH7Ge8kqDNa4v+VkPqYeWVoQJxE=; b=D2KKaR54BK7dLTNQL+gPJYFHqB2bXzAxJo0VXg5ldZk8aDJu5TD5HO31aH8PjbaP7F VEFhSwNTxKFGyfq+6yu18fIWmq7Xr4DPYaLvNZ2euPW/BwjalfU8fItSeyrgwOIppQZx nCu3I7AG6J7LVVHy+cYAhaSyGt+KGAVfeSQe7vwiLwUaWBal9vy+s3Uhim92zVeN/dO0 k6YZSy2HdM3PvJZKganTMI74ywq4EMJP07Vc5rVlCAuQwjvPqjYe8XCiMqn7VRFQAE8L lnuNtbFXdXoEJUOHQe3BYIJNernXz1oFnMY95ltWjnRqnEMxOTTVlNo6IcX+SH+oxx2M 41yw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1688344676; x=1690936676; 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=QKBTuSmWc6m/vBhUXH7Ge8kqDNa4v+VkPqYeWVoQJxE=; b=WC/KK96QfdM4FxkggO38ckqNpYkhlBxuGVcbK8AXk8J7jiM0SZb0nBOy8xek7ZKx3w D/IKMdH6kvz+tcwvKcEcojhtr0crTRkORajVSGk7qNfA8RJ0/kdODihI0d3arXiHZcxK O6JxA75llGqlZedCpsDFDzoqpQoMyB/OlbAwOTfVD7RD0+FEW7UDYO9zXnsVU+cjW3K6 mACs6LERcZN0Pjq11F7/GuVOJqeuU7tfHTr3Dj9dWKPYkFjR+NzbCs+02nKBKUo/VOUd Z7oG9KN/Zw4V9j4LMtqIaCLeJ2ppDTUBxffo7/DcFgGn8XROZ9Qyaqj0Z23/qpOE7Vrh 6rPw== X-Gm-Message-State: ABy/qLbpeoNmFyZAfHJeG0Nc3Z8keBPAUn2M1oj6Nni8je6/WFtGGBls EgAnEWkMDBguVFYA9Sn3Nd8/8w== X-Google-Smtp-Source: APBJJlE6U0fecDvP6B4B/j7NsX8K79v1J/m+hXQSir44s2OaIGnsJVjeEfunwHF45FXBM+kmeDs58g== X-Received: by 2002:a2e:3508:0:b0:2b6:98c3:7a70 with SMTP id z8-20020a2e3508000000b002b698c37a70mr5451330ljz.41.1688344676723; Sun, 02 Jul 2023 17:37:56 -0700 (PDT) Received: from lothlorien.lan (dzdqv0yyyyyyyyyyybm5y-3.rev.dnainternet.fi. [2001:14ba:a0db:1f00::ab2]) by smtp.gmail.com with ESMTPSA id s24-20020a2e98d8000000b002b6ebc61e85sm136704ljj.54.2023.07.02.17.37.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 02 Jul 2023 17:37:56 -0700 (PDT) From: Dmitry Baryshkov To: Rob Clark , Sean Paul , Abhinav Kumar , Marijn Suijten Cc: Stephen Boyd , David Airlie , Daniel Vetter , Bjorn Andersson , linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org Subject: [PATCH 12/13] drm/msm: make fb debugfs file available only in KMS case Date: Mon, 3 Jul 2023 03:37:44 +0300 Message-Id: <20230703003745.34239-13-dmitry.baryshkov@linaro.org> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230703003745.34239-1-dmitry.baryshkov@linaro.org> References: <20230703003745.34239-1-dmitry.baryshkov@linaro.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org Don't register the 'fb' debugfs file, if there is no KMS (and so no framebuffers). Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/msm_debugfs.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/msm/msm_debugfs.c b/drivers/gpu/drm/msm/msm_debugfs.c index 06fc632fd6f9..04d304eed223 100644 --- a/drivers/gpu/drm/msm/msm_debugfs.c +++ b/drivers/gpu/drm/msm/msm_debugfs.c @@ -266,6 +266,9 @@ static int msm_fb_show(struct seq_file *m, void *arg) static struct drm_info_list msm_debugfs_list[] = { {"gem", msm_gem_show}, { "mm", msm_mm_show }, +}; + +static struct drm_info_list msm_kms_debugfs_list[] = { { "fb", msm_fb_show }, }; @@ -314,9 +317,13 @@ void msm_debugfs_init(struct drm_minor *minor) debugfs_create_file("gpu", S_IRUSR, minor->debugfs_root, dev, &msm_gpu_fops); - if (priv->kms) + if (priv->kms) { + drm_debugfs_create_files(msm_kms_debugfs_list, + ARRAY_SIZE(msm_kms_debugfs_list), + minor->debugfs_root, minor); debugfs_create_file("kms", S_IRUSR, minor->debugfs_root, dev, &msm_kms_fops); + } debugfs_create_u32("hangcheck_period_ms", 0600, minor->debugfs_root, &priv->hangcheck_period); From patchwork Mon Jul 3 00:37:45 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Baryshkov X-Patchwork-Id: 699773 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 60A5FEB64DA for ; Mon, 3 Jul 2023 00:38:03 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229942AbjGCAiC (ORCPT ); Sun, 2 Jul 2023 20:38:02 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35878 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229816AbjGCAiB (ORCPT ); Sun, 2 Jul 2023 20:38:01 -0400 Received: from mail-lj1-x22c.google.com (mail-lj1-x22c.google.com [IPv6:2a00:1450:4864:20::22c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3BE9D1BF for ; Sun, 2 Jul 2023 17:37:59 -0700 (PDT) Received: by mail-lj1-x22c.google.com with SMTP id 38308e7fff4ca-2b63e5f94f1so48533591fa.1 for ; Sun, 02 Jul 2023 17:37:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1688344677; x=1690936677; 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=wI3eBgte9sHeWQKSCdUg3RIfWZjMlvurOH35U+XVJwA=; b=iS9dR34RQY9TZaEPihIGjvIo7mKsKWzG+1bC1ihzrnmJz8xhUI2XimSsDJ+CgpzrPK VVATcrQVJl8GnidBSwE069L6MgkIe4GOwGh9aQ1f33lYZvpcp/Xt4QiElJXCKkCVp2Kw kdLFHpRmVZX5+s3PcFtMjkBFOuewZd4wqR62i9+ekHy80tNcedG4tseyeNONmXzjGYee xCZ9/Rgdq5o26q7pkekVLWvkPL0lzjzy/2yFIl55pC7ZMzLfWfi+Dyjj5E9ABDtejphh HeWe/P7aDr7LcAgFjKQ8w+JjJ/7p+lKJWI30Qjy0hTx8IKn/Pgb7sT/oNSt5Ux4kGe0I 07Hg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1688344677; x=1690936677; 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=wI3eBgte9sHeWQKSCdUg3RIfWZjMlvurOH35U+XVJwA=; b=ljEZ9QUYZdjdPhYNgm/KlmbLugYlMjB7yUwLul/OXxYLQiErhT5wCTLLVaWpsmXxRK jATp+0Du4PZMypn7gfSuvxy2mWaisjoDqnhAW9snBwIPDGLlPM2ejk855wCwnXR3zYRA KApmFZ4jOAVVqkx4GDooiTQeqCJ8fRammej0SaR5lp31WffDpHg6sJIUy6zz5JyblBKa +rINn8Mguf+edUDgs8e2Ky7I2O9VfHf+1Gw6B5XjtTJ5cOntj1SDXYeX8IhCI9HrrlGw iSMhMF370yJBj/0tcbrwKRVzjxjoNFknnhNfJCvGxhUPpBDlMZzjj3w1arO+MijFzbNf E+Mw== X-Gm-Message-State: ABy/qLYnhFuo3g0+jng4IHtk+tn68Y3d64qr2fZmtLml523QfsBkN87O w4W33/XPwS1K3QhU/dRFcw6Zfw== X-Google-Smtp-Source: APBJJlEwe8+kubu0uuuKjXA9bQQ7USh4cJODDNjuPNz+MVsQOA8CcroBaLriy3RRZK1aabxXvoFwCA== X-Received: by 2002:a05:651c:1189:b0:2b6:dbb3:65a0 with SMTP id w9-20020a05651c118900b002b6dbb365a0mr1488852ljo.3.1688344677530; Sun, 02 Jul 2023 17:37:57 -0700 (PDT) Received: from lothlorien.lan (dzdqv0yyyyyyyyyyybm5y-3.rev.dnainternet.fi. [2001:14ba:a0db:1f00::ab2]) by smtp.gmail.com with ESMTPSA id s24-20020a2e98d8000000b002b6ebc61e85sm136704ljj.54.2023.07.02.17.37.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 02 Jul 2023 17:37:57 -0700 (PDT) From: Dmitry Baryshkov To: Rob Clark , Sean Paul , Abhinav Kumar , Marijn Suijten Cc: Stephen Boyd , David Airlie , Daniel Vetter , Bjorn Andersson , linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org Subject: [PATCH 13/13] drm/msm: carve out KMS code from msm_drv.c Date: Mon, 3 Jul 2023 03:37:45 +0300 Message-Id: <20230703003745.34239-14-dmitry.baryshkov@linaro.org> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230703003745.34239-1-dmitry.baryshkov@linaro.org> References: <20230703003745.34239-1-dmitry.baryshkov@linaro.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org The msm_drv.c contains generic code intermixed with KMS handling code. Move all KMS-related code to a separate msm_kms.c file, cleaning up init code while doing this move. This also prevents msm driver from registering modesetting / atomic interfaces in the headless case. Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/Makefile | 1 + drivers/gpu/drm/msm/msm_drv.c | 347 ++-------------------------------- drivers/gpu/drm/msm/msm_kms.c | 345 +++++++++++++++++++++++++++++++++ drivers/gpu/drm/msm/msm_kms.h | 3 + 4 files changed, 366 insertions(+), 330 deletions(-) create mode 100644 drivers/gpu/drm/msm/msm_kms.c diff --git a/drivers/gpu/drm/msm/Makefile b/drivers/gpu/drm/msm/Makefile index 8d02d8c33069..49671364fdcf 100644 --- a/drivers/gpu/drm/msm/Makefile +++ b/drivers/gpu/drm/msm/Makefile @@ -106,6 +106,7 @@ msm-y += \ msm_gpu_devfreq.o \ msm_io_utils.o \ msm_iommu.o \ + msm_kms.o \ msm_perf.o \ msm_rd.o \ msm_ringbuffer.o \ diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c index 6b734be17f3f..73a063f507ee 100644 --- a/drivers/gpu/drm/msm/msm_drv.c +++ b/drivers/gpu/drm/msm/msm_drv.c @@ -6,30 +6,17 @@ */ #include -#include -#include #include -#include #include -#include -#include -#include #include #include #include -#include #include -#include -#include "disp/msm_disp_snapshot.h" #include "msm_drv.h" #include "msm_debugfs.h" -#include "msm_fence.h" -#include "msm_gem.h" -#include "msm_gpu.h" #include "msm_kms.h" -#include "msm_mmu.h" #include "adreno/adreno_gpu.h" /* @@ -56,16 +43,6 @@ static void msm_deinit_vram(struct drm_device *ddev); -static const struct drm_mode_config_funcs mode_config_funcs = { - .fb_create = msm_framebuffer_create, - .atomic_check = msm_atomic_check, - .atomic_commit = drm_atomic_helper_commit, -}; - -static const struct drm_mode_config_helper_funcs mode_config_helper_funcs = { - .atomic_commit_tail = msm_atomic_commit_tail, -}; - static char *vram = "16m"; MODULE_PARM_DESC(vram, "Configure VRAM size (for devices without IOMMU/GPUMMU)"); module_param(vram, charp, 0); @@ -83,125 +60,11 @@ DECLARE_FAULT_ATTR(fail_gem_alloc); DECLARE_FAULT_ATTR(fail_gem_iova); #endif -static irqreturn_t msm_irq(int irq, void *arg) -{ - struct drm_device *dev = arg; - struct msm_drm_private *priv = dev->dev_private; - struct msm_kms *kms = priv->kms; - - BUG_ON(!kms); - - return kms->funcs->irq(kms); -} - -static void msm_irq_preinstall(struct drm_device *dev) -{ - struct msm_drm_private *priv = dev->dev_private; - struct msm_kms *kms = priv->kms; - - BUG_ON(!kms); - - kms->funcs->irq_preinstall(kms); -} - -static int msm_irq_postinstall(struct drm_device *dev) -{ - struct msm_drm_private *priv = dev->dev_private; - struct msm_kms *kms = priv->kms; - - BUG_ON(!kms); - - if (kms->funcs->irq_postinstall) - return kms->funcs->irq_postinstall(kms); - - return 0; -} - -static int msm_irq_install(struct drm_device *dev, unsigned int irq) -{ - struct msm_drm_private *priv = dev->dev_private; - struct msm_kms *kms = priv->kms; - int ret; - - if (irq == IRQ_NOTCONNECTED) - return -ENOTCONN; - - msm_irq_preinstall(dev); - - ret = request_irq(irq, msm_irq, 0, dev->driver->name, dev); - if (ret) - return ret; - - kms->irq_requested = true; - - ret = msm_irq_postinstall(dev); - if (ret) { - free_irq(irq, dev); - return ret; - } - - return 0; -} - -static void msm_irq_uninstall(struct drm_device *dev) -{ - struct msm_drm_private *priv = dev->dev_private; - struct msm_kms *kms = priv->kms; - - kms->funcs->irq_uninstall(kms); - if (kms->irq_requested) - free_irq(kms->irq, dev); -} - -struct msm_vblank_work { - struct work_struct work; - int crtc_id; - bool enable; - struct msm_drm_private *priv; -}; - -static void vblank_ctrl_worker(struct work_struct *work) -{ - struct msm_vblank_work *vbl_work = container_of(work, - struct msm_vblank_work, work); - struct msm_drm_private *priv = vbl_work->priv; - struct msm_kms *kms = priv->kms; - - if (vbl_work->enable) - kms->funcs->enable_vblank(kms, priv->crtcs[vbl_work->crtc_id]); - else - kms->funcs->disable_vblank(kms, priv->crtcs[vbl_work->crtc_id]); - - kfree(vbl_work); -} - -static int vblank_ctrl_queue_work(struct msm_drm_private *priv, - int crtc_id, bool enable) -{ - struct msm_vblank_work *vbl_work; - - vbl_work = kzalloc(sizeof(*vbl_work), GFP_ATOMIC); - if (!vbl_work) - return -ENOMEM; - - INIT_WORK(&vbl_work->work, vblank_ctrl_worker); - - vbl_work->crtc_id = crtc_id; - vbl_work->enable = enable; - vbl_work->priv = priv; - - queue_work(priv->wq, &vbl_work->work); - - return 0; -} - static int msm_drm_uninit(struct device *dev) { struct platform_device *pdev = to_platform_device(dev); struct msm_drm_private *priv = platform_get_drvdata(pdev); struct drm_device *ddev = priv->dev; - struct msm_kms *kms = priv->kms; - int i; /* * Shutdown the hw if we're far enough along where things might be on. @@ -212,7 +75,8 @@ static int msm_drm_uninit(struct device *dev) */ if (ddev->registered) { drm_dev_unregister(ddev); - drm_atomic_helper_shutdown(ddev); + if (priv->kms) + drm_atomic_helper_shutdown(ddev); } /* We must cancel and cleanup any pending vblank enable/disable @@ -222,30 +86,13 @@ static int msm_drm_uninit(struct device *dev) flush_workqueue(priv->wq); - /* clean up event worker threads */ - for (i = 0; i < priv->num_crtcs; i++) { - if (priv->event_thread[i].worker) - kthread_destroy_worker(priv->event_thread[i].worker); - } - msm_gem_shrinker_cleanup(ddev); - drm_kms_helper_poll_fini(ddev); - msm_perf_debugfs_cleanup(priv); msm_rd_debugfs_cleanup(priv); - if (kms) - msm_disp_snapshot_destroy(ddev); - - if (kms) { - pm_runtime_get_sync(dev); - msm_irq_uninstall(ddev); - pm_runtime_put_sync(dev); - } - - if (kms && kms->funcs) - kms->funcs->destroy(kms); + if (priv->kms) + msm_drm_kms_uninit(dev); msm_deinit_vram(ddev); @@ -259,42 +106,6 @@ static int msm_drm_uninit(struct device *dev) return 0; } -struct msm_gem_address_space *msm_kms_init_aspace(struct drm_device *dev) -{ - struct msm_gem_address_space *aspace; - struct msm_mmu *mmu; - struct device *mdp_dev = dev->dev; - struct device *mdss_dev = mdp_dev->parent; - struct device *iommu_dev; - - /* - * IOMMUs can be a part of MDSS device tree binding, or the - * MDP/DPU device. - */ - if (device_iommu_mapped(mdp_dev)) - iommu_dev = mdp_dev; - else - iommu_dev = mdss_dev; - - mmu = msm_iommu_new(iommu_dev, 0); - if (IS_ERR(mmu)) - return ERR_CAST(mmu); - - if (!mmu) { - drm_info(dev, "no IOMMU, fallback to phys contig buffers for scanout\n"); - return NULL; - } - - aspace = msm_gem_address_space_create(mmu, "mdp_kms", - 0x1000, 0x100000000 - 0x1000); - if (IS_ERR(aspace)) { - dev_err(mdp_dev, "aspace create, error %pe\n", aspace); - mmu->funcs->destroy(mmu); - } - - return aspace; -} - bool msm_use_mmu(struct drm_device *dev) { struct msm_drm_private *priv = dev->dev_private; @@ -400,8 +211,7 @@ static int msm_drm_init(struct device *dev, const struct drm_driver *drv) { struct msm_drm_private *priv = dev_get_drvdata(dev); struct drm_device *ddev; - struct msm_kms *kms; - int ret, i; + int ret; if (drm_firmware_drivers_only()) return -ENODEV; @@ -437,9 +247,11 @@ static int msm_drm_init(struct device *dev, const struct drm_driver *drv) might_lock(&priv->lru.lock); fs_reclaim_release(GFP_KERNEL); - ret = drmm_mode_config_init(ddev); - if (ret) - goto err_destroy_wq; + if (priv->kms_init) { + ret = drmm_mode_config_init(ddev); + if (ret) + goto err_destroy_wq; + } ret = msm_init_vram(ddev); if (ret) @@ -452,95 +264,32 @@ static int msm_drm_init(struct device *dev, const struct drm_driver *drv) if (ret) goto err_deinit_vram; - /* the fw fb could be anywhere in memory */ - ret = drm_aperture_remove_framebuffers(drv); - if (ret) - goto err_msm_uninit; - msm_gem_shrinker_init(ddev); if (priv->kms_init) { - ret = priv->kms_init(ddev); - if (ret) { - DRM_DEV_ERROR(dev, "failed to load kms\n"); - priv->kms = NULL; + ret = msm_drm_kms_init(dev, drv); + if (ret) goto err_msm_uninit; - } - kms = priv->kms; } else { /* valid only for the dummy headless case, where of_node=NULL */ WARN_ON(dev->of_node); - kms = NULL; - } - - /* Enable normalization of plane zpos */ - ddev->mode_config.normalize_zpos = true; - - if (kms) { - kms->dev = ddev; - ret = kms->funcs->hw_init(kms); - if (ret) { - DRM_DEV_ERROR(dev, "kms hw init failed: %d\n", ret); - goto err_msm_uninit; - } - } - - drm_helper_move_panel_connectors_to_head(ddev); - - ddev->mode_config.funcs = &mode_config_funcs; - ddev->mode_config.helper_private = &mode_config_helper_funcs; - - for (i = 0; i < priv->num_crtcs; i++) { - /* initialize event thread */ - priv->event_thread[i].crtc_id = priv->crtcs[i]->base.id; - priv->event_thread[i].dev = ddev; - priv->event_thread[i].worker = kthread_create_worker(0, - "crtc_event:%d", priv->event_thread[i].crtc_id); - if (IS_ERR(priv->event_thread[i].worker)) { - ret = PTR_ERR(priv->event_thread[i].worker); - DRM_DEV_ERROR(dev, "failed to create crtc_event kthread\n"); - priv->event_thread[i].worker = NULL; - goto err_msm_uninit; - } - - sched_set_fifo(priv->event_thread[i].worker->task); - } - - ret = drm_vblank_init(ddev, priv->num_crtcs); - if (ret < 0) { - DRM_DEV_ERROR(dev, "failed to initialize vblank\n"); - goto err_msm_uninit; - } - - if (kms) { - pm_runtime_get_sync(dev); - ret = msm_irq_install(ddev, kms->irq); - pm_runtime_put_sync(dev); - if (ret < 0) { - DRM_DEV_ERROR(dev, "failed to install IRQ handler\n"); - goto err_msm_uninit; - } + ddev->driver_features &= ~DRIVER_MODESET; + ddev->driver_features &= ~DRIVER_ATOMIC; } ret = drm_dev_register(ddev, 0); if (ret) goto err_msm_uninit; - if (kms) { - ret = msm_disp_snapshot_init(ddev); - if (ret) - DRM_DEV_ERROR(dev, "msm_disp_snapshot_init failed ret = %d\n", ret); - } - drm_mode_config_reset(ddev); - ret = msm_debugfs_late_init(ddev); if (ret) goto err_msm_uninit; - drm_kms_helper_poll_init(ddev); + if (priv->kms_init) { + drm_kms_helper_poll_init(ddev); - if (kms) msm_fbdev_setup(ddev); + } return 0; @@ -631,30 +380,6 @@ static void msm_postclose(struct drm_device *dev, struct drm_file *file) context_close(ctx); } -int msm_crtc_enable_vblank(struct drm_crtc *crtc) -{ - struct drm_device *dev = crtc->dev; - unsigned int pipe = crtc->index; - struct msm_drm_private *priv = dev->dev_private; - struct msm_kms *kms = priv->kms; - if (!kms) - return -ENXIO; - drm_dbg_vbl(dev, "crtc=%u", pipe); - return vblank_ctrl_queue_work(priv, pipe, true); -} - -void msm_crtc_disable_vblank(struct drm_crtc *crtc) -{ - struct drm_device *dev = crtc->dev; - unsigned int pipe = crtc->index; - struct msm_drm_private *priv = dev->dev_private; - struct msm_kms *kms = priv->kms; - if (!kms) - return; - drm_dbg_vbl(dev, "crtc=%u", pipe); - vblank_ctrl_queue_work(priv, pipe, false); -} - /* * DRM ioctls: */ @@ -1100,28 +825,6 @@ static const struct drm_driver msm_driver = { .patchlevel = MSM_VERSION_PATCHLEVEL, }; -int msm_kms_pm_prepare(struct device *dev) -{ - struct msm_drm_private *priv = dev_get_drvdata(dev); - struct drm_device *ddev = priv ? priv->dev : NULL; - - if (!priv || !priv->kms) - return 0; - - return drm_mode_config_helper_suspend(ddev); -} - -void msm_kms_pm_complete(struct device *dev) -{ - struct msm_drm_private *priv = dev_get_drvdata(dev); - struct drm_device *ddev = priv ? priv->dev : NULL; - - if (!priv || !priv->kms) - return; - - drm_mode_config_helper_resume(ddev); -} - /* * Componentized driver support: */ @@ -1280,22 +983,6 @@ static int msm_pdev_remove(struct platform_device *pdev) return 0; } -void msm_kms_shutdown(struct platform_device *pdev) -{ - struct msm_drm_private *priv = platform_get_drvdata(pdev); - struct drm_device *drm = priv ? priv->dev : NULL; - - /* - * Shutdown the hw if we're far enough along where things might be on. - * If we run this too early, we'll end up panicking in any variety of - * places. Since we don't register the drm device until late in - * msm_drm_init, drm_dev->registered is used as an indicator that the - * shutdown will be successful. - */ - if (drm && drm->registered && priv->kms) - drm_atomic_helper_shutdown(drm); -} - static struct platform_driver msm_platform_driver = { .probe = msm_pdev_probe, .remove = msm_pdev_remove, diff --git a/drivers/gpu/drm/msm/msm_kms.c b/drivers/gpu/drm/msm/msm_kms.c new file mode 100644 index 000000000000..00ec30ab2381 --- /dev/null +++ b/drivers/gpu/drm/msm/msm_kms.c @@ -0,0 +1,345 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * Copyright (c) 2016-2018, 2020-2021 The Linux Foundation. All rights reserved. + * Copyright (C) 2013 Red Hat + * Author: Rob Clark + */ + +#include +#include +#include + +#include +#include +#include +#include + +#include "disp/msm_disp_snapshot.h" +#include "msm_drv.h" +#include "msm_gem.h" +#include "msm_kms.h" +#include "msm_mmu.h" + +static const struct drm_mode_config_funcs mode_config_funcs = { + .fb_create = msm_framebuffer_create, + .atomic_check = msm_atomic_check, + .atomic_commit = drm_atomic_helper_commit, +}; + +static const struct drm_mode_config_helper_funcs mode_config_helper_funcs = { + .atomic_commit_tail = msm_atomic_commit_tail, +}; + +static irqreturn_t msm_irq(int irq, void *arg) +{ + struct drm_device *dev = arg; + struct msm_drm_private *priv = dev->dev_private; + struct msm_kms *kms = priv->kms; + + BUG_ON(!kms); + + return kms->funcs->irq(kms); +} + +static void msm_irq_preinstall(struct drm_device *dev) +{ + struct msm_drm_private *priv = dev->dev_private; + struct msm_kms *kms = priv->kms; + + BUG_ON(!kms); + + kms->funcs->irq_preinstall(kms); +} + +static int msm_irq_postinstall(struct drm_device *dev) +{ + struct msm_drm_private *priv = dev->dev_private; + struct msm_kms *kms = priv->kms; + + BUG_ON(!kms); + + if (kms->funcs->irq_postinstall) + return kms->funcs->irq_postinstall(kms); + + return 0; +} + +static int msm_irq_install(struct drm_device *dev, unsigned int irq) +{ + struct msm_drm_private *priv = dev->dev_private; + struct msm_kms *kms = priv->kms; + int ret; + + if (irq == IRQ_NOTCONNECTED) + return -ENOTCONN; + + msm_irq_preinstall(dev); + + ret = request_irq(irq, msm_irq, 0, dev->driver->name, dev); + if (ret) + return ret; + + kms->irq_requested = true; + + ret = msm_irq_postinstall(dev); + if (ret) { + free_irq(irq, dev); + return ret; + } + + return 0; +} + +static void msm_irq_uninstall(struct drm_device *dev) +{ + struct msm_drm_private *priv = dev->dev_private; + struct msm_kms *kms = priv->kms; + + kms->funcs->irq_uninstall(kms); + if (kms->irq_requested) + free_irq(kms->irq, dev); +} + +struct msm_vblank_work { + struct work_struct work; + int crtc_id; + bool enable; + struct msm_drm_private *priv; +}; + +static void vblank_ctrl_worker(struct work_struct *work) +{ + struct msm_vblank_work *vbl_work = container_of(work, + struct msm_vblank_work, work); + struct msm_drm_private *priv = vbl_work->priv; + struct msm_kms *kms = priv->kms; + + if (vbl_work->enable) + kms->funcs->enable_vblank(kms, priv->crtcs[vbl_work->crtc_id]); + else + kms->funcs->disable_vblank(kms, priv->crtcs[vbl_work->crtc_id]); + + kfree(vbl_work); +} + +static int vblank_ctrl_queue_work(struct msm_drm_private *priv, + int crtc_id, bool enable) +{ + struct msm_vblank_work *vbl_work; + + vbl_work = kzalloc(sizeof(*vbl_work), GFP_ATOMIC); + if (!vbl_work) + return -ENOMEM; + + INIT_WORK(&vbl_work->work, vblank_ctrl_worker); + + vbl_work->crtc_id = crtc_id; + vbl_work->enable = enable; + vbl_work->priv = priv; + + queue_work(priv->wq, &vbl_work->work); + + return 0; +} + +int msm_crtc_enable_vblank(struct drm_crtc *crtc) +{ + struct drm_device *dev = crtc->dev; + unsigned int pipe = crtc->index; + struct msm_drm_private *priv = dev->dev_private; + struct msm_kms *kms = priv->kms; + if (!kms) + return -ENXIO; + drm_dbg_vbl(dev, "crtc=%u", pipe); + return vblank_ctrl_queue_work(priv, pipe, true); +} + +void msm_crtc_disable_vblank(struct drm_crtc *crtc) +{ + struct drm_device *dev = crtc->dev; + unsigned int pipe = crtc->index; + struct msm_drm_private *priv = dev->dev_private; + struct msm_kms *kms = priv->kms; + if (!kms) + return; + drm_dbg_vbl(dev, "crtc=%u", pipe); + vblank_ctrl_queue_work(priv, pipe, false); +} + +struct msm_gem_address_space *msm_kms_init_aspace(struct drm_device *dev) +{ + struct msm_gem_address_space *aspace; + struct msm_mmu *mmu; + struct device *mdp_dev = dev->dev; + struct device *mdss_dev = mdp_dev->parent; + struct device *iommu_dev; + + /* + * IOMMUs can be a part of MDSS device tree binding, or the + * MDP/DPU device. + */ + if (device_iommu_mapped(mdp_dev)) + iommu_dev = mdp_dev; + else + iommu_dev = mdss_dev; + + mmu = msm_iommu_new(iommu_dev, 0); + if (IS_ERR(mmu)) + return ERR_CAST(mmu); + + if (!mmu) { + drm_info(dev, "no IOMMU, fallback to phys contig buffers for scanout\n"); + return NULL; + } + + aspace = msm_gem_address_space_create(mmu, "mdp_kms", + 0x1000, 0x100000000 - 0x1000); + if (IS_ERR(aspace)) { + dev_err(mdp_dev, "aspace create, error %pe\n", aspace); + mmu->funcs->destroy(mmu); + } + + return aspace; +} + +void msm_drm_kms_uninit(struct device *dev) +{ + struct platform_device *pdev = to_platform_device(dev); + struct msm_drm_private *priv = platform_get_drvdata(pdev); + struct drm_device *ddev = priv->dev; + struct msm_kms *kms = priv->kms; + int i; + + BUG_ON(!kms); + + /* clean up event worker threads */ + for (i = 0; i < priv->num_crtcs; i++) { + if (priv->event_thread[i].worker) + kthread_destroy_worker(priv->event_thread[i].worker); + } + + drm_kms_helper_poll_fini(ddev); + + msm_disp_snapshot_destroy(ddev); + + pm_runtime_get_sync(dev); + msm_irq_uninstall(ddev); + pm_runtime_put_sync(dev); + + if (kms && kms->funcs) + kms->funcs->destroy(kms); +} + +int msm_drm_kms_init(struct device *dev, const struct drm_driver *drv) +{ + struct msm_drm_private *priv = dev_get_drvdata(dev); + struct drm_device *ddev = priv->dev; + struct msm_kms *kms = priv->kms; + int ret, i; + + /* the fw fb could be anywhere in memory */ + ret = drm_aperture_remove_framebuffers(drv); + if (ret) + return ret; + + ret = priv->kms_init(ddev); + if (ret) { + DRM_DEV_ERROR(dev, "failed to load kms\n"); + priv->kms = NULL; + return ret; + } + + /* Enable normalization of plane zpos */ + ddev->mode_config.normalize_zpos = true; + + ddev->mode_config.funcs = &mode_config_funcs; + ddev->mode_config.helper_private = &mode_config_helper_funcs; + + kms->dev = ddev; + ret = kms->funcs->hw_init(kms); + if (ret) { + DRM_DEV_ERROR(dev, "kms hw init failed: %d\n", ret); + goto err_msm_uninit; + } + + drm_helper_move_panel_connectors_to_head(ddev); + + for (i = 0; i < priv->num_crtcs; i++) { + /* initialize event thread */ + priv->event_thread[i].crtc_id = priv->crtcs[i]->base.id; + priv->event_thread[i].dev = ddev; + priv->event_thread[i].worker = kthread_create_worker(0, + "crtc_event:%d", priv->event_thread[i].crtc_id); + if (IS_ERR(priv->event_thread[i].worker)) { + ret = PTR_ERR(priv->event_thread[i].worker); + DRM_DEV_ERROR(dev, "failed to create crtc_event kthread\n"); + priv->event_thread[i].worker = NULL; + goto err_msm_uninit; + } + + sched_set_fifo(priv->event_thread[i].worker->task); + } + + ret = drm_vblank_init(ddev, priv->num_crtcs); + if (ret < 0) { + DRM_DEV_ERROR(dev, "failed to initialize vblank\n"); + goto err_msm_uninit; + } + + pm_runtime_get_sync(dev); + ret = msm_irq_install(ddev, kms->irq); + pm_runtime_put_sync(dev); + if (ret < 0) { + DRM_DEV_ERROR(dev, "failed to install IRQ handler\n"); + goto err_msm_uninit; + } + + ret = msm_disp_snapshot_init(ddev); + if (ret) + DRM_DEV_ERROR(dev, "msm_disp_snapshot_init failed ret = %d\n", ret); + + drm_mode_config_reset(ddev); + + return 0; + +err_msm_uninit: + return ret; +} + +int msm_kms_pm_prepare(struct device *dev) +{ + struct msm_drm_private *priv = dev_get_drvdata(dev); + struct drm_device *ddev = priv ? priv->dev : NULL; + + if (!priv || !priv->kms) + return 0; + + return drm_mode_config_helper_suspend(ddev); +} + +void msm_kms_pm_complete(struct device *dev) +{ + struct msm_drm_private *priv = dev_get_drvdata(dev); + struct drm_device *ddev = priv ? priv->dev : NULL; + + if (!priv || !priv->kms) + return; + + drm_mode_config_helper_resume(ddev); +} + +void msm_kms_shutdown(struct platform_device *pdev) +{ + struct msm_drm_private *priv = platform_get_drvdata(pdev); + struct drm_device *drm = priv ? priv->dev : NULL; + + /* + * Shutdown the hw if we're far enough along where things might be on. + * If we run this too early, we'll end up panicking in any variety of + * places. Since we don't register the drm device until late in + * msm_drm_init, drm_dev->registered is used as an indicator that the + * shutdown will be successful. + */ + if (drm && drm->registered && priv->kms) + drm_atomic_helper_shutdown(drm); +} diff --git a/drivers/gpu/drm/msm/msm_kms.h b/drivers/gpu/drm/msm/msm_kms.h index 086a3f1ff956..44aa435d68ce 100644 --- a/drivers/gpu/drm/msm/msm_kms.h +++ b/drivers/gpu/drm/msm/msm_kms.h @@ -195,4 +195,7 @@ static inline void msm_kms_destroy(struct msm_kms *kms) drm_for_each_crtc_reverse(crtc, dev) \ for_each_if (drm_crtc_mask(crtc) & (crtc_mask)) +int msm_drm_kms_init(struct device *dev, const struct drm_driver *drv); +void msm_drm_kms_uninit(struct device *dev); + #endif /* __MSM_KMS_H__ */