From patchwork Fri May 24 10:41:10 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jagan Teki X-Patchwork-Id: 430 Return-Path: X-Original-To: linux-amarula@patchwork.amarulasolutions.com Delivered-To: linux-amarula@patchwork.amarulasolutions.com Received: from mail-pg1-f200.google.com (mail-pg1-f200.google.com [209.85.215.200]) by ganimede.amarulasolutions.com (Postfix) with ESMTPS id D3D103F069 for ; Fri, 24 May 2019 12:41:50 +0200 (CEST) Received: by mail-pg1-f200.google.com with SMTP id e16sf6024671pga.4 for ; Fri, 24 May 2019 03:41:50 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1558694509; cv=pass; d=google.com; s=arc-20160816; b=ltrVYEcOWy5+Bhno8chU5uFbNwAxFPtbXYIUfs5w5W6Ctw1emWJDqJUwwflZ7mKoK6 azqKWJoMsByx086lgmp1JCpkcLXnFOpGaBWOiX+dVZnzKZCG4knKObhEGF+CpdEHrGO6 46XwPWRd6uyGrvMm/0MzGK9YReo6eunpM4fYkwjRPLXI8w9Dt+usBv8uPWFRPaqOC+XN Sy7BpTzl+VbAV2NWBQW9sufXkmxJIYWIEmbix3N/u7ocf8pO78i2BYwiM4+eIOygYYcH hfazQ3hqFC7BtmcjjbKss76CPY5ypM0w6XrUYFEbzJfk04diNDC6pFn724VyI2D6Mme1 s3vw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-unsubscribe:list-archive:list-help:list-post:list-id :mailing-list:precedence:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=F2X9FXRCRjkMZOyEtKkfaG3J6tW7iDd/8edXMIvv+fk=; b=hJgKZ1mnUg09XpbDOTlY40BtT5OGCWNrPfmh2KMHa5+5jhX5/ss3iCDr0aL8Z3fnau MBaQFXsG7ouxOnD6vZ1aG9kgNdOl0RnIr9BQL5jS6rDDLIKaWFLM4DyyFlWpWIcLLdoE U5hgTtGSiI0qU64nlyk6ijIL18LugKOrP6H+sRoPIUngP0MjTBFJVu9sc7kaahn/EwNS Fa5wf+1r2HXQCi3xp0GbMLrhFAzMZq+ypzaf86uY5Z93wBIOCOqnhO7nxv4+qbXiY14D 9iNSK6qhi85kWcAOfgfyAEgsdoAAiU4+qj888OWVWavK3ba4TebRAwbD4gqK/HzW+/Pd D2lQ== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=U3C+2Pkv; spf=pass (google.com: domain of jagan@amarulasolutions.com designates 209.85.220.65 as permitted sender) smtp.mailfrom=jagan@amarulasolutions.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amarulasolutions.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:x-original-sender:x-original-authentication-results :precedence:mailing-list:list-id:list-post:list-help:list-archive :list-unsubscribe; bh=F2X9FXRCRjkMZOyEtKkfaG3J6tW7iDd/8edXMIvv+fk=; b=DV3ITDcl/TCIFOsjaMcot4Mie6zUczsUYPOZYQcj89de7Xk3vFDUlKEda85g11J5yF G7ZfTSYSfI7PXX856wttNlok6ylfmLqhMMJ8CkER2o2RdYYVdWG3VbOP+E5M/TIcDK2C npj22sK88HW4SoJGI3usl9VwgrXHmhvGNPf3A= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:x-original-sender :x-original-authentication-results:precedence:mailing-list:list-id :x-spam-checked-in-group:list-post:list-help:list-archive :list-unsubscribe; bh=F2X9FXRCRjkMZOyEtKkfaG3J6tW7iDd/8edXMIvv+fk=; b=Ip9bFnBJheUduuRlY93//kz9vXi+X4d7R6lS7heJXJAFtqElMNAKAMmedERK4Uuc2j /F3d/bJma38xNffhlx5Yjm55E2DxeP+UHaeHp1E62ZAhBMy7Y2MM/omeCRujn0IPLPwV uP0zh1ctTSIrwwW09asOPXMWqRvTyke5+E1fkWHHry8pBswa0kzxLWaQuy44YlfSlHjv Jj9CkZsBhJPLG5PL/DKkkTi7jgBzMFDC75/xP0148wcqS5diXxAfr1a3t3bFGk7KvwUd zeroTrL+maOcJcCA0WaZHgGPwBvMqX72B6SbxxXxcnfCcNzQQ0W/QTlLXX6h5J2tSvN1 f1Yw== X-Gm-Message-State: APjAAAXgHD2LDjwORjoZaDGCzP3gvz5xfitUW+1RIRxjoImbfOzRsVuE s6ErY26TfKeaSRRDsuBPoMogvqak X-Google-Smtp-Source: APXvYqxzsSESmOyTe3cBNdHQERg6VQpMHrvXfYg0JYdp8oMrFhBDOn9pKSyCqovqRGNgITXG6hO/YQ== X-Received: by 2002:aa7:9afc:: with SMTP id y28mr111457340pfp.101.1558694509697; Fri, 24 May 2019 03:41:49 -0700 (PDT) X-BeenThere: linux-amarula@amarulasolutions.com Received: by 2002:a65:4c86:: with SMTP id m6ls817646pgt.11.gmail; Fri, 24 May 2019 03:41:49 -0700 (PDT) X-Received: by 2002:a63:560d:: with SMTP id k13mr103838509pgb.124.1558694509359; Fri, 24 May 2019 03:41:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1558694509; cv=none; d=google.com; s=arc-20160816; b=ZKJ0Ziuelwov2FuR3rHb52I2NIXEkoTffUVsA5dLjzFi7V4pXW1kV6Rm3EFrTeX8gx 9uAmMk26ppb4H4q196rRTST1PGAfT0GqpCThjogKPeqHqOHN1ibFzmnb0sWAuovMpFfb PhIIvNhYszAACz5qL3r6M1oX0S4F6jOqUXNfM1DzHQlnIOaNOAkzJMO5AmcVGFuJs3Ej zTP9sIjEGiM9s2B2cFGQjqQ5WegvTO9SmN+CGcB5QXEMBxr0rcQ51OmPcOwvlh9of+0d W/CbjXVdAWgQySdx5UEU0B58YEeA0QJbMry6bsmD4oNikrl754qInjiwwlFlABR581vf M6ew== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=Y5swjDHGKG+ezs/+w53g29T0/qBVH9yKlg23nn55c5E=; b=KI1FAeN/YgCyReDUYetlOZI0PAWl8fZaRNH2HUgk/77wzK5yvsytZ0e0ox66GUbLTG 5JeN5rP2h5Q8WKPBfY3rdEhVkcYeT3OKCyYK1yaApbQ+5N9llx8cAYe+7J2Ra3lNvl5u Y2X/hcRofyaZ7VlMf9XckqDFcAkRXaxZ/6LautFgFYBiIZuu1Lmajtf1AYxgGkoZH061 tbLjoG75py5XoMbPs5gZV/X/Dr9yAgtKWVydaGBIhbi5PMqHh/Uf5rUA1Og/GUgCCW9t 3XTYsWui4WzY4HaQYp06qz8+ADdxXdOA0gpgJcjXxg6G1LtQAJaOwnThzYK0GNXl1pO7 mC0g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=U3C+2Pkv; spf=pass (google.com: domain of jagan@amarulasolutions.com designates 209.85.220.65 as permitted sender) smtp.mailfrom=jagan@amarulasolutions.com Received: from mail-sor-f65.google.com (mail-sor-f65.google.com. [209.85.220.65]) by mx.google.com with SMTPS id s193sor2400404pfs.6.2019.05.24.03.41.49 for (Google Transport Security); Fri, 24 May 2019 03:41:49 -0700 (PDT) Received-SPF: pass (google.com: domain of jagan@amarulasolutions.com designates 209.85.220.65 as permitted sender) client-ip=209.85.220.65; X-Received: by 2002:a63:9d8d:: with SMTP id i135mr104296236pgd.245.1558694509078; Fri, 24 May 2019 03:41:49 -0700 (PDT) Received: from localhost.localdomain ([183.82.227.60]) by smtp.gmail.com with ESMTPSA id m72sm6550113pjb.7.2019.05.24.03.41.43 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 24 May 2019 03:41:48 -0700 (PDT) From: Jagan Teki To: Andrzej Hajda , Laurent Pinchart , Chen-Yu Tsai , Maxime Ripard , David Airlie , Daniel Vetter , Rob Herring , Mark Rutland Cc: Michael Trimarchi , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@googlegroups.com, linux-amarula@amarulasolutions.com, Jagan Teki , Paul Kocialkowski Subject: [PATCH v2 1/6] drm/sun4i: dsi: Use drm panel_or_bridge call Date: Fri, 24 May 2019 16:11:10 +0530 Message-Id: <20190524104115.20161-2-jagan@amarulasolutions.com> X-Mailer: git-send-email 2.18.0.321.gffc6fa0e3 In-Reply-To: <20190524104115.20161-1-jagan@amarulasolutions.com> References: <20190524104115.20161-1-jagan@amarulasolutions.com> MIME-Version: 1.0 X-Original-Sender: jagan@amarulasolutions.com X-Original-Authentication-Results: mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=U3C+2Pkv; spf=pass (google.com: domain of jagan@amarulasolutions.com designates 209.85.220.65 as permitted sender) smtp.mailfrom=jagan@amarulasolutions.com Content-Type: text/plain; charset="UTF-8" Precedence: list Mailing-list: list linux-amarula@amarulasolutions.com; contact linux-amarula+owners@amarulasolutions.com List-ID: X-Spam-Checked-In-Group: linux-amarula@amarulasolutions.com X-Google-Group-Id: 476853432473 List-Post: , List-Help: , List-Archive: List-Unsubscribe: , Right now the driver is finding the panel using of_drm_find_panel, replace the same with drm_of_find_panel_or_bridge which would help to find the panel or bridge on the same call if bridge support added in future. Added NULL in bridge argument, same will replace with bridge parameter once bridge supported. Cc: Paul Kocialkowski Signed-off-by: Jagan Teki --- drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c b/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c index 65771e9a343a..ae2fe31b05b1 100644 --- a/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c +++ b/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c @@ -21,6 +21,7 @@ #include #include #include +#include #include #include @@ -964,11 +965,13 @@ static int sun6i_dsi_attach(struct mipi_dsi_host *host, struct mipi_dsi_device *device) { struct sun6i_dsi *dsi = host_to_sun6i_dsi(host); + int ret; dsi->device = device; - dsi->panel = of_drm_find_panel(device->dev.of_node); - if (IS_ERR(dsi->panel)) - return PTR_ERR(dsi->panel); + ret = drm_of_find_panel_or_bridge(host->dev->of_node, 0, 0, + &dsi->panel, NULL); + if (ret) + return ret; dev_info(host->dev, "Attached device %s\n", device->name); From patchwork Fri May 24 10:42:52 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jagan Teki X-Patchwork-Id: 431 Return-Path: X-Original-To: linux-amarula@patchwork.amarulasolutions.com Delivered-To: linux-amarula@patchwork.amarulasolutions.com Received: from mail-pl1-f197.google.com (mail-pl1-f197.google.com [209.85.214.197]) by ganimede.amarulasolutions.com (Postfix) with ESMTPS id E672E3F069 for ; Fri, 24 May 2019 12:43:09 +0200 (CEST) Received: by mail-pl1-f197.google.com with SMTP id cc5sf5589355plb.12 for ; Fri, 24 May 2019 03:43:09 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1558694588; cv=pass; d=google.com; s=arc-20160816; b=bH+nat0kTTQOaJ+MQ/0uKaQWBnulHOu5ZvDjWc4Q3d+lFvbfywjeoPgfMCYO/zDQ3J 5/JzYVmUc29qkd2hEXSj0SP2QXJeQ7rBK44f209WFQze78T1/o0VW8kn/ZOMISmi/fwm HorIWH7BRtqjdpj1js3+W+hk9K54gTLB7HJjVu6+FmcoeoKZtBDR7ej+iFWBy080tXxl yYwkXANl752iTOu29CCYGlqAa5FI0lAwClVjr8rXLVzbnjVi6ocBITdBu1POZGmw2oVE FLn5AfSdJelgf8kpzU3bmBE7S/bMsegdZaugb3jaCEKuk885RR4zGmf5wNhXo4UarAvR eQrg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-unsubscribe:list-archive:list-help:list-post:list-id :mailing-list:precedence:mime-version:message-id:date:subject:cc:to :from:dkim-signature; bh=8lMm+mYrwUb+uZK/kQBUPBZt9gPtAc4wKDGV5W6iJpU=; b=jJDgmuRU2C0ijoIX9KVCHo6onVE0YpvDdPQlGJnZaJtoHfkOk2DhdRXpI2rAoleW+O XBNnWv3+SI0Em2bbG0ukrnHJ9mSWE9AqdatAf8sC7Nxp6F7TCTym4vvtkxpocbyjyj/D SLcguVSzx07sCG1+ag1ji0gPIWasHL0rJaw+e65QAR2Pn6Df+wlj/lpS9Y1UQ3eSpCjr ck9PrcLuEG1f8964HPSGfOG1YkLzvp7xQ+3sLnfyfRYTET5xyfmjCTVFjz2WEsu2JErJ mCWyK+YIP5poS14wD1zGM4LWjHMN+PjDYy3j+qYreGlAlxwPyKzZ2ZZWar1nRsmJPO/G GrGg== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=Umf6KdVJ; spf=pass (google.com: domain of jagan@amarulasolutions.com designates 209.85.220.65 as permitted sender) smtp.mailfrom=jagan@amarulasolutions.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amarulasolutions.com; s=google; h=from:to:cc:subject:date:message-id:mime-version:x-original-sender :x-original-authentication-results:precedence:mailing-list:list-id :list-post:list-help:list-archive:list-unsubscribe; bh=8lMm+mYrwUb+uZK/kQBUPBZt9gPtAc4wKDGV5W6iJpU=; b=ixqsBQKFDiLwRAUG7aq2RHeAG6+gzhiGzCL24NL4/gLWGro+IYuAOixrilmQcaEWFe NSW6SlmHBZQp7Wc1asYcsvb9J9LC5OL705a7l9E9lcfVK5oWZpH8OXSy1z2zp9PP73C/ tYv5f/EgxWHO2F0MZeubWteyEtR9nmOhthUoQ= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :x-original-sender:x-original-authentication-results:precedence :mailing-list:list-id:x-spam-checked-in-group:list-post:list-help :list-archive:list-unsubscribe; bh=8lMm+mYrwUb+uZK/kQBUPBZt9gPtAc4wKDGV5W6iJpU=; b=j2V29cN3OoxBkqDMkpsCIUvn2E4DRejQ9s9q7d0oEUYIK+HCafFMbykxBX4+SGRr2+ sMXXXgWV7KQ6FNuYi5++3ftbSaybjH8+dpAKH7T1bI1OOuz+IFaXKpNOBIHkrKSkvsDt jShaGNxU0tovwinw+OckkFnwCxTpNHNdGFw9JCwpC6rHx1mG9vFG03IYO/6FyPjfmc2C EtQp7URhCO1FwXC32JMXZ7LYSsBuCQaHcQQsaKkJEqahbh2kvd0mlMPOi9jZG30Q0N7e iR2x7ZvOSoUI2AD/jztDBvdmTrr02PGJoqvp5ZeTH/Jgg7WMx4sxtIV27qkmwWAZsZar Ckkw== X-Gm-Message-State: APjAAAXmFvCD/yPl00D1jdY5psBt1K8i87KdUJU/rJpYw8EBfKsZfrWQ 0yycqGGTgFJegLOQlAqJGii/2lT0 X-Google-Smtp-Source: APXvYqwC1BF0LfdlIP7cWSbA2y5PL2EpGnMrY1zlzQ1F0LEyoDf3zV0WshYcjK3wwi+/q+vmbc67cw== X-Received: by 2002:a17:90a:7184:: with SMTP id i4mr8304478pjk.49.1558694587853; Fri, 24 May 2019 03:43:07 -0700 (PDT) X-BeenThere: linux-amarula@amarulasolutions.com Received: by 2002:a17:90a:2070:: with SMTP id n103ls786598pjc.1.canary-gmail; Fri, 24 May 2019 03:43:07 -0700 (PDT) X-Received: by 2002:a17:902:e18d:: with SMTP id cd13mr37751594plb.301.1558694587474; Fri, 24 May 2019 03:43:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1558694587; cv=none; d=google.com; s=arc-20160816; b=XAy1VlCgMWi52OGcIb1ASbMoOIeuZ1jvwcTJBL3oHJv0nf6/OcrxGDUBiKfLqFXBNh kPhkSo92hp3O7P2eQ/1c/Y57tVXqZMpU+5FNuzpCEjJgjMBrdw4hxib+7QcCcktEPm5/ UIoQm7H8TTfL4/e2ieacBjF7Fj/crdeWwQnQ3z6Z06v/vXeNS9Gd5b7t3cAJDHJ1EVXY AXUTBx6zMb7DdCLShG4wfFAPfH2BLiP15IC5MrWp9gdpgEYjwPhssDwUCxSmmXimpR2p 9jGmO4KWM+qKzjUyloH8e0CbftM21akQl2PkjWxt+5IV8JSZrnefyygFdD6Je+6pTU9I TosQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:dkim-signature; bh=nP3yWdSdOBguUQvL1Rluu0V+blq5lMGRtGXamF3bLkw=; b=GWTGKBc2RUOqa6QqlWwRkE/qmF84XhE71fOfzlriAX0KEZtnuB3Msec/+R5VqLlcjf ajq+1kLEsqAbljZHRhE9QhtVgyv6XvUwdd1+T01Nh9vBhyftZdDKdV3MrWwPFpoAkLEW zCZyE5h7efTf7rcu60v1m5EanKx1Ba9gdpUSybkb+O0mP/4BfzdFaF5RUJ/OuEDPh7+T +hxzvxryWshKwuevhby/gjdw9x8ViW5I08F2bukKy8zlpkaShr/nlsDn54iElq/KouB0 KnrD5Iha+0r80XJODHQPiu7IHB70gMOaRStIFw2Op5ulaTy0LFDm+oivQC/gmB7rf9OV iHog== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=Umf6KdVJ; spf=pass (google.com: domain of jagan@amarulasolutions.com designates 209.85.220.65 as permitted sender) smtp.mailfrom=jagan@amarulasolutions.com Received: from mail-sor-f65.google.com (mail-sor-f65.google.com. [209.85.220.65]) by mx.google.com with SMTPS id d12sor198360pfh.21.2019.05.24.03.43.07 for (Google Transport Security); Fri, 24 May 2019 03:43:07 -0700 (PDT) Received-SPF: pass (google.com: domain of jagan@amarulasolutions.com designates 209.85.220.65 as permitted sender) client-ip=209.85.220.65; X-Received: by 2002:a63:225b:: with SMTP id t27mr18104506pgm.25.1558694587171; Fri, 24 May 2019 03:43:07 -0700 (PDT) Received: from localhost.localdomain ([183.82.227.60]) by smtp.gmail.com with ESMTPSA id u1sm2176028pfh.85.2019.05.24.03.43.01 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 24 May 2019 03:43:06 -0700 (PDT) From: Jagan Teki To: Andrzej Hajda , Laurent Pinchart , Chen-Yu Tsai , Maxime Ripard , David Airlie , Daniel Vetter , Rob Herring , Mark Rutland Cc: Michael Trimarchi , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@googlegroups.com, linux-amarula@amarulasolutions.com, Jagan Teki Subject: [DO NOT MERGE] [PATCH v2 2/6] ARM: dts: sun8i: bananapi-m2m: Enable Bananapi S070WV20-CT16 DSI panel Date: Fri, 24 May 2019 16:12:52 +0530 Message-Id: <20190524104252.20236-1-jagan@amarulasolutions.com> X-Mailer: git-send-email 2.18.0.321.gffc6fa0e3 MIME-Version: 1.0 X-Original-Sender: jagan@amarulasolutions.com X-Original-Authentication-Results: mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=Umf6KdVJ; spf=pass (google.com: domain of jagan@amarulasolutions.com designates 209.85.220.65 as permitted sender) smtp.mailfrom=jagan@amarulasolutions.com Content-Type: text/plain; charset="UTF-8" Precedence: list Mailing-list: list linux-amarula@amarulasolutions.com; contact linux-amarula+owners@amarulasolutions.com List-ID: X-Spam-Checked-In-Group: linux-amarula@amarulasolutions.com X-Google-Group-Id: 476853432473 List-Post: , List-Help: , List-Archive: List-Unsubscribe: , This patch add support for Bananapi S070WV20-CT16 DSI panel to BPI-M2M board. DSI panel connected via board DSI port with, - DCDC1 as VCC-DSI supply - PL5 gpio for lcd reset gpio pin - PB7 gpio for lcd enable gpio pin - PL4 gpio for backlight enable pin Signed-off-by: Jagan Teki --- arch/arm/boot/dts/sun8i-r16-bananapi-m2m.dts | 59 ++++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/arch/arm/boot/dts/sun8i-r16-bananapi-m2m.dts b/arch/arm/boot/dts/sun8i-r16-bananapi-m2m.dts index e1c75f7fa3ca..762d4cfcff01 100644 --- a/arch/arm/boot/dts/sun8i-r16-bananapi-m2m.dts +++ b/arch/arm/boot/dts/sun8i-r16-bananapi-m2m.dts @@ -44,6 +44,7 @@ #include "sun8i-a33.dtsi" #include +#include / { model = "BananaPi M2 Magic"; @@ -61,6 +62,14 @@ stdout-path = "serial0:115200n8"; }; + backlight: backlight { + compatible = "pwm-backlight"; + pwms = <&pwm 0 50000 PWM_POLARITY_INVERTED>; + brightness-levels = <1 2 4 8 16 32 64 128 255>; + default-brightness-level = <8>; + enable-gpios = <&r_pio 0 4 GPIO_ACTIVE_HIGH>; /* LCD-BL-EN: PL4 */ + }; + leds { compatible = "gpio-leds"; @@ -122,6 +131,46 @@ status = "okay"; }; +&de { + status = "okay"; +}; + +&dphy { + status = "okay"; +}; + +&dsi { + vcc-dsi-supply = <®_dcdc1>; /* VCC-DSI */ + status = "okay"; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + dsi_out: port@0 { + reg = <0>; + + dsi_out_panel: endpoint { + remote-endpoint = <&panel_out_dsi>; + }; + }; + }; + + panel@0 { + compatible = "bananapi,s070wv20-ct16-icn6211"; + reg = <0>; + enable-gpios = <&pio 1 7 GPIO_ACTIVE_HIGH>; /* LCD-PWR-EN: PB7 */ + reset-gpios = <&r_pio 0 5 GPIO_ACTIVE_HIGH>; /* LCD-RST: PL5 */ + backlight = <&backlight>; + + port { + panel_out_dsi: endpoint { + remote-endpoint = <&dsi_out_panel>; + }; + }; + }; +}; + &ehci0 { status = "okay"; }; @@ -157,6 +206,12 @@ status = "okay"; }; +&pwm { + pinctrl-names = "default"; + pinctrl-0 = <&pwm0_pin>; + status = "okay"; +}; + &r_rsb { status = "okay"; @@ -269,6 +324,10 @@ status = "okay"; }; +&tcon0 { + status = "okay"; +}; + &uart0 { pinctrl-names = "default"; pinctrl-0 = <&uart0_pb_pins>; From patchwork Fri May 24 10:43:14 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jagan Teki X-Patchwork-Id: 432 Return-Path: X-Original-To: linux-amarula@patchwork.amarulasolutions.com Delivered-To: linux-amarula@patchwork.amarulasolutions.com Received: from mail-pg1-f197.google.com (mail-pg1-f197.google.com [209.85.215.197]) by ganimede.amarulasolutions.com (Postfix) with ESMTPS id 995833F066 for ; Fri, 24 May 2019 12:43:34 +0200 (CEST) Received: by mail-pg1-f197.google.com with SMTP id 21sf6023020pgl.5 for ; Fri, 24 May 2019 03:43:34 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1558694613; cv=pass; d=google.com; s=arc-20160816; b=wQ8Q8uAqLPMKpJOyasdiWV4CKbLoAJQAaoylT0JPO1w7DZA0rNwGMepgyXjEyHHpSt wnZB7/et0zdqhDCWbwEkRzkwHe8t1R8+zOeWl5aQbgDLbb0lUpIQJHCgRnrHbYdUn6nF Lo4Kn21rsAPPcN2TEJs3UboOix7rJzS05KqOU/d6hwaANZhwS60OK2X94qKufpOToTVm 05/SB13+/kiSZ4e5jC1WWrkTlhwM7VjRraaIOj0dACdEQg9N38bFZjg5hjCaEkf9X/gn 9MZr67QTp6zDm9KpbjpIHXsV1ZJmF6cKmMJ7A+51QW7r+BJIyPQE3HkL3JGKm5pm7JmT yJYA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-unsubscribe:list-archive:list-help:list-post:list-id :mailing-list:precedence:mime-version:message-id:date:subject:cc:to :from:dkim-signature; bh=r1ZYl9ZXP2NMl+wqtvqDX0g++yA/JOM345PFpA/Vtng=; b=qnHFckExnX+N8we/Q4ny75c9AGbVq27WLFHncKTKIPDMhO5djgIf3onVg6FV8smnPg 2ZaiPWtJwJO3tzrKGdcNEah7/0qPAFAfZdXjjP//dEhRnrYgQIVnYKdQtq+rkH57Lle3 S0CGn8L1fQKyv673BzZDZPFUgAU7ewII5cjU1NDb+fa4K0tLmu57DZiUtEsvdJ/Eq8N+ QtzubcS2XV2tfJxFnK6rFqVO7kIjBMo/ejxtvkvIvBUZGqUunVJTgNRF9P9At6aaiZ4I 4SSKqruZxjHxYgjeMeg4gUE504ORL8jri6PIskki781mGaTYXIa+J/Y/0BcJ8ek+L9fF rmuQ== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=EXBKWqHz; spf=pass (google.com: domain of jagan@amarulasolutions.com designates 209.85.220.65 as permitted sender) smtp.mailfrom=jagan@amarulasolutions.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amarulasolutions.com; s=google; h=from:to:cc:subject:date:message-id:mime-version:x-original-sender :x-original-authentication-results:precedence:mailing-list:list-id :list-post:list-help:list-archive:list-unsubscribe; bh=r1ZYl9ZXP2NMl+wqtvqDX0g++yA/JOM345PFpA/Vtng=; b=JgSDieyr9D+5PCXdedb6isb/jbIMYbS4WGvXsAHbNgG084RkADUisbYWjyv4g8Ul1P NZB3z1RmF+ck33wyHHBrP2F9KLGuDkQ8YzyWs4ezlX/w5Op9m0JMkvy5x0jJ4/1lO8id 6hsqFxvKZ+CDljifQTbPU5kSHoAXGSb/x4DL0= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :x-original-sender:x-original-authentication-results:precedence :mailing-list:list-id:x-spam-checked-in-group:list-post:list-help :list-archive:list-unsubscribe; bh=r1ZYl9ZXP2NMl+wqtvqDX0g++yA/JOM345PFpA/Vtng=; b=UfFoXXw0AkrFO7hM2/s/t8rVCEbpB+51BovxmT12mjavHToX5tqxZrvtFulVpVUSSo g6MFe/k6JZZdPrGTg2W5i052KsmsPz6ROzwe6f1RaSgJirx7+ccEBUkf/a0D9Oi9Wudj sBXmx53jC06dwu30Injxl2/JtU+mfredxoFOxECyA45fuqQ5Qp52FoydZjfl01Owa36i j/62NtdF16d1RUf/Ky/CwbhP7TMXWxGUk7m33AadIfzw8PeucyWzLLVq83IJ0IdayG6m a6Cb9TMHf+h5qv1dEfWQGawhizC8KaUIB5J+Nv5b7qW4VttMhkYli1Sy66i9h4N0S3Q4 1F4g== X-Gm-Message-State: APjAAAUo/76o5Ad4ZFrO9hQsB08tt4ncnQLQL9Zogoa+05dNZE0uQbsM 2y2dxuSJcy4NL8Dy21FB7V41VjsJ X-Google-Smtp-Source: APXvYqylJc/LS/t4/g1gTvmfhVO3sH5SaFWwpvJy5aciO/8EJ/R0+B+Sl1f6I6YhbdaTQIZI/dBj3w== X-Received: by 2002:a62:2a0a:: with SMTP id q10mr64775068pfq.79.1558694613422; Fri, 24 May 2019 03:43:33 -0700 (PDT) X-BeenThere: linux-amarula@amarulasolutions.com Received: by 2002:a62:3483:: with SMTP id b125ls2611997pfa.11.gmail; Fri, 24 May 2019 03:43:33 -0700 (PDT) X-Received: by 2002:a65:6497:: with SMTP id e23mr12597899pgv.388.1558694613035; Fri, 24 May 2019 03:43:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1558694613; cv=none; d=google.com; s=arc-20160816; b=IAFocuRvLFcdrkJM+JhGrqsF2/Tt+v7Ao3t4NT/Qkx2vEXl4rhAY47dk7JCJanrCpK CVHJcjKbWCdvvW6cuzHkRSMAEiwvv55WwKAvU+8lUcjTx90LiGjxOAiWgRN9qdCSMx3/ 5M2Al8rl6tpmjnimGJZBWlz0EZFd1V/NUIeWywb8Aqg9RzeYCZMYVULheuFgI8qJ8lQo tj994GSySPlanVEIti8mmckTjMwu1xoScky3Zcnhs/GyMddDzRI1ZmcLshWAfpPiAiog p/J3WnTcNRijGiI6NgZFFd2I8XyhvtWrjM7zVpyqYBG1CnpMdrlc1LlvJmy69dIAUvIt 9Uxw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:dkim-signature; bh=8vuYuFD/5hunekM87lEsGh/8eCfgNQ+vP68Nh+1lg0I=; b=d0//PHYppKZP4PYhZUsDWtV8whFUOrTSZ+VPIjvj5Fg6uktPqyt84TkzJ/IC/QxamR CKCzyxj8utaDC+A1T/Ec92g2UMffS2xqsmj0LU+FboIMPllhepuRPu+rNSpCBtxZGeDe 3Pyx9Q8Akgm6X4DEcUtfS1dLIeE8m8DUoUa24TzPJPJMihlzSj9AfEB+g0PkmGNCiQSp b3UdDKRdBqHdRuYvY8XyP/pu4ZqvwlJiJV1DnqwNU+s5KUbR7hWwLqpqs+b6gu4Vc63e BtZDNV9QSL81ZxFF4EU916a2S5iVBn0oufkiC27fSbZoqgY/q6NsuScN/DS5M+ky0+QQ jE+Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=EXBKWqHz; spf=pass (google.com: domain of jagan@amarulasolutions.com designates 209.85.220.65 as permitted sender) smtp.mailfrom=jagan@amarulasolutions.com Received: from mail-sor-f65.google.com (mail-sor-f65.google.com. [209.85.220.65]) by mx.google.com with SMTPS id r21sor201330pfh.54.2019.05.24.03.43.33 for (Google Transport Security); Fri, 24 May 2019 03:43:33 -0700 (PDT) Received-SPF: pass (google.com: domain of jagan@amarulasolutions.com designates 209.85.220.65 as permitted sender) client-ip=209.85.220.65; X-Received: by 2002:aa7:842f:: with SMTP id q15mr112526398pfn.161.1558694612646; Fri, 24 May 2019 03:43:32 -0700 (PDT) Received: from localhost.localdomain ([183.82.227.60]) by smtp.gmail.com with ESMTPSA id h11sm2303416pfn.170.2019.05.24.03.43.26 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 24 May 2019 03:43:32 -0700 (PDT) From: Jagan Teki To: Andrzej Hajda , Laurent Pinchart , Chen-Yu Tsai , Maxime Ripard , David Airlie , Daniel Vetter , Rob Herring , Mark Rutland Cc: Michael Trimarchi , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@googlegroups.com, linux-amarula@amarulasolutions.com, Jagan Teki Subject: [PATCH v2 3/6] drm/sun4i: dsi: Add bridge support Date: Fri, 24 May 2019 16:13:14 +0530 Message-Id: <20190524104317.20287-1-jagan@amarulasolutions.com> X-Mailer: git-send-email 2.18.0.321.gffc6fa0e3 MIME-Version: 1.0 X-Original-Sender: jagan@amarulasolutions.com X-Original-Authentication-Results: mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=EXBKWqHz; spf=pass (google.com: domain of jagan@amarulasolutions.com designates 209.85.220.65 as permitted sender) smtp.mailfrom=jagan@amarulasolutions.com Content-Type: text/plain; charset="UTF-8" Precedence: list Mailing-list: list linux-amarula@amarulasolutions.com; contact linux-amarula+owners@amarulasolutions.com List-ID: X-Spam-Checked-In-Group: linux-amarula@amarulasolutions.com X-Google-Group-Id: 476853432473 List-Post: , List-Help: , List-Archive: List-Unsubscribe: , Some display panels would come up with a non-DSI output which can have an option to connect DSI interface by means of bridge converter. This DSI to non-DSI bridge converter would require a bridge driver that would communicate the DSI controller for bridge functionalities. So, add support for bridge functionalities in Allwinner DSI controller. Signed-off-by: Jagan Teki --- drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c | 60 +++++++++++++++++++------- drivers/gpu/drm/sun4i/sun6i_mipi_dsi.h | 1 + 2 files changed, 45 insertions(+), 16 deletions(-) diff --git a/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c b/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c index ae2fe31b05b1..2b4b1355a88f 100644 --- a/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c +++ b/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c @@ -775,6 +775,9 @@ static void sun6i_dsi_encoder_enable(struct drm_encoder *encoder) if (!IS_ERR(dsi->panel)) drm_panel_prepare(dsi->panel); + if (!IS_ERR(dsi->bridge)) + drm_bridge_pre_enable(dsi->bridge); + /* * FIXME: This should be moved after the switch to HS mode. * @@ -790,6 +793,9 @@ static void sun6i_dsi_encoder_enable(struct drm_encoder *encoder) if (!IS_ERR(dsi->panel)) drm_panel_enable(dsi->panel); + if (!IS_ERR(dsi->bridge)) + drm_bridge_enable(dsi->bridge); + sun6i_dsi_start(dsi, DSI_START_HSC); udelay(1000); @@ -806,6 +812,9 @@ static void sun6i_dsi_encoder_disable(struct drm_encoder *encoder) if (!IS_ERR(dsi->panel)) { drm_panel_disable(dsi->panel); drm_panel_unprepare(dsi->panel); + } else if (!IS_ERR(dsi->bridge)) { + drm_bridge_disable(dsi->bridge); + drm_bridge_post_disable(dsi->bridge); } phy_power_off(dsi->dphy); @@ -969,11 +978,12 @@ static int sun6i_dsi_attach(struct mipi_dsi_host *host, dsi->device = device; ret = drm_of_find_panel_or_bridge(host->dev->of_node, 0, 0, - &dsi->panel, NULL); + &dsi->panel, &dsi->bridge); if (ret) return ret; - dev_info(host->dev, "Attached device %s\n", device->name); + dev_info(host->dev, "Attached %s %s\n", + dsi->bridge ? "bridge" : "panel", device->name); return 0; } @@ -983,7 +993,10 @@ static int sun6i_dsi_detach(struct mipi_dsi_host *host, { struct sun6i_dsi *dsi = host_to_sun6i_dsi(host); - dsi->panel = NULL; + if (dsi->panel) + dsi->panel = NULL; + else if (dsi->bridge) + dsi->bridge = NULL; dsi->device = NULL; return 0; @@ -1055,8 +1068,10 @@ static int sun6i_dsi_bind(struct device *dev, struct device *master, struct sun4i_tcon *tcon0 = sun4i_get_tcon0(drm); int ret; - if (!dsi->panel) + if (!(dsi->panel || dsi->bridge)) { + dev_info(drm->dev, "No panel or bridge found... DSI output disabled\n"); return -EPROBE_DEFER; + } dsi->drv = drv; @@ -1078,19 +1093,29 @@ static int sun6i_dsi_bind(struct device *dev, struct device *master, } dsi->encoder.possible_crtcs = BIT(0); - drm_connector_helper_add(&dsi->connector, - &sun6i_dsi_connector_helper_funcs); - ret = drm_connector_init(drm, &dsi->connector, - &sun6i_dsi_connector_funcs, - DRM_MODE_CONNECTOR_DSI); - if (ret) { - dev_err(dsi->dev, - "Couldn't initialise the DSI connector\n"); - goto err_cleanup_connector; + if (dsi->panel) { + drm_connector_helper_add(&dsi->connector, + &sun6i_dsi_connector_helper_funcs); + ret = drm_connector_init(drm, &dsi->connector, + &sun6i_dsi_connector_funcs, + DRM_MODE_CONNECTOR_DSI); + if (ret) { + dev_err(dsi->dev, + "Couldn't initialise the DSI connector\n"); + goto err_cleanup_connector; + } + + drm_connector_attach_encoder(&dsi->connector, &dsi->encoder); + drm_panel_attach(dsi->panel, &dsi->connector); } - drm_connector_attach_encoder(&dsi->connector, &dsi->encoder); - drm_panel_attach(dsi->panel, &dsi->connector); + if (dsi->bridge) { + ret = drm_bridge_attach(&dsi->encoder, dsi->bridge, NULL); + if (ret) { + dev_err(dsi->dev, "Couldn't attach the DSI bridge\n"); + goto err_cleanup_connector; + } + } return 0; @@ -1104,7 +1129,10 @@ static void sun6i_dsi_unbind(struct device *dev, struct device *master, { struct sun6i_dsi *dsi = dev_get_drvdata(dev); - drm_panel_detach(dsi->panel); + if (dsi->panel) + drm_panel_detach(dsi->panel); + else if (dsi->bridge->funcs->detach) + dsi->bridge->funcs->detach(dsi->bridge); } static const struct component_ops sun6i_dsi_ops = { diff --git a/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.h b/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.h index c570f2b3868f..c76b71259d2e 100644 --- a/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.h +++ b/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.h @@ -32,6 +32,7 @@ struct sun6i_dsi { struct sun4i_tcon *tcon; struct mipi_dsi_device *device; struct drm_panel *panel; + struct drm_bridge *bridge; }; static inline struct sun6i_dsi *host_to_sun6i_dsi(struct mipi_dsi_host *host) From patchwork Fri May 24 10:43:15 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jagan Teki X-Patchwork-Id: 433 Return-Path: X-Original-To: linux-amarula@patchwork.amarulasolutions.com Delivered-To: linux-amarula@patchwork.amarulasolutions.com Received: from mail-pg1-f197.google.com (mail-pg1-f197.google.com [209.85.215.197]) by ganimede.amarulasolutions.com (Postfix) with ESMTPS id 8A82E3F066 for ; Fri, 24 May 2019 12:43:45 +0200 (CEST) Received: by mail-pg1-f197.google.com with SMTP id t16sf6025579pgv.13 for ; Fri, 24 May 2019 03:43:45 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1558694624; cv=pass; d=google.com; s=arc-20160816; b=yCJ/9f3YiPzDu+G13QCe8mEpFul5yR0ltlJvaBiDgj5lTJ86lT9o05cgtRprfaQkUW lAxtWNemamO3JVetPU8vPqFA7j4ngtc/mRbK9ObHK5k4LXRlw5I4qKgoLOixEfr0P7O5 0V3QlrzgqKT2WWL6qjILgY7A28cYk2oQOOBufEvjfzUx+jt9LXBHJ93BWMg5t2DjfubJ IMcV2Spxdok4e+YieFN9eZXQUeKuckwA/FYvfayxn+/csytMfyo1JSyWDbyJdGXTp/AH vrCER3xDsZOGwmsZy0fv8kHjI333BFTp9oYOQyPHeHFA4p/nU6YOTxhuCsmpnybs55k8 LtXQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-unsubscribe:list-archive:list-help:list-post:list-id :mailing-list:precedence:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=kqtYAXf1BHFK+vNeNZJxRQv8LqzVFTFiXhH6UPoDumo=; b=mSnokG1CljPSp6uZKmWM+ubyG7E/w4PKVNfxt1M/nkU8oYlm4usGXjKtifNE3JvQUU VL2czxp6xaA7C7EQMoN5spmCeieQ+qZwsmjcGhmK8zMwx5cLJtb5L2jh1E/0VfM0kxnH ADkSYxHKV2Unv3Pbu3bFPVkpmuFB6OjbOe7xXe6lwmCt/wlyx7VR/A62xLewZLmpqtfM RjBU+WTKL4ktcf1FlbIRWTkrjKcrxZ0v0SG/C2uSgPi1/QTHKEGHXxbvooda3P5MJobC Ax/b7f1o0nzlyFOE/1UcOKIKfu9EUzkv27/yLm1f+1nkC8O96EfcFwKFdtDNfSauUH3v fZzA== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=MMbn8v2Z; spf=pass (google.com: domain of jagan@amarulasolutions.com designates 209.85.220.65 as permitted sender) smtp.mailfrom=jagan@amarulasolutions.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amarulasolutions.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:x-original-sender:x-original-authentication-results :precedence:mailing-list:list-id:list-post:list-help:list-archive :list-unsubscribe; bh=kqtYAXf1BHFK+vNeNZJxRQv8LqzVFTFiXhH6UPoDumo=; b=mtEO5XDmHWScZ5uyttV9h2Isj8pob3hDP1z+EABb0WvnzRLHSgQ2m5rU6Stl4n5q+k eZKOncMVxNkJFgmZMGwJzFDV82au6mWeMm9LUlE7GYnEI2m9OmKowZPwwzBcWCGmk5Gb TAXGB3s46gYpf9PfbaHkTb+Cpbw0BPek+ms5A= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:x-original-sender :x-original-authentication-results:precedence:mailing-list:list-id :x-spam-checked-in-group:list-post:list-help:list-archive :list-unsubscribe; bh=kqtYAXf1BHFK+vNeNZJxRQv8LqzVFTFiXhH6UPoDumo=; b=rnAPhJ9A+sRNRpEPQonkRc43AxbEKZyVqXixufEz1BaFa8RI60lrr7kw0gvHTUWdsT IRYyT4E0ciSQx91HLWVSvau3vT5EFwZ6UbGp+HLTEtI+Sdjtw3YJXhQWZShKI0mvXz9r j93XoLiSh9QwGPfciFLnBzCZtjs5ihrBjW5onVsJO2BhPsYJzrkX4rEXQbkiQyPYegLS hWYwu8zeEhqIYQmfW7/wSOIGc+ky0YCEQ0CDwivCjOt2p3edNxql6P9p8DsSmrDUVwrO 7Zl2xwrN7xai3u5E692AtIzFYL9TVh7cT01Bz+ncppD7MvnFsQr1AI2NAgsYRUFxYdmg NIbQ== X-Gm-Message-State: APjAAAUfrcQopLbmGgdsLFrwCNGRODtLUBs+Y+SpMD61VAMBp7TjmVKs wMOKbDCxOmT051u8TBgKXtGAbbjw X-Google-Smtp-Source: APXvYqzNMsbCALBpf7nS5gkrKszYYTtRFqLs+/4Nc6tFsNpcC+MnYrghcr3KpNajxoyBqCPQx8s04Q== X-Received: by 2002:a65:5785:: with SMTP id b5mr68616457pgr.252.1558694624332; Fri, 24 May 2019 03:43:44 -0700 (PDT) X-BeenThere: linux-amarula@amarulasolutions.com Received: by 2002:a17:90a:1b4d:: with SMTP id q71ls788235pjq.3.canary-gmail; Fri, 24 May 2019 03:43:44 -0700 (PDT) X-Received: by 2002:a17:902:868c:: with SMTP id g12mr88931371plo.323.1558694623997; Fri, 24 May 2019 03:43:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1558694623; cv=none; d=google.com; s=arc-20160816; b=FYnaymN58+wEGEXS7Frtuj8wIFtV49lBn96HFJTFn+aD3xtu+VI4JDSiqdUj874tuS KI9Jz/P7OufLMrSg7n9LQ5epXpSOcgpvCgqXvliL0SO4KfBq9+MhAYoUAC5BIXTPRGj8 8Cdoa0iVkZfR1MTJVfBhkyfeRj3Hp6FWMFIpW2yYbnlUpwZBiamtqpe85Bh4Z/dbQtib EBlavgf6CO8z78q8EakNxKXCkSZx+4SLOb44f/hujcznSvD0XrR33dZ6n53tEk9/jEcJ rkf47ESdJ31BHM/4pab0U5ArP0stKDNHtrxX1dAR9m5XHdrsUgEpQx2Npl4gLDCfp7h7 ce9A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=qNTSCPsOEC2W2+GNT7l2VKFB0+zY6ZYUs+njP7ZZryY=; b=XIgaLkb9W4+4rjrjDi3CvblIEzI5Gcqn977AqO8R3oOUezspDHQbN04R7u18FRHJMu sq3xOvxKukGmeXDpqrfS1pdyMaFIm/eYnkwPXeT5Lie682L0ITJvBO7y7oPACd3DJ423 DiHkLRSYBNaBjcfjxrBx6l4YqbfaKnK+4/nimG1pDq0f05g9ydBf6P04j6UDHp1g2UiA gnEQv6lXnxEIHgHigykLl6rQ3Q7JiEBM6ZsJaEZYQh/uS9DHOg2lDfMUcJndxztatRVT PilRbOc/exLAdAJQA2+eGFWr9BKfm9hJcgKLo2ZL6Z2OVageaOzAxBviSPQRI/smICa9 wFeQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=MMbn8v2Z; spf=pass (google.com: domain of jagan@amarulasolutions.com designates 209.85.220.65 as permitted sender) smtp.mailfrom=jagan@amarulasolutions.com Received: from mail-sor-f65.google.com (mail-sor-f65.google.com. [209.85.220.65]) by mx.google.com with SMTPS id d20sor2458316pfr.1.2019.05.24.03.43.43 for (Google Transport Security); Fri, 24 May 2019 03:43:43 -0700 (PDT) Received-SPF: pass (google.com: domain of jagan@amarulasolutions.com designates 209.85.220.65 as permitted sender) client-ip=209.85.220.65; X-Received: by 2002:a62:5653:: with SMTP id k80mr110389226pfb.144.1558694623629; Fri, 24 May 2019 03:43:43 -0700 (PDT) Received: from localhost.localdomain ([183.82.227.60]) by smtp.gmail.com with ESMTPSA id h11sm2303416pfn.170.2019.05.24.03.43.37 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 24 May 2019 03:43:43 -0700 (PDT) From: Jagan Teki To: Andrzej Hajda , Laurent Pinchart , Chen-Yu Tsai , Maxime Ripard , David Airlie , Daniel Vetter , Rob Herring , Mark Rutland Cc: Michael Trimarchi , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@googlegroups.com, linux-amarula@amarulasolutions.com, Jagan Teki Subject: [PATCH v2 4/6] dt-bindings: display: bridge: Add ICN6211 MIPI-DSI to RGB converter bridge Date: Fri, 24 May 2019 16:13:15 +0530 Message-Id: <20190524104317.20287-2-jagan@amarulasolutions.com> X-Mailer: git-send-email 2.18.0.321.gffc6fa0e3 In-Reply-To: <20190524104317.20287-1-jagan@amarulasolutions.com> References: <20190524104317.20287-1-jagan@amarulasolutions.com> MIME-Version: 1.0 X-Original-Sender: jagan@amarulasolutions.com X-Original-Authentication-Results: mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=MMbn8v2Z; spf=pass (google.com: domain of jagan@amarulasolutions.com designates 209.85.220.65 as permitted sender) smtp.mailfrom=jagan@amarulasolutions.com Content-Type: text/plain; charset="UTF-8" Precedence: list Mailing-list: list linux-amarula@amarulasolutions.com; contact linux-amarula+owners@amarulasolutions.com List-ID: X-Spam-Checked-In-Group: linux-amarula@amarulasolutions.com X-Google-Group-Id: 476853432473 List-Post: , List-Help: , List-Archive: List-Unsubscribe: , ICN6211 is MIPI-DSI/RGB converter bridge from chipone. It has a flexible configuration of MIPI DSI signal input and produce RGB565, RGB666, RGB888 output format. Add dt-bingings for it. Signed-off-by: Jagan Teki --- .../display/bridge/chipone,icn6211.txt | 78 +++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 Documentation/devicetree/bindings/display/bridge/chipone,icn6211.txt diff --git a/Documentation/devicetree/bindings/display/bridge/chipone,icn6211.txt b/Documentation/devicetree/bindings/display/bridge/chipone,icn6211.txt new file mode 100644 index 000000000000..53a9848ef8b6 --- /dev/null +++ b/Documentation/devicetree/bindings/display/bridge/chipone,icn6211.txt @@ -0,0 +1,78 @@ +Chipone ICN6211 MIPI-DSI to RGB Converter Bridge + +ICN6211 is MIPI-DSI/RGB converter bridge from chipone. +It has a flexible configuration of MIPI DSI signal input +and produce RGB565, RGB666, RGB888 output format. + +Required properties for RGB: +- compatible: must be "chipone,icn6211" +- reg: the virtual channel number of a DSI peripheral +- reset-gpios: a GPIO phandle for the reset pin + +The device node can contain following 'port' child nodes, +according to the OF graph bindings defined in [1]: + 0: DSI Input, not required, if the bridge is DSI controlled + 1: RGB Output, mandatory + +[1]: Documentation/devicetree/bindings/media/video-interfaces.txt + +Example: + + panel { + compatible = "bananapi,s070wv20-ct16", "simple-panel"; + enable-gpios = <&pio 1 7 GPIO_ACTIVE_HIGH>; /* LCD-PWR-EN: PB7 */ + backlight = <&backlight>; + + port { + panel_out_bridge: endpoint { + remote-endpoint = <&bridge_out_panel>; + }; + }; + }; + +&dsi { + vcc-dsi-supply = <®_dcdc1>; /* VCC-DSI */ + status = "okay"; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + dsi_out: port@0 { + reg = <0>; + + dsi_out_bridge: endpoint { + remote-endpoint = <&bridge_out_dsi>; + }; + }; + }; + + bridge@0 { + compatible = "chipone,icn6211"; + reg = <0>; + reset-gpios = <&r_pio 0 5 GPIO_ACTIVE_HIGH>; /* LCD-RST: PL5 */ + #address-cells = <1>; + #size-cells = <0>; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + bridge_in: port@0 { + reg = <0>; + + bridge_out_dsi: endpoint { + remote-endpoint = <&dsi_out_bridge>; + }; + }; + + bridge_out: port@1 { + reg = <1>; + + bridge_out_panel: endpoint { + remote-endpoint = <&panel_out_bridge>; + }; + }; + }; + }; +}; From patchwork Fri May 24 10:43:16 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jagan Teki X-Patchwork-Id: 434 Return-Path: X-Original-To: linux-amarula@patchwork.amarulasolutions.com Delivered-To: linux-amarula@patchwork.amarulasolutions.com Received: from mail-pf1-f197.google.com (mail-pf1-f197.google.com [209.85.210.197]) by ganimede.amarulasolutions.com (Postfix) with ESMTPS id 554AA3F066 for ; Fri, 24 May 2019 12:44:00 +0200 (CEST) Received: by mail-pf1-f197.google.com with SMTP id l16sf6576202pfb.23 for ; Fri, 24 May 2019 03:44:00 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1558694638; cv=pass; d=google.com; s=arc-20160816; b=w/BAoVQvbwigIFWzb3WDPU+M9/JCv8F/rF/HnIbIZ55wTTpNL/TmNc3f9OFZlA273J 1D37RJUlaTBTBACsDlpCC0naLJ38ZEMQr8nms40i4w6FQ/x73g+Bv+9prf68/P4DJar+ 4/1mFSWsz5HWcN79WTI/yVV81v4e2pXeK4L6Cr2rzW3OzHv2KUQPvimXCExQIud49fgN v6ryXm7sUEnsvP7gSv6+U3lv9Qf0r4wVoQB3gVlbLUfScP9/ZntU853fk3o2ODEdzDU7 Qvj5ds20ix1XkjtdIBgcpeMJi1hV2EChfKvD69Uoki0GOYgFT2qRCyckF15rAKtzVWff 1a7g== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-unsubscribe:list-archive:list-help:list-post:list-id :mailing-list:precedence:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=PLdYkbPsT+z0bWsuaD612RW8nkQ5/8/5G4x+QAazgdQ=; b=RuDsnlHiCR6KMKDJ0ZczxRvKatwPcBSuz4NY9QKWDjwSKbt71gVScqm0BSfFiq0lEP uNCfcDvgUoTwGLB0Z+iVv1TPiAa6Xb7PPZOSnSz5PEAxrecJ+r/gjQny2MvFG8cNgDZ4 EPbprB6EsZRpkYq9sqinmNsKYBVUXrYJrugrm5+M3toxQc71iKAx2DFIdsrWOB9B1oGF jtaYrHZ/eSiEjKoVqtGNXNH7Te1E9XSvLgaVj9c4Xy1mHZfPnlMYOO4dnwRT4iXDq7Wg 3AnZlNhGqBqvaz6tVg9RrvCfkxd8gc9K6NjSZv1mhY4ALjDJwKUlOX6Xq8FGE750IGMW vHMw== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=OyifHJAO; spf=pass (google.com: domain of jagan@amarulasolutions.com designates 209.85.220.65 as permitted sender) smtp.mailfrom=jagan@amarulasolutions.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amarulasolutions.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:x-original-sender:x-original-authentication-results :precedence:mailing-list:list-id:list-post:list-help:list-archive :list-unsubscribe; bh=PLdYkbPsT+z0bWsuaD612RW8nkQ5/8/5G4x+QAazgdQ=; b=rXhHUNklhSh4nKCvqU65ZE41ekQS4qy9QeKNN2m9gLlhURAik2JRqNeJR2EhUTZQVo 1Vvq641orSBVhMG8BA5paLKR0uYm9HrKAQ7QjTZKKPDbWqEh4qraZn9w93fUOReEbR3f Yf4XGFcm0KCvnXyHeulVylZbfZJLHJOq6QygA= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:x-original-sender :x-original-authentication-results:precedence:mailing-list:list-id :x-spam-checked-in-group:list-post:list-help:list-archive :list-unsubscribe; bh=PLdYkbPsT+z0bWsuaD612RW8nkQ5/8/5G4x+QAazgdQ=; b=nbLMb1Vp7NIUGO4Cq1xyof63kHg5DrHpQv+7qdOno907kTtwxzDnP0EmoZ5Ov7g0o2 i/4TsbvUXuXC0LvHylbA5ijDhihYzMzcICBvxACu8J5LGjXUxuM5EK4SaJHtG1ExX5mx QszgQWsb8OimDzeAJbdCq0e87TMZ8FuG1IKYKnZkzRnoffo6dbnHyW0pD7EFz6a4B3Pt W8JxocJJ0okMkMU3NqFMejMuTpfpBtSuDKczTjB5i8kf7dko32F5JK9RUpl/JweL8HTc hEWAj7CUwtTijF6V1KO2p+gpBpclXSYmMkS3i1AVorREXk4MGzdi3FOfEVaE/44epFX/ 2oFQ== X-Gm-Message-State: APjAAAU5k+4AN2fg3lLbglqvB/j/QIPMpUK0CGZErfQ4D5YBLDA5BzLf JKv4Iz4dcsbLG81qzi71dh+CwxDh X-Google-Smtp-Source: APXvYqxCxPdpUleDcodZfdyZ0MLUE0SJyj0bDUVerj3j/HLJ5MzOPEcq/A6gB+LtW4YG9cfJ5UfBKw== X-Received: by 2002:a17:902:6bc4:: with SMTP id m4mr29103151plt.266.1558694638757; Fri, 24 May 2019 03:43:58 -0700 (PDT) X-BeenThere: linux-amarula@amarulasolutions.com Received: by 2002:a17:902:b605:: with SMTP id b5ls2219017pls.12.gmail; Fri, 24 May 2019 03:43:58 -0700 (PDT) X-Received: by 2002:a17:90a:cb0a:: with SMTP id z10mr8285994pjt.101.1558694638363; Fri, 24 May 2019 03:43:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1558694638; cv=none; d=google.com; s=arc-20160816; b=vGlb4fO2RzcjaXM+C92R5hb7SSQ6jJdpbBfXCVANH606trZc+gXlalelLKXVyUFC3i AX1CLuasVFYcWdQfYpBHKGxS1wZQy/PNmZ9jlM0sM852CkeNZuwZfquOPAiUxzwuXqgx N+G9wgs6tJ4WTfaG+FZqBsLO4qNsvjoxF9zYhoF3cZCfdcOjlfPNP9PO0oWXiByGGknI xOKSor0le+fIMgRCq3wVVWSGZONJF+dKxmnpxpZ60u6tKKYtjcbTej19/ZjDbFDoeRKb n5nCVO0QQXT61qPIiE3r31/f97EOesVDSI8OTmpE8a0Ia/UT6/e6sf7POV96wx+amBo4 j63g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=Bq5JeR/itXRFWJkFBy/4tSREROqi+e79H6/1fNsKbVM=; b=eVPQRqz6DpEL0CmZT+PmFAZmS8xl3cOjdShEQiEPdnmI3wo00LXmSlnv0wgPqnU4rd q4S2FPDAjIl7xjd8hYqtsL/DCaHm3AGFzSJk3mrDvC8g03pNrMZIOHsjMB9qw65hLbmh xCnD3rGBCmPmVuh7UYkZUc0dggWdtwREmhesnnVmOZpcUhOetOiaLMxrHdaiMG9VRnKo FodCC9mrZXPSFIi5nyjpNmtPKcG1tSdeZqmkD1tzjt4LBcJuX/9I0L+FTNfBaRWoFSdL Crp/XmpSozuzIi2HRuVj6mrGQwhIue22s2nKhf6O2k3JwrR98GlgbQheUBXnDz2Xkvmg 6SAg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=OyifHJAO; spf=pass (google.com: domain of jagan@amarulasolutions.com designates 209.85.220.65 as permitted sender) smtp.mailfrom=jagan@amarulasolutions.com Received: from mail-sor-f65.google.com (mail-sor-f65.google.com. [209.85.220.65]) by mx.google.com with SMTPS id r18sor183951pgg.5.2019.05.24.03.43.58 for (Google Transport Security); Fri, 24 May 2019 03:43:58 -0700 (PDT) Received-SPF: pass (google.com: domain of jagan@amarulasolutions.com designates 209.85.220.65 as permitted sender) client-ip=209.85.220.65; X-Received: by 2002:a63:dc09:: with SMTP id s9mr63725852pgg.425.1558694637934; Fri, 24 May 2019 03:43:57 -0700 (PDT) Received: from localhost.localdomain ([183.82.227.60]) by smtp.gmail.com with ESMTPSA id h11sm2303416pfn.170.2019.05.24.03.43.52 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 24 May 2019 03:43:57 -0700 (PDT) From: Jagan Teki To: Andrzej Hajda , Laurent Pinchart , Chen-Yu Tsai , Maxime Ripard , David Airlie , Daniel Vetter , Rob Herring , Mark Rutland Cc: Michael Trimarchi , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@googlegroups.com, linux-amarula@amarulasolutions.com, Jagan Teki Subject: [PATCH v2 5/6] drm/bridge: Add Chipone ICN6211 MIPI-DSI/RGB converter bridge Date: Fri, 24 May 2019 16:13:16 +0530 Message-Id: <20190524104317.20287-3-jagan@amarulasolutions.com> X-Mailer: git-send-email 2.18.0.321.gffc6fa0e3 In-Reply-To: <20190524104317.20287-1-jagan@amarulasolutions.com> References: <20190524104317.20287-1-jagan@amarulasolutions.com> MIME-Version: 1.0 X-Original-Sender: jagan@amarulasolutions.com X-Original-Authentication-Results: mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=OyifHJAO; spf=pass (google.com: domain of jagan@amarulasolutions.com designates 209.85.220.65 as permitted sender) smtp.mailfrom=jagan@amarulasolutions.com Content-Type: text/plain; charset="UTF-8" Precedence: list Mailing-list: list linux-amarula@amarulasolutions.com; contact linux-amarula+owners@amarulasolutions.com List-ID: X-Spam-Checked-In-Group: linux-amarula@amarulasolutions.com X-Google-Group-Id: 476853432473 List-Post: , List-Help: , List-Archive: List-Unsubscribe: , ICN6211 is MIPI-DSI/RGB converter bridge from chipone. It has a flexible configuration of MIPI DSI signal input and produce RGB565, RGB666, RGB888 output format. Add bridge driver for it. Signed-off-by: Jagan Teki --- Note: - drm_panel_bridge_add seems not working or incompatible as per driver setup. any inputs on this would be great. MAINTAINERS | 6 + drivers/gpu/drm/bridge/Kconfig | 10 + drivers/gpu/drm/bridge/Makefile | 1 + drivers/gpu/drm/bridge/chipone-icn6211.c | 344 +++++++++++++++++++++++ 4 files changed, 361 insertions(+) create mode 100644 drivers/gpu/drm/bridge/chipone-icn6211.c diff --git a/MAINTAINERS b/MAINTAINERS index 4cc30c360fda..97ffb265bedc 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -4991,6 +4991,12 @@ T: git git://anongit.freedesktop.org/drm/drm-misc S: Maintained F: drivers/gpu/drm/bochs/ +DRM DRIVER FOR CHIPONE ICN6211 MIPI-DSI to RGB CONVERTOR BRIDGE +M: Jagan Teki +S: Maintained +F: drivers/gpu/drm/bridge/chipone-icn6211.c +F: Documentation/devicetree/bindings/display/bridge/chipone,icn6211.txt + DRM DRIVER FOR FARADAY TVE200 TV ENCODER M: Linus Walleij T: git git://anongit.freedesktop.org/drm/drm-misc diff --git a/drivers/gpu/drm/bridge/Kconfig b/drivers/gpu/drm/bridge/Kconfig index 3dff9997f5e3..2e06be1aaca3 100644 --- a/drivers/gpu/drm/bridge/Kconfig +++ b/drivers/gpu/drm/bridge/Kconfig @@ -36,6 +36,16 @@ config DRM_CDNS_DSI Support Cadence DPI to DSI bridge. This is an internal bridge and is meant to be directly embedded in a SoC. +config DRM_CHIPONE_ICN6211 + tristate "Chipone ICN6211 MIPI-DSI/RGB converter bridge" + depends on DRM && DRM_PANEL + depends on OF + select DRM_MIPI_DSI + help + ICN6211 is MIPI-DSI/RGB converter bridge from chipone. + It has a flexible configuration of MIPI DSI signal input + and produce RGB565, RGB666, RGB888 output format. + config DRM_DUMB_VGA_DAC tristate "Dumb VGA DAC Bridge support" depends on OF diff --git a/drivers/gpu/drm/bridge/Makefile b/drivers/gpu/drm/bridge/Makefile index 4934fcf5a6f8..541fdccad10b 100644 --- a/drivers/gpu/drm/bridge/Makefile +++ b/drivers/gpu/drm/bridge/Makefile @@ -1,6 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 obj-$(CONFIG_DRM_ANALOGIX_ANX78XX) += analogix-anx78xx.o obj-$(CONFIG_DRM_CDNS_DSI) += cdns-dsi.o +obj-$(CONFIG_DRM_CHIPONE_ICN6211) += chipone-icn6211.o obj-$(CONFIG_DRM_DUMB_VGA_DAC) += dumb-vga-dac.o obj-$(CONFIG_DRM_LVDS_ENCODER) += lvds-encoder.o obj-$(CONFIG_DRM_MEGACHIPS_STDPXXXX_GE_B850V3_FW) += megachips-stdpxxxx-ge-b850v3-fw.o diff --git a/drivers/gpu/drm/bridge/chipone-icn6211.c b/drivers/gpu/drm/bridge/chipone-icn6211.c new file mode 100644 index 000000000000..76edda52dc57 --- /dev/null +++ b/drivers/gpu/drm/bridge/chipone-icn6211.c @@ -0,0 +1,344 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (C) 2018 Amarula Solutions + * Author: Jagan Teki + */ + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include