From patchwork Wed Feb 28 11:09:30 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jyri Sarha X-Patchwork-Id: 129945 Delivered-To: patch@linaro.org Received: by 10.46.66.2 with SMTP id p2csp892603lja; Wed, 28 Feb 2018 03:09:45 -0800 (PST) X-Google-Smtp-Source: AG47ELvQ/U2ixKs8raP6Jfr+M63/PJQ3EYgQHcHMJ6SYO83y1yfbET+ZSHzan0yBujjWuAWYOri0 X-Received: by 10.167.129.129 with SMTP id g1mr3783227pfi.224.1519816185751; Wed, 28 Feb 2018 03:09:45 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519816185; cv=none; d=google.com; s=arc-20160816; b=BgaQaV/BH/fxEMI7cVurgIy/SzHyTfNTrozuZM7/8fHfxeENn+PiSp2scLoy49f8yb NDk1I3ib2I/KdEQg6cRAHg30E69mE+c1qe5b/TsFId9CtGCzdCJQnNtNtIrmiOA5AssD uOBT4Dxl1fECH/JdSmH82JxD+ReCirrhM5yu1auKMOygt6nJwWGT0ChveuC/ONd/kK1s p7wC5xNR6jj7gJqi8bB/degGXMszOk/J8Fx5YFv27gSxnw/LIH6hKAwNBsQRRS+tOSPt 1Xk9pFav2ABUed8v3oGxz9eUa8AQnUmvfoGjLbzqnojbi4rAUfCecBqmt8wQ5z95J8PF SY9g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:mime-version:references:in-reply-to:message-id:date :subject:to:from:dkim-signature:delivered-to :arc-authentication-results; bh=VczypQkcLXU1Qqy2qvWg91eNJqLj0g2R91G3bkcpPTk=; b=UQqk9ii2y5UW7HrM4iqJjSAiBPnw2Ysdr83HObf/8OKWIcfRZlgCj0tgEOnYYMjpPr ezmADqI9A9iR8ZB3ANhDjvBHCjt1asGweO7GRGEQINTCnt8IMoJvGBuOGfZzNgF3yS5c 0Ej5UaipQ0c13Fi/F5AMn/F4ENGD2qcwMmo6FLpKacOjIwv5DV6spf81oE6J3hO9+ADs sEE3adNzaVnUn8Wf9NYFQ3Wm1fXslloWk5lhDniFlH1ekS4US1lWHCiaqGgQ7PwDhYie W+fMuTf7AUierwsBfW7IRDrhEXFRiqehW2v7/ST66n3tMMI2Uugne1BNln7k6HWeGCkX XfsA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@ti.com header.s=ti-com-17Q1 header.b=MDsUtA6p; spf=pass (google.com: best guess record for domain of dri-devel-bounces@lists.freedesktop.org designates 131.252.210.177 as permitted sender) smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org; dmarc=fail (p=QUARANTINE sp=NONE dis=NONE) header.from=ti.com Return-Path: Received: from gabe.freedesktop.org (gabe.freedesktop.org. [131.252.210.177]) by mx.google.com with ESMTPS id v31-v6si1131155plg.570.2018.02.28.03.09.45 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 28 Feb 2018 03:09:45 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of dri-devel-bounces@lists.freedesktop.org designates 131.252.210.177 as permitted sender) client-ip=131.252.210.177; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@ti.com header.s=ti-com-17Q1 header.b=MDsUtA6p; spf=pass (google.com: best guess record for domain of dri-devel-bounces@lists.freedesktop.org designates 131.252.210.177 as permitted sender) smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org; dmarc=fail (p=QUARANTINE sp=NONE dis=NONE) header.from=ti.com Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 941766E943; Wed, 28 Feb 2018 11:09:43 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from fllnx210.ext.ti.com (fllnx210.ext.ti.com [198.47.19.17]) by gabe.freedesktop.org (Postfix) with ESMTPS id A11B06E93A for ; Wed, 28 Feb 2018 11:09:40 +0000 (UTC) Received: from dlelxv90.itg.ti.com ([172.17.2.17]) by fllnx210.ext.ti.com (8.15.1/8.15.1) with ESMTP id w1SB9cMc020331; Wed, 28 Feb 2018 05:09:38 -0600 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ti.com; s=ti-com-17Q1; t=1519816179; bh=hlhkMp/yZ0KDQa9HcqUca3cNYKb7QFwCwf5ttdi9CPU=; h=From:To:CC:Subject:Date:In-Reply-To:References; b=MDsUtA6pazB3S0HL+gGPXTIZvnfrFj3zZQxkMhN9fFgY49hsmW8J5W/fw8hPgkdBR a0jNJXjSNCqMCfNutHf6eP7doGPuNvT3aRBwpPwBDu6wlCbl9P1qdFPW78vW8ylECW 4R7TOpItanvwQ7ACdsU5dZmDNPuggF2IgaYZHCCI= Received: from DFLE103.ent.ti.com (dfle103.ent.ti.com [10.64.6.24]) by dlelxv90.itg.ti.com (8.14.3/8.13.8) with ESMTP id w1SB9cV7010522; Wed, 28 Feb 2018 05:09:38 -0600 Received: from DFLE111.ent.ti.com (10.64.6.32) by DFLE103.ent.ti.com (10.64.6.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1261.35; Wed, 28 Feb 2018 05:09:38 -0600 Received: from dflp32.itg.ti.com (10.64.6.15) by DFLE111.ent.ti.com (10.64.6.32) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.1261.35 via Frontend Transport; Wed, 28 Feb 2018 05:09:38 -0600 Received: from jadmar.ti.com (ileax41-snat.itg.ti.com [10.172.224.153]) by dflp32.itg.ti.com (8.14.3/8.13.8) with ESMTP id w1SB9WKG009418; Wed, 28 Feb 2018 05:09:37 -0600 From: Jyri Sarha To: Subject: [PATCH v2 2/2] drm/panel: Add device_link from panel device to drm device Date: Wed, 28 Feb 2018 13:09:30 +0200 Message-ID: X-Mailer: git-send-email 2.7.4 In-Reply-To: References: MIME-Version: 1.0 X-EXCLAIMER-MD-CONFIG: e1e8a2fd-e40a-4ac6-ac9b-f7e9cc9ee180 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: airlied@linux.ie, Jyri Sarha , tomi.valkeinen@ti.com, thierry.reding@gmail.com Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Add device_link from panel device (supplier) to drm device (consumer) with DL_FLAG_AUTOREMOVE when drm_panel_attach() is called. Currently the master drm driver is not protected against the attached. The device_link with DL_FLAG_AUTOREMOVE should make sure the drm device is unbound before the panel driver becomes unavailable. The device_link is removed when drm_panel_detach() is called. The drm_panel_detach() should be called by the panel driver it self when it is removed. Otherwise the both driver are racing to delete the same link. Signed-off-by: Jyri Sarha Reviewed-by: Eric Anholt --- drivers/gpu/drm/drm_panel.c | 12 ++++++++++++ include/drm/drm_panel.h | 1 + 2 files changed, 13 insertions(+) diff --git a/drivers/gpu/drm/drm_panel.c b/drivers/gpu/drm/drm_panel.c index 308d442..afa8337 100644 --- a/drivers/gpu/drm/drm_panel.c +++ b/drivers/gpu/drm/drm_panel.c @@ -24,6 +24,7 @@ #include #include +#include #include #include @@ -98,9 +99,18 @@ EXPORT_SYMBOL(drm_panel_remove); */ int drm_panel_attach(struct drm_panel *panel, struct drm_connector *connector) { + u32 flags = DL_FLAG_AUTOREMOVE; + if (panel->connector) return -EBUSY; + panel->link = device_link_add(connector->dev->dev, panel->dev, flags); + if (!panel->link) { + dev_err(panel->dev, "failed to link panel to %s\n", + dev_name(connector->dev->dev)); + return -EINVAL; + } + panel->connector = connector; panel->drm = connector->dev; @@ -119,6 +129,8 @@ EXPORT_SYMBOL(drm_panel_attach); */ int drm_panel_detach(struct drm_panel *panel) { + device_link_del(panel->link); + panel->connector = NULL; panel->drm = NULL; diff --git a/include/drm/drm_panel.h b/include/drm/drm_panel.h index 14ac240..26a1b5f 100644 --- a/include/drm/drm_panel.h +++ b/include/drm/drm_panel.h @@ -89,6 +89,7 @@ struct drm_panel { struct drm_device *drm; struct drm_connector *connector; struct device *dev; + struct device_link *link; const struct drm_panel_funcs *funcs;