From patchwork Sat Jan 21 15:35:43 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Rayyan Ansari X-Patchwork-Id: 46838 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp771994wrn; Sat, 21 Jan 2023 07:37:57 -0800 (PST) X-Google-Smtp-Source: AMrXdXuqYzIAAn7/rqllPwBA1q4zfagBPMGuerqmjtF51R6ut4WFJikYJN+hmtEmjQw9Wfwczvbx X-Received: by 2002:a05:6a00:10:b0:576:a74a:13c3 with SMTP id h16-20020a056a00001000b00576a74a13c3mr21422265pfk.1.1674315477655; Sat, 21 Jan 2023 07:37:57 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1674315477; cv=none; d=google.com; s=arc-20160816; b=u3atMWSPsZHYrAyt4+l/hScYzbTKF2rXLTO/r65kUEoQM2Izm/N1EVoJMQlkXEZhyw zmodxk6KSqfZueKIv4ro6PlNTQpKPAxg+WZwYm3aS7rXw6erL/cjCRS/bdQ0q0E2qdBa a+9yysnr4ld+wOCK1vtZdg9gKpDzPxhcvgvZ1E/owSd0zCAUWNo9zgh2EaNvzED/tNWk a5tEsupTuDCmtoz5FUyTjuGkFpUEphNHJkPW1LbKdPXn4jjlfgSm1Ag+ckcWW09e33By B3Z4dNPNKIMj1wFsNreWub/kAH0r5r3fzi/IubxkAX4Aj/Y5sj/Z4TYcL9IoCacd7Ix8 Ph8Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=A4c8WkU35Mq5MDZit6NsQwryhg7/hXEwGbhE/MTvXvA=; b=vcZ1BNpX3OugLXsC23c9zhdAOHjbFCgHBI8RBK7xU1v4hd6tKbSma8qbKwviTxWd6N 6X9I2TjAJYx5zlxL/p2Sg7HtLOQqsmBiBND0D3qgHoWFJ3Fk0dl6I8RMNV1PotJW/ojJ X4r2sBOBisBRbbVtoxFePhcJhnKZNN7WPa27/j+4DCnMRr9pXr5XBbmMY4AR9wx03JVO u/k4b27SfsaSptCrNQ6Qgv/0mls++q8B6yQjc0tv4Hvkw45SmmRWZ7toLCRFkNggg8Q4 8Sh/IEhLnQXlWB1TvSnayJmf784hdFPxT6pu2axzb2nWEaJf+caMRwj5MvzFFxGsf0jV /I9Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ansari.sh header.s=key1 header.b=EvhIzhnm; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=ansari.sh Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id w9-20020a056a0014c900b0057527c02551si11278785pfu.189.2023.01.21.07.37.45; Sat, 21 Jan 2023 07:37:57 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@ansari.sh header.s=key1 header.b=EvhIzhnm; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=ansari.sh Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229714AbjAUPg2 (ORCPT + 99 others); Sat, 21 Jan 2023 10:36:28 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50850 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229540AbjAUPgZ (ORCPT ); Sat, 21 Jan 2023 10:36:25 -0500 Received: from out2.migadu.com (out2.migadu.com [188.165.223.204]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AF4C728D1C; Sat, 21 Jan 2023 07:36:24 -0800 (PST) X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ansari.sh; s=key1; t=1674315383; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=A4c8WkU35Mq5MDZit6NsQwryhg7/hXEwGbhE/MTvXvA=; b=EvhIzhnmrTwhMfdhF5oPG9UJeknkJw+xNAd4IY2QbS2p6vOSWTo3Vd/O8w2WbFbFBsWluL 1QeQXbrSZBOvaoXPV5eekY9OktKC0xJhhPNkva+47XL9au1Xw07raV6gnfCKtVlzQtfjT/ yAyoQ+DKnhhzoIun8OK5dz6sLBQl/x0= From: Rayyan Ansari To: dri-devel@lists.freedesktop.org Cc: ~postmarketos/upstreaming@lists.sr.ht, asahi@lists.linux.dev, janne@jannau.net, Rayyan Ansari , Daniel Vetter , David Airlie , devicetree@vger.kernel.org, Hans de Goede , Javier Martinez Canillas , Krzysztof Kozlowski , linux-fbdev@vger.kernel.org, linux-kernel@vger.kernel.org, Rob Herring , Thomas Zimmermann Subject: [PATCH v2 1/2] drm/simpledrm: Allow physical width and height configuration via DT Date: Sat, 21 Jan 2023 15:35:43 +0000 Message-Id: <20230121153544.467126-2-rayyan@ansari.sh> In-Reply-To: <20230121153544.467126-1-rayyan@ansari.sh> References: <20230121153544.467126-1-rayyan@ansari.sh> MIME-Version: 1.0 X-Migadu-Flow: FLOW_OUT X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS, URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1755647026209206546?= X-GMAIL-MSGID: =?utf-8?q?1755647026209206546?= Signed-off-by: Rayyan Ansari --- drivers/gpu/drm/tiny/simpledrm.c | 60 +++++++++++++++++++++++++++----- 1 file changed, 51 insertions(+), 9 deletions(-) diff --git a/drivers/gpu/drm/tiny/simpledrm.c b/drivers/gpu/drm/tiny/simpledrm.c index 162eb44dcba8..7aab7fa572f0 100644 --- a/drivers/gpu/drm/tiny/simpledrm.c +++ b/drivers/gpu/drm/tiny/simpledrm.c @@ -128,6 +128,23 @@ simplefb_read_u32_of(struct drm_device *dev, struct device_node *of_node, return ret; } +static int +simplefb_read_u32_of_opt(struct drm_device *dev, struct device_node *of_node, + const char *name, u32 *value) +{ + int ret = of_property_read_u32(of_node, name, value); + + if (ret == -EINVAL) { + *value = 0; + ret = 0; + } else if (ret) { + drm_err(dev, "simplefb: cannot parse framebuffer %s: error %d\n", + name, ret); + } + + return ret; +} + static int simplefb_read_string_of(struct drm_device *dev, struct device_node *of_node, const char *name, const char **value) @@ -184,6 +201,19 @@ simplefb_get_format_of(struct drm_device *dev, struct device_node *of_node) return simplefb_get_validated_format(dev, format); } +static int +simplefb_get_mm_of(struct drm_device *dev, struct device_node *of_node, + const char *name) +{ + int mm; + int ret = simplefb_read_u32_of_opt(dev, of_node, name, &mm); + + if (ret) + return ret; + return simplefb_get_validated_int(dev, name, mm); +} + + /* * Simple Framebuffer device */ @@ -599,16 +629,12 @@ static const struct drm_mode_config_funcs simpledrm_mode_config_funcs = { */ static struct drm_display_mode simpledrm_mode(unsigned int width, - unsigned int height) + unsigned int height, + unsigned int width_mm, + unsigned int height_mm) { - /* - * Assume a monitor resolution of 96 dpi to - * get a somewhat reasonable screen size. - */ const struct drm_display_mode mode = { - DRM_MODE_INIT(60, width, height, - DRM_MODE_RES_MM(width, 96ul), - DRM_MODE_RES_MM(height, 96ul)) + DRM_MODE_INIT(60, width, height, width_mm, height_mm) }; return mode; @@ -622,6 +648,7 @@ static struct simpledrm_device *simpledrm_device_create(struct drm_driver *drv, struct simpledrm_device *sdev; struct drm_device *dev; int width, height, stride; + int width_mm = 0, height_mm = 0; const struct drm_format_info *format; struct resource *res, *mem; void __iomem *screen_base; @@ -676,6 +703,12 @@ static struct simpledrm_device *simpledrm_device_create(struct drm_driver *drv, format = simplefb_get_format_of(dev, of_node); if (IS_ERR(format)) return ERR_CAST(format); + width_mm = simplefb_get_mm_of(dev, of_node, "width-mm"); + if (width_mm < 0) + return ERR_PTR(width_mm); + height_mm = simplefb_get_mm_of(dev, of_node, "height-mm"); + if (height_mm < 0) + return ERR_PTR(height_mm); } else { drm_err(dev, "no simplefb configuration found\n"); return ERR_PTR(-ENODEV); @@ -686,7 +719,16 @@ static struct simpledrm_device *simpledrm_device_create(struct drm_driver *drv, return ERR_PTR(-EINVAL); } - sdev->mode = simpledrm_mode(width, height); + /* + * Assume a monitor resolution of 96 dpi if physical dimensions + * are not specified to get a somewhat reasonable screen size. + */ + if (!width_mm) + width_mm = DRM_MODE_RES_MM(width, 96ul); + if (!height_mm) + height_mm = DRM_MODE_RES_MM(height, 96ul); + + sdev->mode = simpledrm_mode(width, height, width_mm, height_mm); sdev->format = format; sdev->pitch = stride; From patchwork Sat Jan 21 15:35:44 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Rayyan Ansari X-Patchwork-Id: 46837 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp771812wrn; Sat, 21 Jan 2023 07:37:31 -0800 (PST) X-Google-Smtp-Source: AMrXdXs6pPbMdDsvGaH2DNxGmwdDvBLSoOcVQAvYfkZ6uEgDOcQnEKz96trkhE+J3+yRkmNGUPnc X-Received: by 2002:a05:6a00:1d23:b0:589:6338:9650 with SMTP id a35-20020a056a001d2300b0058963389650mr17756108pfx.5.1674315450980; Sat, 21 Jan 2023 07:37:30 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1674315450; cv=none; d=google.com; s=arc-20160816; b=C9p1SSWzxmLI0gYEEceDyEbej6lgU8uoAxG/mTobD3KOh3c9BvpII9w0m9TLj/SRIr mmsiu5gmIc93v32f3wmW89vZaUJ0YD4NGnGSY3ZrMG5fUemq6m0qBEFkpsyfBexer90T jktTTtK5iwjI7K8g0mrm/GGXtr7A/HiIZM9P+tCNTOhb1SIZ06MQTIQynp+tuDZTArwK 9YEPk/hsdyE5C6RHVOM4Q7KhzobxMS3OfjB/Q5sCbb9IEiHDiKUZ6XurAZerYzIIppRN hfk7T2COUklJH6/MbVkY8Ilq6t5M1Bl4Jb5tGGInIdWbYwm3tdFvY3IJPFZf6U9fTIpm pkYQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=M8lIE+6WE9tMl1ZMBNy5CDlevzKnMkbivuT3ciwYp14=; b=Dc50ySuQwAxWDjNRm1o7irmHK4fdTsDSQSwAuLhZ7LI92QqDinvVFMsxp+Jlc1dELI tqglxoPr60Z+o2AYiMRDwHHpJiws3RX/q5YZQswVNiEiVOSJbAOVkTV85ywcC8MZmj9i Pu0/ZKcxTHtiOQipweUPXcdQ6XPFCB8Si+X6U/FtKdi2RU9uWw+q6qzmHp0ykiYypfcm Y9eX0JCbK3Lm64wP8z2y2L0JCTPJAP64w8Ub6RgXq+VuzbAlU5kIPBvGXoTfvHpIkQqe lv9eoZB06uxhmJhUYaKrpKq4XOlznLj+OwBLhXFAaNJfnWeigB7et2BMQpAwjtoOXK/o /aPA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ansari.sh header.s=key1 header.b=M7hXj4cJ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=ansari.sh Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id 135-20020a62188d000000b00582ffd6c9cbsi42177912pfy.65.2023.01.21.07.37.18; Sat, 21 Jan 2023 07:37:30 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@ansari.sh header.s=key1 header.b=M7hXj4cJ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=ansari.sh Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229768AbjAUPga (ORCPT + 99 others); Sat, 21 Jan 2023 10:36:30 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50858 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229680AbjAUPg0 (ORCPT ); Sat, 21 Jan 2023 10:36:26 -0500 Received: from out2.migadu.com (out2.migadu.com [IPv6:2001:41d0:2:aacc::]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id F3EF528D1C; Sat, 21 Jan 2023 07:36:25 -0800 (PST) X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ansari.sh; s=key1; t=1674315384; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=M8lIE+6WE9tMl1ZMBNy5CDlevzKnMkbivuT3ciwYp14=; b=M7hXj4cJw6RZF9uP8KLgmLQDXunN7Qm53brTFHZS4XI4bqRtYqKkPUa5kS1tgs81nIhYyX Xvo74sWyjF5tOPeeLlkNwEQEoBz2/4MGbWD0ONVuXAZ5ASJu3lZISESewHbSNzMCzaCxUB P/FyRiTLpqgS1pja107xW1VfFp3U+lo= From: Rayyan Ansari To: dri-devel@lists.freedesktop.org Cc: ~postmarketos/upstreaming@lists.sr.ht, asahi@lists.linux.dev, janne@jannau.net, Rayyan Ansari , Daniel Vetter , David Airlie , devicetree@vger.kernel.org, Hans de Goede , Javier Martinez Canillas , Krzysztof Kozlowski , linux-fbdev@vger.kernel.org, linux-kernel@vger.kernel.org, Rob Herring , Thomas Zimmermann Subject: [PATCH v2 2/2] dt-bindings: display: simple-framebuffer: Document physical width and height properties Date: Sat, 21 Jan 2023 15:35:44 +0000 Message-Id: <20230121153544.467126-3-rayyan@ansari.sh> In-Reply-To: <20230121153544.467126-1-rayyan@ansari.sh> References: <20230121153544.467126-1-rayyan@ansari.sh> MIME-Version: 1.0 X-Migadu-Flow: FLOW_OUT X-Spam-Status: No, score=-2.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_LOW,SPF_HELO_PASS, SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1755646998351317214?= X-GMAIL-MSGID: =?utf-8?q?1755646998351317214?= Signed-off-by: Rayyan Ansari --- .../devicetree/bindings/display/simple-framebuffer.yaml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Documentation/devicetree/bindings/display/simple-framebuffer.yaml b/Documentation/devicetree/bindings/display/simple-framebuffer.yaml index dd64f70b5014..eb33bfd805db 100644 --- a/Documentation/devicetree/bindings/display/simple-framebuffer.yaml +++ b/Documentation/devicetree/bindings/display/simple-framebuffer.yaml @@ -106,6 +106,14 @@ properties: - x2r10g10b10 - x8r8g8b8 + width-mm: + $ref: /schemas/types.yaml#/definitions/uint32 + description: Physical width of the display in millimetres + + height-mm: + $ref: /schemas/types.yaml#/definitions/uint32 + description: Physical height of the display in millimetres + display: $ref: /schemas/types.yaml#/definitions/phandle description: Primary display hardware node