From patchwork Tue Jan 23 11:34:56 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kunihiko Hayashi X-Patchwork-Id: 10180015 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id A14066037F for ; Tue, 23 Jan 2018 11:35:11 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 8AAA22853E for ; Tue, 23 Jan 2018 11:35:11 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 7D327286AC; Tue, 23 Jan 2018 11:35:11 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=2.0 tests=BAYES_00,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id E721A2853E for ; Tue, 23 Jan 2018 11:35:10 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751737AbeAWLfK (ORCPT ); Tue, 23 Jan 2018 06:35:10 -0500 Received: from mx.socionext.com ([202.248.49.38]:58392 "EHLO mx.socionext.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751334AbeAWLfJ (ORCPT ); Tue, 23 Jan 2018 06:35:09 -0500 Received: from unknown (HELO iyokan-ex.css.socionext.com) ([172.31.9.54]) by mx.socionext.com with ESMTP; 23 Jan 2018 20:35:08 +0900 Received: from mail.mfilter.local (m-filter-1 [10.213.24.61]) by iyokan-ex.css.socionext.com (Postfix) with ESMTP id 47DDD600D0; Tue, 23 Jan 2018 20:35:08 +0900 (JST) Received: from 172.31.9.51 (172.31.9.51) by m-FILTER with ESMTP; Tue, 23 Jan 2018 20:35:15 +0900 Received: from plum.e01.socionext.com (unknown [10.213.132.32]) by kinkan.css.socionext.com (Postfix) with ESMTP id F1FE71A0DED; Tue, 23 Jan 2018 20:35:07 +0900 (JST) From: Kunihiko Hayashi To: Hans de Goede , Bartlomiej Zolnierkiewicz Cc: linux-fbdev@vger.kernel.org, linux-kernel@vger.kernel.org, Kunihiko Hayashi Subject: [PATCH] fbdev: simplefb: add support for 'memory-region' property on DT node Date: Tue, 23 Jan 2018 20:34:56 +0900 Message-Id: <1516707296-23667-1-git-send-email-hayashi.kunihiko@socionext.com> X-Mailer: git-send-email 2.7.4 Sender: linux-fbdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-fbdev@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Enables 'memory-region' property referring to the memory description on the reserved-memory node in case of devicetree use. If there is no 'reg' property that specifies the address and size of the framebuffer, the address and size written in the memory description on the reserved-memory node can be used for the framebuffer. Furthermore, the reserved-memory node needs to have "no-map" attributes because simplefb driver maps the region by ioremap_wc(). Signed-off-by: Kunihiko Hayashi Acked-by: Hans de Goede --- .../bindings/display/simple-framebuffer.txt | 3 ++ drivers/video/fbdev/simplefb.c | 32 ++++++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/Documentation/devicetree/bindings/display/simple-framebuffer.txt b/Documentation/devicetree/bindings/display/simple-framebuffer.txt index 5a9ce51..be5139f 100644 --- a/Documentation/devicetree/bindings/display/simple-framebuffer.txt +++ b/Documentation/devicetree/bindings/display/simple-framebuffer.txt @@ -56,6 +56,9 @@ Optional properties: framebuffer remains active. - display : phandle pointing to the primary display hardware node +- memory-region: phandle to a node describing memory region as framebuffer + memory instead of reg property. The node should include + 'no-map'. Example: diff --git a/drivers/video/fbdev/simplefb.c b/drivers/video/fbdev/simplefb.c index a3c44ec..aefc4b1 100644 --- a/drivers/video/fbdev/simplefb.c +++ b/drivers/video/fbdev/simplefb.c @@ -29,6 +29,7 @@ #include #include #include +#include #include #include #include @@ -294,6 +295,35 @@ static void simplefb_clocks_enable(struct simplefb_par *par, static void simplefb_clocks_destroy(struct simplefb_par *par) { } #endif +#if defined CONFIG_OF +static struct resource *simplefb_parse_dt_reserved_mem(struct device *dev) +{ + static struct resource res; + struct device_node *np; + int ret; + + np = of_parse_phandle(dev->of_node, "memory-region", 0); + if (!np) + return NULL; + + ret = of_address_to_resource(np, 0, &res); + if (ret < 0) + return NULL; + + if (!of_find_property(np, "no-map", NULL)) { + dev_err(dev, "Can't apply mapped reserved-memory\n"); + return NULL; + } + + return &res; +} +#else +static struct resource *simplefb_parse_dt_reserved_mem(struct device *dev) +{ + return NULL; +} +#endif + #if defined CONFIG_OF && defined CONFIG_REGULATOR #define SUPPLY_SUFFIX "-supply" @@ -428,6 +458,8 @@ static int simplefb_probe(struct platform_device *pdev) return ret; mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); + if (!mem) + mem = simplefb_parse_dt_reserved_mem(&pdev->dev); if (!mem) { dev_err(&pdev->dev, "No memory resource\n"); return -EINVAL;