From nobody Mon Feb 9 08:34:05 2026 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 57EA9C7EE24 for ; Mon, 5 Jun 2023 07:49:13 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229484AbjFEHtJ (ORCPT ); Mon, 5 Jun 2023 03:49:09 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39482 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229670AbjFEHs5 (ORCPT ); Mon, 5 Jun 2023 03:48:57 -0400 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 76D33DF for ; Mon, 5 Jun 2023 00:48:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1685951291; 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=mJ6LVDenz7leEoWEGqkNGYbuR5Ekaz6eOK5tZIJsJWA=; b=CoJr/Jp/E5kYJzpOmzXW82a1rBb8xhAIcMMicF1LMPc/a3JKrSzrddUTrxZsVx/Z9q/HvB 1vVaKkOHKehpKBGfGDnX5eS5tvMvA1krNkcENwpOcjP7Sin9KMgLApfhtCQ4eW1t8xlknO TrMVWc8lIFccAiC/yz/D5ZCDJeSC43A= Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-515-g85FDL9yOyuR86ZKPwFnFw-1; Mon, 05 Jun 2023 03:48:10 -0400 X-MC-Unique: g85FDL9yOyuR86ZKPwFnFw-1 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-3f7678c74beso5050815e9.3 for ; Mon, 05 Jun 2023 00:48:10 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685951288; x=1688543288; 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=mJ6LVDenz7leEoWEGqkNGYbuR5Ekaz6eOK5tZIJsJWA=; b=LSK4MCmDTGObCQJ/MDkVkWPYFs1csyoFwW9ZvBAbNEt6a0wEUC2d3bCRc5NROh5azj q14W1v2rB2wcKnRmv3h1RNvPw9EMUpeeK+ik8xI2udrRXqv6ZUHe79+P5E+MTmPELBvg 0cRrfv+duee1bnBxs/NDJJu/0h3uZt2b29Y63s5VfxpxpyMTm+FoRdxUT3h+xS/FTlfb +a7pZFIYWC2ctf06aYZjZWXQ+QrhXMupvL9hQ+2r7kxU9JaA4pybD6NVe78emXDupGEF UctzbrTM0WrHyMJCr/yynNJSOKzRJcOaUutTB6G+sHsPp14xDpjC2Nd6zeS7c7PlTQzl Agfw== X-Gm-Message-State: AC+VfDxrCxwWfYRlIeKSJpCXAxqjaSNbhnPFkV3QZSS2gefLpUvCYJFE Z3mCUCQ62VrQ/L469bXC9vXISxR7fQWzz/LX5R3ce0EhQqDv85J+itcJeVB48gmjsz/Z5MUFWSa wbmbHxw+gOHBbvy/2IT5FAIetojC/YqHHqUVPnC5Kktdn9UHkykpVD3ZrAS+VXqxB6+dWU6VyJP 5svsm91KY= X-Received: by 2002:a05:600c:284a:b0:3f6:1377:8b15 with SMTP id r10-20020a05600c284a00b003f613778b15mr7656290wmb.21.1685951288612; Mon, 05 Jun 2023 00:48:08 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ7Y3sEsxNIwZK3n9IEdro6U7y6EP48MP57T3BvOfN5LZhOYLajzhcd2K85ImHRDwpnr2Kb1WQ== X-Received: by 2002:a05:600c:284a:b0:3f6:1377:8b15 with SMTP id r10-20020a05600c284a00b003f613778b15mr7656272wmb.21.1685951288313; Mon, 05 Jun 2023 00:48:08 -0700 (PDT) Received: from minerva.home (205.pool92-176-231.dynamic.orange.es. [92.176.231.205]) by smtp.gmail.com with ESMTPSA id q21-20020a1ce915000000b003f4fb5532a1sm9715192wmc.43.2023.06.05.00.48.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 05 Jun 2023 00:48:07 -0700 (PDT) From: Javier Martinez Canillas To: linux-kernel@vger.kernel.org Cc: Thomas Zimmermann , Geert Uytterhoeven , Maxime Ripard , Javier Martinez Canillas , Daniel Vetter , David Airlie , dri-devel@lists.freedesktop.org Subject: [PATCH 1/5] drm/ssd130x: Make default width and height to be controller dependent Date: Mon, 5 Jun 2023 09:47:49 +0200 Message-Id: <20230605074753.562332-2-javierm@redhat.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230605074753.562332-1-javierm@redhat.com> References: <20230605074753.562332-1-javierm@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Currently the driver hardcodes the default values to 96x16 pixels but this default resolution depends on the controller. The datasheets for the chips describes the following display controller resolutions: - SH1106: 132 x 64 Dot Matrix OLED/PLED - SSD1306: 128 x 64 Dot Matrix OLED/PLED - SSD1307: 128 x 39 Dot Matrix OLED/PLED - SSD1309: 128 x 64 Dot Matrix OLED/PLED Add this information to the devices' info structures, and use it set as a default if not defined in DT rather than hardcoding to an arbitrary value. Signed-off-by: Javier Martinez Canillas Reviewed-by: Thomas Zimmermann --- drivers/gpu/drm/solomon/ssd130x.c | 14 ++++++++++++-- drivers/gpu/drm/solomon/ssd130x.h | 2 ++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/solomon/ssd130x.c b/drivers/gpu/drm/solomon/ss= d130x.c index 8cbf5aa66e19..a0e5e26c0bc9 100644 --- a/drivers/gpu/drm/solomon/ssd130x.c +++ b/drivers/gpu/drm/solomon/ssd130x.c @@ -99,29 +99,39 @@ const struct ssd130x_deviceinfo ssd130x_variants[] =3D { .default_vcomh =3D 0x40, .default_dclk_div =3D 1, .default_dclk_frq =3D 5, + .default_width =3D 132, + .default_height =3D 64, .page_mode_only =3D 1, }, [SSD1305_ID] =3D { .default_vcomh =3D 0x34, .default_dclk_div =3D 1, .default_dclk_frq =3D 7, + .default_width =3D 132, + .default_height =3D 64, }, [SSD1306_ID] =3D { .default_vcomh =3D 0x20, .default_dclk_div =3D 1, .default_dclk_frq =3D 8, .need_chargepump =3D 1, + .default_width =3D 128, + .default_height =3D 64, }, [SSD1307_ID] =3D { .default_vcomh =3D 0x20, .default_dclk_div =3D 2, .default_dclk_frq =3D 12, .need_pwm =3D 1, + .default_width =3D 128, + .default_height =3D 39, }, [SSD1309_ID] =3D { .default_vcomh =3D 0x34, .default_dclk_div =3D 1, .default_dclk_frq =3D 10, + .default_width =3D 128, + .default_height =3D 64, } }; EXPORT_SYMBOL_NS_GPL(ssd130x_variants, DRM_SSD130X); @@ -798,10 +808,10 @@ static void ssd130x_parse_properties(struct ssd130x_d= evice *ssd130x) struct device *dev =3D ssd130x->dev; =20 if (device_property_read_u32(dev, "solomon,width", &ssd130x->width)) - ssd130x->width =3D 96; + ssd130x->width =3D ssd130x->device_info->default_width; =20 if (device_property_read_u32(dev, "solomon,height", &ssd130x->height)) - ssd130x->height =3D 16; + ssd130x->height =3D ssd130x->device_info->default_height; =20 if (device_property_read_u32(dev, "solomon,page-offset", &ssd130x->page_o= ffset)) ssd130x->page_offset =3D 1; diff --git a/drivers/gpu/drm/solomon/ssd130x.h b/drivers/gpu/drm/solomon/ss= d130x.h index db03ee5db392..a2bc8d75078b 100644 --- a/drivers/gpu/drm/solomon/ssd130x.h +++ b/drivers/gpu/drm/solomon/ssd130x.h @@ -37,6 +37,8 @@ struct ssd130x_deviceinfo { u32 default_vcomh; u32 default_dclk_div; u32 default_dclk_frq; + u32 default_width; + u32 default_height; int need_pwm; int need_chargepump; bool page_mode_only; --=20 2.40.1 From nobody Mon Feb 9 08:34:05 2026 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 C5F97C7EE2A for ; Mon, 5 Jun 2023 07:49:00 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229745AbjFEHs7 (ORCPT ); Mon, 5 Jun 2023 03:48:59 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39920 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229584AbjFEHs4 (ORCPT ); Mon, 5 Jun 2023 03:48:56 -0400 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AB64DBD for ; Mon, 5 Jun 2023 00:48:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1685951293; 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=Wy1ybExd+DdkhzJijCZf2robb5n3TSjvDJzl2U7VfoI=; b=PYX875p5wvgKtdJ0W/yTj6t/L1xkAsS3rr8MN3XVuZuuZR3cpnkXG822hFuGZ1hWo4ShUO TY8gGAhSoqwCyVyoI4bbFsfMhi62sZD4j1DiwEbWE4BNyACzaXfupQlJl920a+4bsVAHy/ wInI64khk1vgEj02TYYv7fwp/n54YJM= Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-630-bUgdjMMOO_6PRGkE9T9ikQ-1; Mon, 05 Jun 2023 03:48:11 -0400 X-MC-Unique: bUgdjMMOO_6PRGkE9T9ikQ-1 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-3f613f5d290so79094415e9.2 for ; Mon, 05 Jun 2023 00:48:11 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685951290; x=1688543290; 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=Wy1ybExd+DdkhzJijCZf2robb5n3TSjvDJzl2U7VfoI=; b=VmjvtyS/NptDYkQcwMnVrtL8GDslBx/Y0l7oO6s5MydcywHeXFA1TNi40v8RORI9fm tSyLLAQWvRzsUTOBeFOTvTIlH95GidLdBar8VI3VVZ0h9Ws5KY/cS9Az7Ocq2EIgWMif 7P3XCxFNP9iUU54MHxoSoskI9ZJ+3FF+BYKu9CMOh3MXPxEFaASrPe8jG6oKJnjbO243 tZd/V8H/hAZZFES7l+l43mv42itx+N0Zv+2xTaIQ/G5fP8/V/cR0g8xwKE27Mr66z2xO QJghQNsHuUnRqi/D8/uy+petcYQ6k5jQIvRbARjK6ZMVWbRXA/FG5AoUuAdvif4OZ78L cC9w== X-Gm-Message-State: AC+VfDzwY5aoER0WRMG5L3BXdRJw3SgVRY97z7BtLdobPxljW8MSGCPP 4zBBJrA9BIpBsl4WuUZIxaat7ZTUC/HSYiMxvWACsrwsPPyGfsEhaR+ZoNHcxn0dEZyCcAVTAVa qgCnFPXvOdHToVacuI+Er4SvhlcdQRG6WbKYjgNj1i8RfKVEtHLSyPe/RTAKE2lM8IUt168bfmb 1+rxVl8Vw= X-Received: by 2002:a05:600c:246:b0:3f6:a66:a36d with SMTP id 6-20020a05600c024600b003f60a66a36dmr6957929wmj.10.1685951290443; Mon, 05 Jun 2023 00:48:10 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ7eFHg9bKquUpdsiK2KD6fy5tNMuQeT4ijXo/E1E9L9E6LlQGTfx9UJ7jtWPmSqTB0TklZmdQ== X-Received: by 2002:a05:600c:246:b0:3f6:a66:a36d with SMTP id 6-20020a05600c024600b003f60a66a36dmr6957906wmj.10.1685951290089; Mon, 05 Jun 2023 00:48:10 -0700 (PDT) Received: from minerva.home (205.pool92-176-231.dynamic.orange.es. [92.176.231.205]) by smtp.gmail.com with ESMTPSA id q21-20020a1ce915000000b003f4fb5532a1sm9715192wmc.43.2023.06.05.00.48.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 05 Jun 2023 00:48:09 -0700 (PDT) From: Javier Martinez Canillas To: linux-kernel@vger.kernel.org Cc: Thomas Zimmermann , Geert Uytterhoeven , Maxime Ripard , Javier Martinez Canillas , Conor Dooley , Daniel Vetter , David Airlie , Krzysztof Kozlowski , Rob Herring , devicetree@vger.kernel.org, dri-devel@lists.freedesktop.org Subject: [PATCH 2/5] dt-bindings: display: ssd1307fb: Remove default width and height values Date: Mon, 5 Jun 2023 09:47:50 +0200 Message-Id: <20230605074753.562332-3-javierm@redhat.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230605074753.562332-1-javierm@redhat.com> References: <20230605074753.562332-1-javierm@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" A default resolution in the ssd130x driver isn't set to an arbitrary 96x16 anymore. Instead is set to a width and height that's controller dependent. Update DT schema to reflect what the driver does and make its users aware. Signed-off-by: Javier Martinez Canillas Reviewed-by: Thomas Zimmermann --- .../devicetree/bindings/display/solomon,ssd1307fb.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Documentation/devicetree/bindings/display/solomon,ssd1307fb.ya= ml b/Documentation/devicetree/bindings/display/solomon,ssd1307fb.yaml index 94bb5ef567c6..e8ed642dc144 100644 --- a/Documentation/devicetree/bindings/display/solomon,ssd1307fb.yaml +++ b/Documentation/devicetree/bindings/display/solomon,ssd1307fb.yaml @@ -49,15 +49,15 @@ properties: =20 solomon,height: $ref: /schemas/types.yaml#/definitions/uint32 - default: 16 description: - Height in pixel of the screen driven by the controller + Height in pixel of the screen driven by the controller. + The default value is controller-dependent. =20 solomon,width: $ref: /schemas/types.yaml#/definitions/uint32 - default: 96 description: - Width in pixel of the screen driven by the controller + Width in pixel of the screen driven by the controller. + The default value is controller-dependent. =20 solomon,page-offset: $ref: /schemas/types.yaml#/definitions/uint32 --=20 2.40.1 From nobody Mon Feb 9 08:34:05 2026 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 7B27EC7EE24 for ; Mon, 5 Jun 2023 07:49:07 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230419AbjFEHtG (ORCPT ); Mon, 5 Jun 2023 03:49:06 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39850 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229598AbjFEHs5 (ORCPT ); Mon, 5 Jun 2023 03:48:57 -0400 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E4ECDE9 for ; Mon, 5 Jun 2023 00:48:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1685951294; 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=g4KVF35q3WBd9EqBejhEs82WHdBZCv0emJ0RazkmxtQ=; b=ASCcV27GJu1jgJ/7WzA9YdSdtqEgoTKP5gkOBwvzzzIh3vXbc1QRob2xTZ3Tu3nVa0UmCB +KT9sF9RYc4mK08JcMCAjmJuD1glvqcNv0kXAy/BYmvdx4TQ3dDCPao+lk5m+P0JKxU0qs kEOcNET9B9gIuxzj+00cNsuGhsLbgF8= Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-567-pFTy6LjGOw24tN-mfzMwjA-1; Mon, 05 Jun 2023 03:48:13 -0400 X-MC-Unique: pFTy6LjGOw24tN-mfzMwjA-1 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-3f72720c592so17829815e9.2 for ; Mon, 05 Jun 2023 00:48:12 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685951291; x=1688543291; 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=g4KVF35q3WBd9EqBejhEs82WHdBZCv0emJ0RazkmxtQ=; b=fkiyy21LGEQP4mSTBKJXmesFLPVrUlU+FIk9gqWdf24cAoo78ozW8GwL91PVa/Tlzs Pxtz5pRE4V7Va+RJcZZORDEnirHG/+gDUBWnQ3z+6vxYPuczwwgnlUeBa842cbYoRVEY RHWa2Wnp9Lk5zchnt0xjSJM/7bzcmVlGoOC/axqZ//KQCIipiaO92pDBB6zqIbDiZbwX qBpdwWEEbCVE1/aTKoq3tUngBmlidWT82X6B488l53qrkdM4OQwDHyHr1yowUz7HZA6f bHCeJzYKRsuZ/ARzmIbXPqvZQJ2wRsujyDJmq5UKcnfBX77tVD8Cho+ZIcHE6+6965Zo dQHg== X-Gm-Message-State: AC+VfDwMzEYV8vRU5IN/QTYWjKGmXrLnVdD81c1YVLcHZtTW14xSPy+C lCqAut7CyNZdj+V6z8uE8bQSYitPotgul5oQ2HjBj0ixUxoJdeB9tWNVKEEoMOaFH6UL2sp6Vla XiSPU1HyoQKxyHmwU0Naos2FzwPfatj1IhOgluNQtFSag9ZPmpJ1BZt1FFDdt/1U8HmtWBVY/kp /QVy1ICxI= X-Received: by 2002:a1c:cc06:0:b0:3f6:cf3:dba8 with SMTP id h6-20020a1ccc06000000b003f60cf3dba8mr6585890wmb.34.1685951291681; Mon, 05 Jun 2023 00:48:11 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ5uUoaBIg2ErX2rEl1Ihe8Mg/m56SNQQp37Cn9eD4HysfFWzxkC30GePmgb+XQHaSfZx9srPQ== X-Received: by 2002:a1c:cc06:0:b0:3f6:cf3:dba8 with SMTP id h6-20020a1ccc06000000b003f60cf3dba8mr6585872wmb.34.1685951291413; Mon, 05 Jun 2023 00:48:11 -0700 (PDT) Received: from minerva.home (205.pool92-176-231.dynamic.orange.es. [92.176.231.205]) by smtp.gmail.com with ESMTPSA id q21-20020a1ce915000000b003f4fb5532a1sm9715192wmc.43.2023.06.05.00.48.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 05 Jun 2023 00:48:11 -0700 (PDT) From: Javier Martinez Canillas To: linux-kernel@vger.kernel.org Cc: Thomas Zimmermann , Geert Uytterhoeven , Maxime Ripard , Javier Martinez Canillas , Daniel Vetter , David Airlie , dri-devel@lists.freedesktop.org Subject: [PATCH 3/5] drm/ssd130x: Set the page height value in the device info data Date: Mon, 5 Jun 2023 09:47:51 +0200 Message-Id: <20230605074753.562332-4-javierm@redhat.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230605074753.562332-1-javierm@redhat.com> References: <20230605074753.562332-1-javierm@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The driver only supports OLED controllers that have a page height of 8 but there are devices that have different page heights. So it is better to not hardcode this value and instead have it as a per controller data value. Signed-off-by: Javier Martinez Canillas Reviewed-by: Thomas Zimmermann --- drivers/gpu/drm/solomon/ssd130x.c | 15 +++++++++++---- drivers/gpu/drm/solomon/ssd130x.h | 1 + 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/solomon/ssd130x.c b/drivers/gpu/drm/solomon/ss= d130x.c index a0e5e26c0bc9..5cac1149e34e 100644 --- a/drivers/gpu/drm/solomon/ssd130x.c +++ b/drivers/gpu/drm/solomon/ssd130x.c @@ -102,6 +102,7 @@ const struct ssd130x_deviceinfo ssd130x_variants[] =3D { .default_width =3D 132, .default_height =3D 64, .page_mode_only =3D 1, + .page_height =3D 8, }, [SSD1305_ID] =3D { .default_vcomh =3D 0x34, @@ -109,6 +110,7 @@ const struct ssd130x_deviceinfo ssd130x_variants[] =3D { .default_dclk_frq =3D 7, .default_width =3D 132, .default_height =3D 64, + .page_height =3D 8, }, [SSD1306_ID] =3D { .default_vcomh =3D 0x20, @@ -117,6 +119,7 @@ const struct ssd130x_deviceinfo ssd130x_variants[] =3D { .need_chargepump =3D 1, .default_width =3D 128, .default_height =3D 64, + .page_height =3D 8, }, [SSD1307_ID] =3D { .default_vcomh =3D 0x20, @@ -125,6 +128,7 @@ const struct ssd130x_deviceinfo ssd130x_variants[] =3D { .need_pwm =3D 1, .default_width =3D 128, .default_height =3D 39, + .page_height =3D 8, }, [SSD1309_ID] =3D { .default_vcomh =3D 0x34, @@ -132,6 +136,7 @@ const struct ssd130x_deviceinfo ssd130x_variants[] =3D { .default_dclk_frq =3D 10, .default_width =3D 128, .default_height =3D 64, + .page_height =3D 8, } }; EXPORT_SYMBOL_NS_GPL(ssd130x_variants, DRM_SSD130X); @@ -437,7 +442,8 @@ static int ssd130x_update_rect(struct ssd130x_device *s= sd130x, u8 *buf, unsigned int width =3D drm_rect_width(rect); unsigned int height =3D drm_rect_height(rect); unsigned int line_length =3D DIV_ROUND_UP(width, 8); - unsigned int pages =3D DIV_ROUND_UP(height, 8); + unsigned int page_height =3D ssd130x->device_info->page_height; + unsigned int pages =3D DIV_ROUND_UP(height, page_height); struct drm_device *drm =3D &ssd130x->drm; u32 array_idx =3D 0; int ret, i, j, k; @@ -559,16 +565,17 @@ static int ssd130x_fb_blit_rect(struct drm_framebuffe= r *fb, const struct iosys_m struct drm_rect *rect) { struct ssd130x_device *ssd130x =3D drm_to_ssd130x(fb->dev); + unsigned int page_height =3D ssd130x->device_info->page_height; struct iosys_map dst; unsigned int dst_pitch; int ret =3D 0; u8 *buf =3D NULL; =20 /* Align y to display page boundaries */ - rect->y1 =3D round_down(rect->y1, 8); - rect->y2 =3D min_t(unsigned int, round_up(rect->y2, 8), ssd130x->height); + rect->y1 =3D round_down(rect->y1, page_height); + rect->y2 =3D min_t(unsigned int, round_up(rect->y2, page_height), ssd130x= ->height); =20 - dst_pitch =3D DIV_ROUND_UP(drm_rect_width(rect), 8); + dst_pitch =3D DIV_ROUND_UP(drm_rect_width(rect), page_height); buf =3D kcalloc(dst_pitch, drm_rect_height(rect), GFP_KERNEL); if (!buf) return -ENOMEM; diff --git a/drivers/gpu/drm/solomon/ssd130x.h b/drivers/gpu/drm/solomon/ss= d130x.h index a2bc8d75078b..87968b3e7fb8 100644 --- a/drivers/gpu/drm/solomon/ssd130x.h +++ b/drivers/gpu/drm/solomon/ssd130x.h @@ -39,6 +39,7 @@ struct ssd130x_deviceinfo { u32 default_dclk_frq; u32 default_width; u32 default_height; + u32 page_height; int need_pwm; int need_chargepump; bool page_mode_only; --=20 2.40.1 From nobody Mon Feb 9 08:34:05 2026 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 8C3AFC7EE23 for ; Mon, 5 Jun 2023 07:49:16 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231432AbjFEHtN (ORCPT ); Mon, 5 Jun 2023 03:49:13 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39876 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230311AbjFEHtE (ORCPT ); Mon, 5 Jun 2023 03:49:04 -0400 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5ECBEAD for ; Mon, 5 Jun 2023 00:48:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1685951296; 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=Jb5ZBNmOsLwdAeIIsEiIHMvr3a3yTgXtkOj9ysBMgic=; b=hNeixPh2c2HqSpfm6WLH/Fl6qDeUW0JMk+6P+TT7w0knieL4HBZ8WFDdu9saCM/vocywgJ S0wyv16kAOC3wSOeXRJIN3QTcTZ3WahY/9T5+NrFCNLMl9hDlaztx4euouLvlV1SXHsha5 7RVefQ2DsWF0fAipLhWDGIvFW8TYE0I= Received: from mail-lf1-f72.google.com (mail-lf1-f72.google.com [209.85.167.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-391-CtHHOdk6N3OX9jaHnt-4bw-1; Mon, 05 Jun 2023 03:48:15 -0400 X-MC-Unique: CtHHOdk6N3OX9jaHnt-4bw-1 Received: by mail-lf1-f72.google.com with SMTP id 2adb3069b0e04-4ef455ba61cso2873341e87.0 for ; Mon, 05 Jun 2023 00:48:15 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685951293; x=1688543293; 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=Jb5ZBNmOsLwdAeIIsEiIHMvr3a3yTgXtkOj9ysBMgic=; b=etqLAv3l0yH2slY1NLzXeAAIQPTell94MwULDOWFeufwkiCk2IqhMHa1VPC5g7bVyW pCAST+1l7isbPahGZrq4bs9Z0lYRQdNtPyMoyFDLln0vBsiUBzWg1ORWeNHDbfoWokxS zl+pWA7C88tBNROIH4mmz0VxS39lcqeUplNE/rXANQ6CFesKqG2ELmkTYEBN5D1qeYzz 5IZWXUO7U4aWQFUI9xTZS+YAr+4MURHbOu5EZULIJ7yQaG/CMeUA0sfWznAwYvPZuPPx Wt7FIY9KxEq4TLlG4peeAOuPFEjorUli8gDbFpH5ScFHvUIfMpEgOeBGcyK05fI6XswW RaEA== X-Gm-Message-State: AC+VfDxrGfOHYc48W2hpZHa0JPqfwXa+mhRb7hHGcFBUjBOBVR+hJL/0 jqm9sRNKFM/DyjMJottWuRO2xqLq7+dDdSy2Ikax9n13JNvKJBU6fEJdZmg67S7iqTs3FikqtGh lFBYwTdJazsC6HQek1yoKXeMWMO9vOVk0wCWt8GXeOQ5DBrNtArCIRMlXnjoIykPJE5vfedq7FQ pdCPq9TeE= X-Received: by 2002:a05:6512:24b:b0:4f2:5aae:937 with SMTP id b11-20020a056512024b00b004f25aae0937mr5246345lfo.64.1685951293710; Mon, 05 Jun 2023 00:48:13 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ7bqR8PicwO8eChYyt0UvbKtzS7nL0qmlSCkFqy6xk6A9Rh2IHMPd0RSsywg3FEcXJyOuukLA== X-Received: by 2002:a05:6512:24b:b0:4f2:5aae:937 with SMTP id b11-20020a056512024b00b004f25aae0937mr5246326lfo.64.1685951293248; Mon, 05 Jun 2023 00:48:13 -0700 (PDT) Received: from minerva.home (205.pool92-176-231.dynamic.orange.es. [92.176.231.205]) by smtp.gmail.com with ESMTPSA id q21-20020a1ce915000000b003f4fb5532a1sm9715192wmc.43.2023.06.05.00.48.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 05 Jun 2023 00:48:12 -0700 (PDT) From: Javier Martinez Canillas To: linux-kernel@vger.kernel.org Cc: Thomas Zimmermann , Geert Uytterhoeven , Maxime Ripard , Javier Martinez Canillas , Daniel Vetter , David Airlie , dri-devel@lists.freedesktop.org Subject: [PATCH 4/5] drm/ssd130x: Don't allocate buffers on each plane update Date: Mon, 5 Jun 2023 09:47:52 +0200 Message-Id: <20230605074753.562332-5-javierm@redhat.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230605074753.562332-1-javierm@redhat.com> References: <20230605074753.562332-1-javierm@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The resolutions for these panels are fixed and defined in the Device Tree, so there's no point to allocate the buffers on each plane update and that can just be done once. Let's do the allocation and free on the encoder enable and disable helpers since that's where others initialization and teardown operations are done. Signed-off-by: Javier Martinez Canillas Reviewed-by: Thomas Zimmermann --- drivers/gpu/drm/solomon/ssd130x.c | 88 +++++++++++++++++++------------ drivers/gpu/drm/solomon/ssd130x.h | 3 ++ 2 files changed, 56 insertions(+), 35 deletions(-) diff --git a/drivers/gpu/drm/solomon/ssd130x.c b/drivers/gpu/drm/solomon/ss= d130x.c index 5cac1149e34e..0be3b476dc60 100644 --- a/drivers/gpu/drm/solomon/ssd130x.c +++ b/drivers/gpu/drm/solomon/ssd130x.c @@ -146,6 +146,31 @@ static inline struct ssd130x_device *drm_to_ssd130x(st= ruct drm_device *drm) return container_of(drm, struct ssd130x_device, drm); } =20 +static int ssd130x_buf_alloc(struct ssd130x_device *ssd130x) +{ + unsigned int page_height =3D ssd130x->device_info->page_height; + unsigned int pages =3D DIV_ROUND_UP(ssd130x->height, page_height); + + ssd130x->buffer =3D kcalloc(DIV_ROUND_UP(ssd130x->width, 8), + ssd130x->height, GFP_KERNEL); + if (!ssd130x->buffer) + return -ENOMEM; + + ssd130x->data_array =3D kcalloc(ssd130x->width, pages, GFP_KERNEL); + if (!ssd130x->data_array) { + kfree(ssd130x->buffer); + return -ENOMEM; + } + + return 0; +} + +static void ssd130x_buf_free(struct ssd130x_device *ssd130x) +{ + kfree(ssd130x->data_array); + kfree(ssd130x->buffer); +} + /* * Helper to write data (SSD130X_DATA) to the device. */ @@ -434,11 +459,12 @@ static int ssd130x_init(struct ssd130x_device *ssd130= x) SSD130X_SET_ADDRESS_MODE_HORIZONTAL); } =20 -static int ssd130x_update_rect(struct ssd130x_device *ssd130x, u8 *buf, - struct drm_rect *rect) +static int ssd130x_update_rect(struct ssd130x_device *ssd130x, struct drm_= rect *rect) { unsigned int x =3D rect->x1; unsigned int y =3D rect->y1; + u8 *buf =3D ssd130x->buffer; + u8 *data_array =3D ssd130x->data_array; unsigned int width =3D drm_rect_width(rect); unsigned int height =3D drm_rect_height(rect); unsigned int line_length =3D DIV_ROUND_UP(width, 8); @@ -447,14 +473,9 @@ static int ssd130x_update_rect(struct ssd130x_device *= ssd130x, u8 *buf, struct drm_device *drm =3D &ssd130x->drm; u32 array_idx =3D 0; int ret, i, j, k; - u8 *data_array =3D NULL; =20 drm_WARN_ONCE(drm, y % 8 !=3D 0, "y must be aligned to screen page\n"); =20 - data_array =3D kcalloc(width, pages, GFP_KERNEL); - if (!data_array) - return -ENOMEM; - /* * The screen is divided in pages, each having a height of 8 * pixels, and the width of the screen. When sending a byte of @@ -488,11 +509,11 @@ static int ssd130x_update_rect(struct ssd130x_device = *ssd130x, u8 *buf, /* Set address range for horizontal addressing mode */ ret =3D ssd130x_set_col_range(ssd130x, ssd130x->col_offset + x, width); if (ret < 0) - goto out_free; + return ret; =20 ret =3D ssd130x_set_page_range(ssd130x, ssd130x->page_offset + y / 8, pa= ges); if (ret < 0) - goto out_free; + return ret; } =20 for (i =3D 0; i < pages; i++) { @@ -522,11 +543,11 @@ static int ssd130x_update_rect(struct ssd130x_device = *ssd130x, u8 *buf, ssd130x->page_offset + i, ssd130x->col_offset + x); if (ret < 0) - goto out_free; + return ret; =20 ret =3D ssd130x_write_data(ssd130x, data_array, width); if (ret < 0) - goto out_free; + return ret; =20 array_idx =3D 0; } @@ -536,14 +557,11 @@ static int ssd130x_update_rect(struct ssd130x_device = *ssd130x, u8 *buf, if (!ssd130x->page_address_mode) ret =3D ssd130x_write_data(ssd130x, data_array, width * pages); =20 -out_free: - kfree(data_array); return ret; } =20 static void ssd130x_clear_screen(struct ssd130x_device *ssd130x) { - u8 *buf =3D NULL; struct drm_rect fullscreen =3D { .x1 =3D 0, .x2 =3D ssd130x->width, @@ -551,14 +569,7 @@ static void ssd130x_clear_screen(struct ssd130x_device= *ssd130x) .y2 =3D ssd130x->height, }; =20 - buf =3D kcalloc(DIV_ROUND_UP(ssd130x->width, 8), ssd130x->height, - GFP_KERNEL); - if (!buf) - return; - - ssd130x_update_rect(ssd130x, buf, &fullscreen); - - kfree(buf); + ssd130x_update_rect(ssd130x, &fullscreen); } =20 static int ssd130x_fb_blit_rect(struct drm_framebuffer *fb, const struct i= osys_map *vmap, @@ -569,30 +580,27 @@ static int ssd130x_fb_blit_rect(struct drm_framebuffe= r *fb, const struct iosys_m struct iosys_map dst; unsigned int dst_pitch; int ret =3D 0; - u8 *buf =3D NULL; + u8 *buf =3D ssd130x->buffer; + + if (!buf) + return 0; =20 /* Align y to display page boundaries */ rect->y1 =3D round_down(rect->y1, page_height); rect->y2 =3D min_t(unsigned int, round_up(rect->y2, page_height), ssd130x= ->height); =20 dst_pitch =3D DIV_ROUND_UP(drm_rect_width(rect), page_height); - buf =3D kcalloc(dst_pitch, drm_rect_height(rect), GFP_KERNEL); - if (!buf) - return -ENOMEM; =20 ret =3D drm_gem_fb_begin_cpu_access(fb, DMA_FROM_DEVICE); if (ret) - goto out_free; + return ret; =20 iosys_map_set_vaddr(&dst, buf); drm_fb_xrgb8888_to_mono(&dst, &dst_pitch, vmap, fb, rect); =20 drm_gem_fb_end_cpu_access(fb, DMA_FROM_DEVICE); =20 - ssd130x_update_rect(ssd130x, buf, rect); - -out_free: - kfree(buf); + ssd130x_update_rect(ssd130x, rect); =20 return ret; } @@ -701,14 +709,22 @@ static void ssd130x_encoder_helper_atomic_enable(stru= ct drm_encoder *encoder, return; =20 ret =3D ssd130x_init(ssd130x); - if (ret) { - ssd130x_power_off(ssd130x); - return; - } + if (ret) + goto power_off; + + ret =3D ssd130x_buf_alloc(ssd130x); + if (ret) + goto power_off; =20 ssd130x_write_cmd(ssd130x, 1, SSD130X_DISPLAY_ON); =20 backlight_enable(ssd130x->bl_dev); + + return; + +power_off: + ssd130x_power_off(ssd130x); + return; } =20 static void ssd130x_encoder_helper_atomic_disable(struct drm_encoder *enco= der, @@ -721,6 +737,8 @@ static void ssd130x_encoder_helper_atomic_disable(struc= t drm_encoder *encoder, =20 ssd130x_write_cmd(ssd130x, 1, SSD130X_DISPLAY_OFF); =20 + ssd130x_buf_free(ssd130x); + ssd130x_power_off(ssd130x); } =20 diff --git a/drivers/gpu/drm/solomon/ssd130x.h b/drivers/gpu/drm/solomon/ss= d130x.h index 87968b3e7fb8..161588b1cc4d 100644 --- a/drivers/gpu/drm/solomon/ssd130x.h +++ b/drivers/gpu/drm/solomon/ssd130x.h @@ -89,6 +89,9 @@ struct ssd130x_device { u8 col_end; u8 page_start; u8 page_end; + + u8 *buffer; + u8 *data_array; }; =20 extern const struct ssd130x_deviceinfo ssd130x_variants[]; --=20 2.40.1 From nobody Mon Feb 9 08:34:05 2026 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 39949C7EE2A for ; Mon, 5 Jun 2023 07:49:18 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230490AbjFEHtQ (ORCPT ); Mon, 5 Jun 2023 03:49:16 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39950 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230374AbjFEHtE (ORCPT ); Mon, 5 Jun 2023 03:49:04 -0400 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 010DACD for ; Mon, 5 Jun 2023 00:48:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1685951298; 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=JkfyBiLVG0HjTgYBw5BL2+2f7LnDXq371QsA6cUQbfY=; b=VFWmmIRyvud0K2VzEDd1rtp4oZs8VqkStcG2W2rl32qG5WB3nTkW9rQecJOAMPia48kZNF QSa4zkCPBgVMgEP9VIcf6HLyUBHJFcBgVwthqFnytQTRE1QJi45uCk8UhAvDE2Dk5GFwht 0YU+rd52/h7gTzyk20SOdJl34fvC/+M= Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-421-e7pjfwCfPtCrv1874NWQPg-1; Mon, 05 Jun 2023 03:48:16 -0400 X-MC-Unique: e7pjfwCfPtCrv1874NWQPg-1 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-3f6045853c1so21875255e9.3 for ; Mon, 05 Jun 2023 00:48:15 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685951294; x=1688543294; 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=JkfyBiLVG0HjTgYBw5BL2+2f7LnDXq371QsA6cUQbfY=; b=Ftc8SRAq1/3MjuI291HZJ6Qgv6WC/zgipVAxUQ//WoWfbLc0E4Mx2OWU0TQG+cKxCp /bbYUsJV7rvkCKqgsMjndCGAIgd5nevvdlgiVMwB8LM+jSW8JTpu36qynGxsAHVPZEyD vuVzL9SHxtbLj+7m0GEH+GabcgQ0vdpgoy99d+RkYLq7UUfh9BTLLENnn+kRhCqDwbJi U6htLpcGdtl7vWgco0QsjzJqrbikLg6e0VO/IKFTwdPrPvzxI8GBoQJytNnsiv2hJMoV MahE562yb4gsTpz+xQg6pldPHm8wlLj7tys+EHWbJMWIx87upCeiBkRchwsL2cX1HMc7 z5qA== X-Gm-Message-State: AC+VfDxr8DPccV1c6JiBrxAyD/DU24GzFcOs0lmY0C+q/U2/LucdNJx2 PW2+k8Ar70nPPWiQ2S0xntL5nOrOGGO5xgM6VxBLzKRJWUqzldCKW13cvMUxntXSxtvhuhfB763 NlNQoZ3pxbo/XSzMXfOWt/8Becb3HAUbphenQjMN3UY1v+SqTaQvolmPGyfBf87aRp2x75xvTnS Vr/1ptTYQ= X-Received: by 2002:a1c:7705:0:b0:3f4:2897:4eb7 with SMTP id t5-20020a1c7705000000b003f428974eb7mr6150070wmi.38.1685951294688; Mon, 05 Jun 2023 00:48:14 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ5lQbDXqEhzDQtCOm3eBqsPv8QaZ/hSWBzIQiuedzRf86vjl1o6k2bXEStnJY2w/EfQS4x/HQ== X-Received: by 2002:a1c:7705:0:b0:3f4:2897:4eb7 with SMTP id t5-20020a1c7705000000b003f428974eb7mr6150051wmi.38.1685951294488; Mon, 05 Jun 2023 00:48:14 -0700 (PDT) Received: from minerva.home (205.pool92-176-231.dynamic.orange.es. [92.176.231.205]) by smtp.gmail.com with ESMTPSA id q21-20020a1ce915000000b003f4fb5532a1sm9715192wmc.43.2023.06.05.00.48.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 05 Jun 2023 00:48:13 -0700 (PDT) From: Javier Martinez Canillas To: linux-kernel@vger.kernel.org Cc: Thomas Zimmermann , Geert Uytterhoeven , Maxime Ripard , Javier Martinez Canillas , Daniel Vetter , David Airlie , dri-devel@lists.freedesktop.org Subject: [PATCH 5/5] drm/ssd130x: Remove hardcoded bits-per-pixel in ssd130x_buf_alloc() Date: Mon, 5 Jun 2023 09:47:53 +0200 Message-Id: <20230605074753.562332-6-javierm@redhat.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230605074753.562332-1-javierm@redhat.com> References: <20230605074753.562332-1-javierm@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The driver only supports OLED controllers that have a native DRM_FORMAT_C1 pixel format and that is why it has harcoded a division of the width by 8. But the driver might be extended to support devices that have a different pixel format. So it's better to use the struct drm_format_info helpers to compute the size of the buffer, used to store the pixels in native format. Signed-off-by: Javier Martinez Canillas Reviewed-by: Thomas Zimmermann --- drivers/gpu/drm/solomon/ssd130x.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/solomon/ssd130x.c b/drivers/gpu/drm/solomon/ss= d130x.c index 0be3b476dc60..b3dc1ca9dc10 100644 --- a/drivers/gpu/drm/solomon/ssd130x.c +++ b/drivers/gpu/drm/solomon/ssd130x.c @@ -150,9 +150,16 @@ static int ssd130x_buf_alloc(struct ssd130x_device *ss= d130x) { unsigned int page_height =3D ssd130x->device_info->page_height; unsigned int pages =3D DIV_ROUND_UP(ssd130x->height, page_height); + const struct drm_format_info *fi; + unsigned int pitch; =20 - ssd130x->buffer =3D kcalloc(DIV_ROUND_UP(ssd130x->width, 8), - ssd130x->height, GFP_KERNEL); + fi =3D drm_format_info(DRM_FORMAT_C1); + if (!fi) + return -EINVAL; + + pitch =3D drm_format_info_min_pitch(fi, 0, ssd130x->width); + + ssd130x->buffer =3D kcalloc(pitch, ssd130x->height, GFP_KERNEL); if (!ssd130x->buffer) return -ENOMEM; =20 --=20 2.40.1