From patchwork Tue Jun 18 07:41:06 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marko Kohtala X-Patchwork-Id: 11003567 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id EFCA8924 for ; Wed, 19 Jun 2019 07:10:47 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id DDF2B26B39 for ; Wed, 19 Jun 2019 07:10:47 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id D0C8728825; Wed, 19 Jun 2019 07:10:47 +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=-5.2 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 7444726B39 for ; Wed, 19 Jun 2019 07:10:47 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 0ADF96E2BA; Wed, 19 Jun 2019 07:10:23 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mail-wm1-x361.google.com (mail-wm1-x361.google.com [IPv6:2a00:1450:4864:20::361]) by gabe.freedesktop.org (Postfix) with ESMTPS id E9E8F6E10A for ; Tue, 18 Jun 2019 07:41:52 +0000 (UTC) Received: by mail-wm1-x361.google.com with SMTP id g135so2020555wme.4 for ; Tue, 18 Jun 2019 00:41:52 -0700 (PDT) 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; bh=t0Vqi/RB6vd3sTFj8r0XFtYp6zxmyWgaP1RbCqpMuHg=; b=PWJsTGftm74jhnOlh5mNfndZY6siphKEoPB9w2arS1FUypfOcI3DxGecfXYcRTdFpE +kasITHBSoDcJGw4Fd5nJSMyBNOyrJJa9r/zkiZyqE/mmdoCZr1hX+m0PSyivgjBNJma BZPmo4/hrfV3pcfOEF3KgfqYy1DWGG5x77YZHyBFheBj7KSK55rWzTe8ecBLQZ0cuC1D qJ23GucBWL5p+5y7/O2EkTM7nfekT5NfZP89CmPc/22tnz1xcr3+p0uTVm1uaVzzlLWv KqePnGVV6uXdypujkGoT8kTJVRzOK0e+UgGp3hT4B/MuvSJ9JGpjpCwD99xJf7PfUjUZ kjiA== X-Gm-Message-State: APjAAAWTfeyRsF57v/eG4TgvzJHcnU4eXMpwU09P0gbMJl+gKC4RlKCl FAS307K5IMtHBgT/klY2AGSgRI8vsCM5VgSXNcgPB1H5B0VI0g== X-Google-Smtp-Source: APXvYqydFUxa82KvmETVUZcfjM8PkupOirGSVC5mbNqfnR0pyyVWNFLzIVX6nRu9w3pplClHEc3GhFeBPlpa X-Received: by 2002:a1c:6641:: with SMTP id a62mr2039009wmc.175.1560843711554; Tue, 18 Jun 2019 00:41:51 -0700 (PDT) Received: from localhost.localdomain (46-163-209-30.blcnet.fi. [46.163.209.30]) by smtp-relay.gmail.com with ESMTPS id l18sm212063wrn.66.2019.06.18.00.41.50 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Tue, 18 Jun 2019 00:41:51 -0700 (PDT) X-Relaying-Domain: okoko.fi From: Marko Kohtala To: linux-fbdev@vger.kernel.org, devicetree@vger.kernel.org, dri-devel@lists.freedesktop.org Subject: [PATCH 1/6] video: ssd1307fb: Use screen_buffer instead of screen_base Date: Tue, 18 Jun 2019 10:41:06 +0300 Message-Id: <20190618074111.9309-2-marko.kohtala@okoko.fi> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190618074111.9309-1-marko.kohtala@okoko.fi> References: <20190618074111.9309-1-marko.kohtala@okoko.fi> X-Mailman-Approved-At: Wed, 19 Jun 2019 07:10:14 +0000 X-Mailman-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=okoko.fi; s=okoko; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=t0Vqi/RB6vd3sTFj8r0XFtYp6zxmyWgaP1RbCqpMuHg=; b=IsxmHO8pbbaTDMMhZXGehcVjKzvL6pC8soL58WAW8Ieg7BqyKeSgr9E/W7QLo/HCPq 9rABZnNUxf/Ka6yoa2Apt6EwSl3CBmEVF8yd7MBvbyZYiu/J70IQ6tI4r7tywLwWdtlh 5w99AgJ6Tjhws4M+bacGgFhWaQ0/FgvNoa+zE= X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Mark Rutland , =?utf-8?b?TWljaGFsIFZva8OhxI0=?= , Bartlomiej Zolnierkiewicz , David Airlie , Marko Kohtala , Rob Herring MIME-Version: 1.0 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" X-Virus-Scanned: ClamAV using ClamSMTP sparse reported incorrect type due to different address spaces. The screen_base is __iomem, but the memory is not from a device so we can use screen_buffer instead and avoid some type casts. Signed-off-by: Marko Kohtala --- drivers/video/fbdev/ssd1307fb.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/video/fbdev/ssd1307fb.c b/drivers/video/fbdev/ssd1307fb.c index 3b361bc9feb8..6c2980331ffd 100644 --- a/drivers/video/fbdev/ssd1307fb.c +++ b/drivers/video/fbdev/ssd1307fb.c @@ -150,7 +150,7 @@ static inline int ssd1307fb_write_cmd(struct i2c_client *client, u8 cmd) static void ssd1307fb_update_display(struct ssd1307fb_par *par) { struct ssd1307fb_array *array; - u8 *vmem = par->info->screen_base; + u8 *vmem = par->info->screen_buffer; int i, j, k; array = ssd1307fb_alloc_array(par->width * par->height / 8, @@ -213,7 +213,7 @@ static ssize_t ssd1307fb_write(struct fb_info *info, const char __user *buf, struct ssd1307fb_par *par = info->par; unsigned long total_size; unsigned long p = *ppos; - u8 __iomem *dst; + void *dst; total_size = info->fix.smem_len; @@ -226,7 +226,7 @@ static ssize_t ssd1307fb_write(struct fb_info *info, const char __user *buf, if (!count) return -EINVAL; - dst = (void __force *) (info->screen_base + p); + dst = info->screen_buffer + p; if (copy_from_user(dst, buf, count)) return -EFAULT; @@ -547,7 +547,7 @@ static int ssd1307fb_probe(struct i2c_client *client, struct fb_deferred_io *ssd1307fb_defio; u32 vmem_size; struct ssd1307fb_par *par; - u8 *vmem; + void *vmem; int ret; if (!node) { @@ -657,7 +657,7 @@ static int ssd1307fb_probe(struct i2c_client *client, info->var.blue.length = 1; info->var.blue.offset = 0; - info->screen_base = (u8 __force __iomem *)vmem; + info->screen_buffer = vmem; info->fix.smem_start = __pa(vmem); info->fix.smem_len = vmem_size; From patchwork Tue Jun 18 07:41:07 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marko Kohtala X-Patchwork-Id: 11003551 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 1BE16924 for ; Wed, 19 Jun 2019 07:10:19 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 0372F28A4A for ; Wed, 19 Jun 2019 07:10:19 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id EAAB728B4B; Wed, 19 Jun 2019 07:10:18 +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=-5.2 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 2EAFE28A4A for ; Wed, 19 Jun 2019 07:10:18 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 43F6C6E2A0; Wed, 19 Jun 2019 07:10:15 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mail-wr1-x464.google.com (mail-wr1-x464.google.com [IPv6:2a00:1450:4864:20::464]) by gabe.freedesktop.org (Postfix) with ESMTPS id D94F86E106 for ; Tue, 18 Jun 2019 07:41:53 +0000 (UTC) Received: by mail-wr1-x464.google.com with SMTP id c2so12741560wrm.8 for ; Tue, 18 Jun 2019 00:41:53 -0700 (PDT) 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; bh=RJV2c/yp+5Do5r3i0Oh53aiXsFA5fZSjKFxBZIwxxB4=; b=Usja8uVd2oEWJP+fNKgakCzfHFNMax9XKGsjXAOxupepZj9/N9DV9CJ5EOoPhGJr7n mJFN5kCN2Y4t5/6cWKwMFvMGW/0O/YFaa10n8KS6YwO5KDtizAILOMDnZl3YBmjHsvSO Sm9WwG3VXTuRoOkURmMMzPtmmjfWOTZA4+xwsSsyEUY3xNuWO2QoDHQrg73kNmqV1z4J EtGwG9v7YS2dyKK0S7GOuGadCB0iSWp9KKnL4Jg5ahMQaMbmrR5ExJ9cP2iWXyaydDAC chrbDHwukOFp0zLWlMMA4REopUFTKHV37h6ALQtbDCZ4Iv2vo0RlwO0W3f4JM2hja2gl 32iA== X-Gm-Message-State: APjAAAXUnrIAuge4zUiEDnRc5NvywoPn69d52Jf6U3/v3FuXqxOQJK2K LcrTE3EJ119dTaoLZsV681vE/EdsjdnMneaKviISkktoTZDVhg== X-Google-Smtp-Source: APXvYqzJtYYrIsIVjU6HwCxdrP51kOs3TdA56llOXfWqnnEnzoFlKNoTYyUl5l8w6i5sbjU9eoegASs4TVgl X-Received: by 2002:a5d:53c2:: with SMTP id a2mr27917903wrw.8.1560843712369; Tue, 18 Jun 2019 00:41:52 -0700 (PDT) Received: from localhost.localdomain (46-163-209-30.blcnet.fi. [46.163.209.30]) by smtp-relay.gmail.com with ESMTPS id l18sm212063wrn.66.2019.06.18.00.41.51 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Tue, 18 Jun 2019 00:41:52 -0700 (PDT) X-Relaying-Domain: okoko.fi From: Marko Kohtala To: linux-fbdev@vger.kernel.org, devicetree@vger.kernel.org, dri-devel@lists.freedesktop.org Subject: [PATCH 2/6] video: ssd1307fb: Remove unneeded semicolons Date: Tue, 18 Jun 2019 10:41:07 +0300 Message-Id: <20190618074111.9309-3-marko.kohtala@okoko.fi> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190618074111.9309-1-marko.kohtala@okoko.fi> References: <20190618074111.9309-1-marko.kohtala@okoko.fi> X-Mailman-Approved-At: Wed, 19 Jun 2019 07:10:14 +0000 X-Mailman-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=okoko.fi; s=okoko; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=RJV2c/yp+5Do5r3i0Oh53aiXsFA5fZSjKFxBZIwxxB4=; b=d0+0frtSg952+lM6f0nBtK47869GFo/kZ49bF9nda2IzhOwtCpAxPQQKkPzzfvPy7D 4eY4ARuUNqbPQwctLijpvGklj6NQIdAQo0vMwPAoFiVihX1737VFcv+1WPV8x0kO0nX5 DbqE8tyTJHeLE2P/sdmVxB4dYR2ze9fzb51iw= X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Mark Rutland , =?utf-8?b?TWljaGFsIFZva8OhxI0=?= , Bartlomiej Zolnierkiewicz , David Airlie , Marko Kohtala , Rob Herring MIME-Version: 1.0 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" X-Virus-Scanned: ClamAV using ClamSMTP coccicheck reported unneeded semicolons. Remove them. Signed-off-by: Marko Kohtala --- drivers/video/fbdev/ssd1307fb.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/video/fbdev/ssd1307fb.c b/drivers/video/fbdev/ssd1307fb.c index 6c2980331ffd..9ab00e0dadc7 100644 --- a/drivers/video/fbdev/ssd1307fb.c +++ b/drivers/video/fbdev/ssd1307fb.c @@ -313,7 +313,7 @@ static int ssd1307fb_init(struct ssd1307fb_par *par) dev_dbg(&par->client->dev, "Using PWM%d with a %dns period.\n", par->pwm->pwm, par->pwm_period); - }; + } /* Set initial contrast */ ret = ssd1307fb_write_cmd(par->client, SSD1307FB_CONTRAST); @@ -329,7 +329,7 @@ static int ssd1307fb_init(struct ssd1307fb_par *par) ret = ssd1307fb_write_cmd(par->client, SSD1307FB_SEG_REMAP_ON); if (ret < 0) return ret; - }; + } /* Set COM direction */ com_invdir = 0xc0 | (par->com_invdir & 0x1) << 3; @@ -716,7 +716,7 @@ static int ssd1307fb_probe(struct i2c_client *client, if (par->device_info->need_pwm) { pwm_disable(par->pwm); pwm_put(par->pwm); - }; + } regulator_enable_error: if (par->vbat_reg) regulator_disable(par->vbat_reg); @@ -740,7 +740,7 @@ static int ssd1307fb_remove(struct i2c_client *client) if (par->device_info->need_pwm) { pwm_disable(par->pwm); pwm_put(par->pwm); - }; + } fb_deferred_io_cleanup(info); __free_pages(__va(info->fix.smem_start), get_order(info->fix.smem_len)); framebuffer_release(info); From patchwork Tue Jun 18 07:41:08 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marko Kohtala X-Patchwork-Id: 11003565 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 1A532186E for ; Wed, 19 Jun 2019 07:10:46 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 080E826B39 for ; Wed, 19 Jun 2019 07:10:46 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id F0446283CA; Wed, 19 Jun 2019 07:10:45 +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=-5.2 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id A7C6228468 for ; Wed, 19 Jun 2019 07:10:45 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 856FD6E2B1; Wed, 19 Jun 2019 07:10:23 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mail-wr1-x462.google.com (mail-wr1-x462.google.com [IPv6:2a00:1450:4864:20::462]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7346E6E106 for ; Tue, 18 Jun 2019 07:41:54 +0000 (UTC) Received: by mail-wr1-x462.google.com with SMTP id p13so12720304wru.10 for ; Tue, 18 Jun 2019 00:41:54 -0700 (PDT) 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; bh=77CACbLG8YOOXSUPh2HvtcwJqatz/ApGlIF/fbxQ6MM=; b=NfdE+CB9GsQr5j1CgADr/n+mRB9s9IEhngGw8pXBngjB30j7f1KEHV3oPEK26Lljuz lSxjprxYMEAA/GLY4et0f2ssG4LgGCQIRyVn2a1FHj1Ddn9Cu7ACkIiJdiuaIs5rYBFM NqdBvQ+QJqo16S7JJ223CoL8E5R8IrXkeZTa2EDG5Pf2AxXJ2haU4kkXy6Fvl/8z5lKD /kHfcfZNUltRHV7gSFLmsk3ZtecDAj+D42plbSQ/X18rMWR0p0nlFGt9BpntjakezvGN lYLTnKXtrXO7gwc0XwOcHqBbGJYeLHWBPNJZkKDZD5YssRR+oUMULZYq0pndSz9+9vMH 9iOg== X-Gm-Message-State: APjAAAUjYUwmZGPYxB8WpK9Z1RJCo73aKEsRkRwWzZdWxCOPvg2Q6bME 5nr9P+z8HnZXFLGZ6ZRhTeIMqqmFW3EX7zypJFXM1MDoA+mD4g== X-Google-Smtp-Source: APXvYqyGE/GgF3llWsrqocTXT6oGvv/+cbVnAi4GTQVeTr/DTh0qherzKRGe3g2B64lGDtKlirYWQdQUNe/k X-Received: by 2002:adf:c506:: with SMTP id q6mr65175136wrf.219.1560843713168; Tue, 18 Jun 2019 00:41:53 -0700 (PDT) Received: from localhost.localdomain (46-163-209-30.blcnet.fi. [46.163.209.30]) by smtp-relay.gmail.com with ESMTPS id l18sm212063wrn.66.2019.06.18.00.41.52 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Tue, 18 Jun 2019 00:41:53 -0700 (PDT) X-Relaying-Domain: okoko.fi From: Marko Kohtala To: linux-fbdev@vger.kernel.org, devicetree@vger.kernel.org, dri-devel@lists.freedesktop.org Subject: [PATCH 3/6] video: ssd1307fb: Start page range at page_offset Date: Tue, 18 Jun 2019 10:41:08 +0300 Message-Id: <20190618074111.9309-4-marko.kohtala@okoko.fi> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190618074111.9309-1-marko.kohtala@okoko.fi> References: <20190618074111.9309-1-marko.kohtala@okoko.fi> X-Mailman-Approved-At: Wed, 19 Jun 2019 07:10:14 +0000 X-Mailman-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=okoko.fi; s=okoko; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=77CACbLG8YOOXSUPh2HvtcwJqatz/ApGlIF/fbxQ6MM=; b=K4G1zQPJ6Avx1u05WN/I0mLZ1eldWEYzvqTshfQHtPvsMJpxkvHeOewu0QPh7/0vof fPUBYzsij0DMRALgWrkiW3fKmEX02BJDb8RMk2qMaScMXglntIKmv5+FfD9A79HrYk1g C6cKvPAC7l/9KumffEhWIiBTkYZKhPDz1pWwo= X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Mark Rutland , =?utf-8?b?TWljaGFsIFZva8OhxI0=?= , Bartlomiej Zolnierkiewicz , David Airlie , Marko Kohtala , Rob Herring MIME-Version: 1.0 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" X-Virus-Scanned: ClamAV using ClamSMTP The page_offset was only applied to the end of the page range. This caused the display updates to cause a scrolling effect on the display because the amount of data written to the display did not match the range display expected. Fixes: 301bc0675b67 ("video: ssd1307fb: Make use of horizontal addressing mode") Signed-off-by: Marko Kohtala --- drivers/video/fbdev/ssd1307fb.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/video/fbdev/ssd1307fb.c b/drivers/video/fbdev/ssd1307fb.c index 9ab00e0dadc7..86f2b79f3ed5 100644 --- a/drivers/video/fbdev/ssd1307fb.c +++ b/drivers/video/fbdev/ssd1307fb.c @@ -433,7 +433,7 @@ static int ssd1307fb_init(struct ssd1307fb_par *par) if (ret < 0) return ret; - ret = ssd1307fb_write_cmd(par->client, 0x0); + ret = ssd1307fb_write_cmd(par->client, par->page_offset); if (ret < 0) return ret; From patchwork Tue Jun 18 07:41:09 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marko Kohtala X-Patchwork-Id: 11003589 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 91122924 for ; Wed, 19 Jun 2019 07:11:29 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 7EBC928A68 for ; Wed, 19 Jun 2019 07:11:29 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 7314828B4B; Wed, 19 Jun 2019 07:11:29 +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=-5.2 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 7633E28A68 for ; Wed, 19 Jun 2019 07:11:28 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 3E6AA6E2C4; Wed, 19 Jun 2019 07:11:23 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mail-wm1-x363.google.com (mail-wm1-x363.google.com [IPv6:2a00:1450:4864:20::363]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5049E6E106 for ; Tue, 18 Jun 2019 07:41:55 +0000 (UTC) Received: by mail-wm1-x363.google.com with SMTP id a15so2019152wmj.5 for ; Tue, 18 Jun 2019 00:41:55 -0700 (PDT) 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; bh=uaCCOwT6FdYmvMhllu/QeWwGRVseqHgvjzdBnHOd69M=; b=KxVAzzz3yLsR1Mz6hmXG3ig1EKo9itgpJtyzfGMoDFSmWtFwPMcXmjlttMcU5g3zYl maCGmTSmy+DjCC4e8hVkleESs2L0RAdfF+GlxIpoAPLawqzrahX+NVPlTtjo2zDP1bjz 75/d5r1q0lLiKB7+mm97riN6EpOLG53EWSRwkQN7OV0vQGCgEZ0HQ0z11ZGa9jWvoTXP Qv9L9q6n5c3FwwwqM7sJ+hC9aN3NYS6q5UVQ5DBjRN52w+JOQ9zH0fXB5tgNP/hLm81g uw/+PgIA+dGrT+vVEW4ujiEuCAkNs/fOwfu3km3fZHJ46lLJXjy8w6gpjMXFhTLHC/yk YjBQ== X-Gm-Message-State: APjAAAXMw6e+YlTXN8DOZJORwfEy+lX7CoihZVcDfiP04cPBvKUiaSXc ABcNXEBgN7UxH2mScIJedS4opq+pmSjpFv9CCls6HiVJpcx93w== X-Google-Smtp-Source: APXvYqwVYysIgOjHK+Kva6RmxGWI0gn5iUhuZshGHTaWhSUakRHcy5t1o7CtKGKWq2sYfpNRq6WDuIHsIVt2 X-Received: by 2002:a1c:448b:: with SMTP id r133mr2204309wma.114.1560843713987; Tue, 18 Jun 2019 00:41:53 -0700 (PDT) Received: from localhost.localdomain (46-163-209-30.blcnet.fi. [46.163.209.30]) by smtp-relay.gmail.com with ESMTPS id l18sm212063wrn.66.2019.06.18.00.41.53 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Tue, 18 Jun 2019 00:41:53 -0700 (PDT) X-Relaying-Domain: okoko.fi From: Marko Kohtala To: linux-fbdev@vger.kernel.org, devicetree@vger.kernel.org, dri-devel@lists.freedesktop.org Subject: [PATCH 4/6] video: ssd1307fb: Handle width and height that are not multiple of 8 Date: Tue, 18 Jun 2019 10:41:09 +0300 Message-Id: <20190618074111.9309-5-marko.kohtala@okoko.fi> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190618074111.9309-1-marko.kohtala@okoko.fi> References: <20190618074111.9309-1-marko.kohtala@okoko.fi> X-Mailman-Approved-At: Wed, 19 Jun 2019 07:10:14 +0000 X-Mailman-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=okoko.fi; s=okoko; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=uaCCOwT6FdYmvMhllu/QeWwGRVseqHgvjzdBnHOd69M=; b=Pfg9Ih+86S3Xtc3Q3MbPoD1yKZf5q9ftjSxkHMFON5uo0EZlqN43AwurFcKUty7P9w oKJWvmQbND30gnRuRugdhgCYJVX/nNysALrdP7FDYbwlnWxdlrXHQFhWpS0P1sFwUorl LQkN+f3DEabIIVpNYWzasblfkpToaGaIedkas= X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Mark Rutland , =?utf-8?b?TWljaGFsIFZva8OhxI0=?= , Bartlomiej Zolnierkiewicz , David Airlie , Marko Kohtala , Rob Herring MIME-Version: 1.0 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" X-Virus-Scanned: ClamAV using ClamSMTP Some displays have dimensions that are not multiple of eight, for example height of 36, but the driver divided the dimensions by 8. Defining display to the next multiple of 8 is not good as then the display registers get configured to dimensions that do not match. This contradicts intructions by some display manufacturers. Use DIV_ROUND_UP to multiple of 8 when needed so correct values can be used. The ssd1307fb_update_display bit reordering receives a simplification in the process. Signed-off-by: Marko Kohtala --- drivers/video/fbdev/ssd1307fb.c | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/drivers/video/fbdev/ssd1307fb.c b/drivers/video/fbdev/ssd1307fb.c index 86f2b79f3ed5..4f4a1b99d17d 100644 --- a/drivers/video/fbdev/ssd1307fb.c +++ b/drivers/video/fbdev/ssd1307fb.c @@ -151,10 +151,11 @@ static void ssd1307fb_update_display(struct ssd1307fb_par *par) { struct ssd1307fb_array *array; u8 *vmem = par->info->screen_buffer; + unsigned int line_length = par->info->fix.line_length; + unsigned int pages = DIV_ROUND_UP(par->height, 8); int i, j, k; - array = ssd1307fb_alloc_array(par->width * par->height / 8, - SSD1307FB_DATA); + array = ssd1307fb_alloc_array(par->width * pages, SSD1307FB_DATA); if (!array) return; @@ -187,22 +188,24 @@ static void ssd1307fb_update_display(struct ssd1307fb_par *par) * (5) A4 B4 C4 D4 E4 F4 G4 H4 */ - for (i = 0; i < (par->height / 8); i++) { + for (i = 0; i < pages; i++) { for (j = 0; j < par->width; j++) { + int m = 8; u32 array_idx = i * par->width + j; array->data[array_idx] = 0; - for (k = 0; k < 8; k++) { - u32 page_length = par->width * i; - u32 index = page_length + (par->width * k + j) / 8; - u8 byte = *(vmem + index); - u8 bit = byte & (1 << (j % 8)); - bit = bit >> (j % 8); + /* Last page may be partial */ + if (i + 1 == pages && par->height % 8) + m = par->height % 8; + for (k = 0; k < m; k++) { + u8 byte = vmem[(8 * i + k) * line_length + + j / 8]; + u8 bit = (byte >> (j % 8)) & 1; array->data[array_idx] |= bit << k; } } } - ssd1307fb_write_array(par->client, array, par->width * par->height / 8); + ssd1307fb_write_array(par->client, array, par->width * pages); kfree(array); } @@ -438,7 +441,8 @@ static int ssd1307fb_init(struct ssd1307fb_par *par) return ret; ret = ssd1307fb_write_cmd(par->client, - par->page_offset + (par->height / 8) - 1); + par->page_offset + + DIV_ROUND_UP(par->height, 8) - 1); if (ret < 0) return ret; @@ -618,7 +622,7 @@ static int ssd1307fb_probe(struct i2c_client *client, par->dclk_div = par->device_info->default_dclk_div; par->dclk_frq = par->device_info->default_dclk_frq; - vmem_size = par->width * par->height / 8; + vmem_size = DIV_ROUND_UP(par->width, 8) * par->height; vmem = (void *)__get_free_pages(GFP_KERNEL | __GFP_ZERO, get_order(vmem_size)); @@ -641,7 +645,7 @@ static int ssd1307fb_probe(struct i2c_client *client, info->fbops = &ssd1307fb_ops; info->fix = ssd1307fb_fix; - info->fix.line_length = par->width / 8; + info->fix.line_length = DIV_ROUND_UP(par->width, 8); info->fbdefio = ssd1307fb_defio; info->var = ssd1307fb_var; From patchwork Tue Jun 18 07:41:10 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marko Kohtala X-Patchwork-Id: 11003617 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 3901514DB for ; Wed, 19 Jun 2019 07:12:25 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 259FE28A68 for ; Wed, 19 Jun 2019 07:12:25 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 1A2F328B4B; Wed, 19 Jun 2019 07:12:25 +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=-5.2 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id C240428A68 for ; Wed, 19 Jun 2019 07:12:24 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 8498E6E2EE; Wed, 19 Jun 2019 07:11:43 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mail-wr1-x462.google.com (mail-wr1-x462.google.com [IPv6:2a00:1450:4864:20::462]) by gabe.freedesktop.org (Postfix) with ESMTPS id 18D906E106 for ; Tue, 18 Jun 2019 07:41:56 +0000 (UTC) Received: by mail-wr1-x462.google.com with SMTP id n4so4662568wrs.3 for ; Tue, 18 Jun 2019 00:41:56 -0700 (PDT) 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; bh=0PrSR+jN+SJngU5g9VL57RLfBmPfgfrprow1ZhWuEaU=; b=oCcWEfc6A/Md4zmAsvzNcFk//TO4qXViEWe9K+NEscTGEVucpmb0A9zm+EoJAmSN/d bHYRRFplpibCSpdfpFjY7/D+sqBHaCaREOtTBCfLwT2VF6fOG+NenJ1cwxc3Is1xxoCe i/WcQFgnU6ZW4+K+I4ILUAMZCinBJWsoRBLAGPujlxibQKB0DX1fZWCxs7WLdCaiSCjg dqoSy6Z+uF7tG+ubVn/8QiKlOMLRlbvqGy8k72xIWB3CP5EdY4HmnovkHZlU+1HItL4V J9IE/6f+xTQ9lxZrbyFcaDBrtTsmjdQVes5MuHrjbZwy0Vml06nX9nkeAn140G3T/1YV 7vsw== X-Gm-Message-State: APjAAAWo8dH7bMkeFKNN9+vhLnAKGYQgP0j9ECAQ+5kDSaY7UALaWQn0 RHiX0VnzF5gnwkM9R1aaF7d/vLWWIFdd6z8iqH5sMUdsGAtong== X-Google-Smtp-Source: APXvYqzLg7eWFSh4aDeAY+p0mLGpxFDGnAoM7uLRTr9Z17I85OAZshKEtrRGTEUMuiUDdNcm1goZ80zuNSHH X-Received: by 2002:a5d:5702:: with SMTP id a2mr37285683wrv.89.1560843714771; Tue, 18 Jun 2019 00:41:54 -0700 (PDT) Received: from localhost.localdomain (46-163-209-30.blcnet.fi. [46.163.209.30]) by smtp-relay.gmail.com with ESMTPS id l18sm212063wrn.66.2019.06.18.00.41.54 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Tue, 18 Jun 2019 00:41:54 -0700 (PDT) X-Relaying-Domain: okoko.fi From: Marko Kohtala To: linux-fbdev@vger.kernel.org, devicetree@vger.kernel.org, dri-devel@lists.freedesktop.org Subject: [PATCH 5/6] dt-bindings: display: ssd1307fb: Add initialization properties Date: Tue, 18 Jun 2019 10:41:10 +0300 Message-Id: <20190618074111.9309-6-marko.kohtala@okoko.fi> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190618074111.9309-1-marko.kohtala@okoko.fi> References: <20190618074111.9309-1-marko.kohtala@okoko.fi> X-Mailman-Approved-At: Wed, 19 Jun 2019 07:10:14 +0000 X-Mailman-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=okoko.fi; s=okoko; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=0PrSR+jN+SJngU5g9VL57RLfBmPfgfrprow1ZhWuEaU=; b=XbZMhCy9PwEALPH0NPGJdcZHF9zS0XOpOR8x3PSFQlEjCQ6Gz4bo2b0Z/DVboYMNYL bawh0DCI+ryYkeLPaXzxB8PkLFsPGYTd04hm54Pli6Hu9JocehoOAo5PJihEnCP9lOXk FkcVPkHXMltxhZ2+oh+mgoHbT57SZMkX/prR0= X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Mark Rutland , =?utf-8?b?TWljaGFsIFZva8OhxI0=?= , Bartlomiej Zolnierkiewicz , David Airlie , Marko Kohtala , Rob Herring MIME-Version: 1.0 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" X-Virus-Scanned: ClamAV using ClamSMTP Document new bindings for adapting ssd1307fb driver to new displays. Signed-off-by: Marko Kohtala Reviewed-by: Rob Herring --- .../devicetree/bindings/display/ssd1307fb.txt | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Documentation/devicetree/bindings/display/ssd1307fb.txt b/Documentation/devicetree/bindings/display/ssd1307fb.txt index b67f8caa212c..27333b9551b3 100644 --- a/Documentation/devicetree/bindings/display/ssd1307fb.txt +++ b/Documentation/devicetree/bindings/display/ssd1307fb.txt @@ -27,6 +27,15 @@ Optional properties: - solomon,prechargep2: Length of precharge period (phase 2) in clock cycles. This needs to be the higher, the higher the capacitance of the OLED's pixels is + - solomon,dclk-div: Clock divisor 1 to 16 + - solomon,dclk-frq: Clock frequency 0 to 15, higher value means higher + frequency + - solomon,lookup-table: 8 bit value array of current drive pulse widths for + BANK0, and colors A, B, and C. Each value in range + of 31 to 63 for pulse widths of 32 to 64. Color D + is always width 64. + - solomon,area-color-enable: Display uses color mode + - solomon,low-power. Display runs in low power mode [0]: Documentation/devicetree/bindings/pwm/pwm.txt @@ -46,4 +55,5 @@ ssd1306: oled@3c { solomon,com-lrremap; solomon,com-invdir; solomon,com-offset = <32>; + solomon,lookup-table = /bits/ 8 <0x3f 0x3f 0x3f 0x3f>; }; From patchwork Tue Jun 18 07:41:11 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marko Kohtala X-Patchwork-Id: 11003609 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id DBD3D924 for ; Wed, 19 Jun 2019 07:12:13 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id C68A728A68 for ; Wed, 19 Jun 2019 07:12:13 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id BA55628B4B; Wed, 19 Jun 2019 07:12:13 +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=-5.2 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 3E96928A68 for ; Wed, 19 Jun 2019 07:12:13 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 7F6026E2E8; Wed, 19 Jun 2019 07:11:37 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mail-wr1-x461.google.com (mail-wr1-x461.google.com [IPv6:2a00:1450:4864:20::461]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1A4A66E106 for ; Tue, 18 Jun 2019 07:41:57 +0000 (UTC) Received: by mail-wr1-x461.google.com with SMTP id c2so12741789wrm.8 for ; Tue, 18 Jun 2019 00:41:57 -0700 (PDT) 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; bh=rNkk0KsbO3YcUF9ymJ/Izy+/IeIKEUGythTLywp5Ihs=; b=dA9X3ESveflAiLSoCdVhSgJ6j9jvu9taF54CWgw1oatO8SsWyJD4TmqxwvME7/6KA/ jaroqSDRD8PDfQyZOpaCLhy0u54mGfuPwozg+i8ugWcnYHr3ghzbATqTyHAxyEBlsSUN jns7pdgwK3mMrXw3CAli3NvQ09QApZkz1+Esd6PBFDzy7uscctPwZe7CVXqBMSXrDqKq ZzxujeardV7gR6lYhlJx+O3SUgBOX3zpXMk+t9tz7jrKyfYgbElXZJm1NRBj5ZGdeJQE CjpBPWnkpTx29uND4jtjmdbavmpTybl88ygFhvPL5nxC23l9JoOSsQaFIXdGP6HNfgby 1BOg== X-Gm-Message-State: APjAAAVJCFajeAGJoXpNIq72ofU0OjUn44etORcnkxN1Wm+vCTSw5cZP JKQAPmUExfmH2EuYCtFk9Xj5cmtB2sZnxSkxuE0u7Nry3Qs0mw== X-Google-Smtp-Source: APXvYqzAuwJZzHjJO+VMYRz/onGA03PFgeWDiSBswwI4SsuQTJYCfILB3zo1KrRCnyTMFgUxJOpzvnc+lfbZ X-Received: by 2002:a5d:6449:: with SMTP id d9mr23754483wrw.192.1560843715707; Tue, 18 Jun 2019 00:41:55 -0700 (PDT) Received: from localhost.localdomain (46-163-209-30.blcnet.fi. [46.163.209.30]) by smtp-relay.gmail.com with ESMTPS id l18sm212063wrn.66.2019.06.18.00.41.54 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Tue, 18 Jun 2019 00:41:55 -0700 (PDT) X-Relaying-Domain: okoko.fi From: Marko Kohtala To: linux-fbdev@vger.kernel.org, devicetree@vger.kernel.org, dri-devel@lists.freedesktop.org Subject: [PATCH 6/6] video: ssd1307fb: Add devicetree configuration of display setup Date: Tue, 18 Jun 2019 10:41:11 +0300 Message-Id: <20190618074111.9309-7-marko.kohtala@okoko.fi> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190618074111.9309-1-marko.kohtala@okoko.fi> References: <20190618074111.9309-1-marko.kohtala@okoko.fi> X-Mailman-Approved-At: Wed, 19 Jun 2019 07:10:14 +0000 X-Mailman-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=okoko.fi; s=okoko; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=rNkk0KsbO3YcUF9ymJ/Izy+/IeIKEUGythTLywp5Ihs=; b=NpcJqVJ7oMwCHKq+K8XtNKFwzz/R4irs1neyzPkukpQlNYfqk2jXuCPYslO9Vbtia1 JGSC72YgcwPtuvPeMMLK/JyeNzFLssUmOFSR9ZTaoKXz9yFfgrgNtYgjoz6jfBI1Ol90 3NZeKgHz4geTHcmiwj/VFOnOfmm6DpVODx9eg= X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Mark Rutland , =?utf-8?b?TWljaGFsIFZva8OhxI0=?= , Bartlomiej Zolnierkiewicz , David Airlie , Marko Kohtala , Rob Herring MIME-Version: 1.0 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" X-Virus-Scanned: ClamAV using ClamSMTP Various displays have differences that only mean initializing the display driver IC with different fixed register values. Defining these in devicetree offers easier way to adapt the driver to new displays than requiring a patch to the kernel. This adds devicetree properties needed to make the initialization match the example setup as offered by Densitron for their 128x36 display. It also makes some old one bit parameter handling a little cleaner. Signed-off-by: Marko Kohtala --- drivers/video/fbdev/ssd1307fb.c | 80 ++++++++++++++++++++++++++------- 1 file changed, 64 insertions(+), 16 deletions(-) diff --git a/drivers/video/fbdev/ssd1307fb.c b/drivers/video/fbdev/ssd1307fb.c index 4f4a1b99d17d..fca1e91d03d9 100644 --- a/drivers/video/fbdev/ssd1307fb.c +++ b/drivers/video/fbdev/ssd1307fb.c @@ -29,6 +29,7 @@ #define SSD1307FB_SET_COL_RANGE 0x21 #define SSD1307FB_SET_PAGE_RANGE 0x22 #define SSD1307FB_CONTRAST 0x81 +#define SSD1307FB_SET_LOOKUP_TABLE 0x91 #define SSD1307FB_CHARGE_PUMP 0x8d #define SSD1307FB_SEG_REMAP_ON 0xa1 #define SSD1307FB_DISPLAY_OFF 0xae @@ -37,6 +38,7 @@ #define SSD1307FB_START_PAGE_ADDRESS 0xb0 #define SSD1307FB_SET_DISPLAY_OFFSET 0xd3 #define SSD1307FB_SET_CLOCK_FREQ 0xd5 +#define SSD1307FB_SET_AREA_COLOR_MODE 0xd8 #define SSD1307FB_SET_PRECHARGE_PERIOD 0xd9 #define SSD1307FB_SET_COM_PINS_CONFIG 0xda #define SSD1307FB_SET_VCOMH 0xdb @@ -59,10 +61,14 @@ struct ssd1307fb_deviceinfo { }; struct ssd1307fb_par { - u32 com_invdir; - u32 com_lrremap; + unsigned area_color_enable : 1; + unsigned com_invdir : 1; + unsigned com_lrremap : 1; + unsigned com_seq : 1; + unsigned lookup_table_set : 1; + unsigned low_power : 1; + unsigned seg_remap : 1; u32 com_offset; - u32 com_seq; u32 contrast; u32 dclk_div; u32 dclk_frq; @@ -70,6 +76,7 @@ struct ssd1307fb_par { struct i2c_client *client; u32 height; struct fb_info *info; + u8 lookup_table[4]; u32 page_offset; u32 prechargep1; u32 prechargep2; @@ -77,7 +84,6 @@ struct ssd1307fb_par { u32 pwm_period; struct gpio_desc *reset; struct regulator *vbat_reg; - u32 seg_remap; u32 vcomh; u32 width; }; @@ -99,6 +105,9 @@ static const struct fb_fix_screeninfo ssd1307fb_fix = { static const struct fb_var_screeninfo ssd1307fb_var = { .bits_per_pixel = 1, + .red = { .length = 1 }, + .green = { .length = 1 }, + .blue = { .length = 1 }, }; static struct ssd1307fb_array *ssd1307fb_alloc_array(u32 len, u8 type) @@ -335,7 +344,7 @@ static int ssd1307fb_init(struct ssd1307fb_par *par) } /* Set COM direction */ - com_invdir = 0xc0 | (par->com_invdir & 0x1) << 3; + com_invdir = 0xc0 | par->com_invdir << 3; ret = ssd1307fb_write_cmd(par->client, com_invdir); if (ret < 0) return ret; @@ -368,6 +377,22 @@ static int ssd1307fb_init(struct ssd1307fb_par *par) if (ret < 0) return ret; + /* Set Set Area Color Mode ON/OFF & Low Power Display Mode */ + if (par->area_color_enable || par->low_power) { + u32 mode; + + ret = ssd1307fb_write_cmd(par->client, + SSD1307FB_SET_AREA_COLOR_MODE); + if (ret < 0) + return ret; + + mode = (par->area_color_enable ? 0x30 : 0) | + (par->low_power ? 5 : 0); + ret = ssd1307fb_write_cmd(par->client, mode); + if (ret < 0) + return ret; + } + /* Set precharge period in number of ticks from the internal clock */ ret = ssd1307fb_write_cmd(par->client, SSD1307FB_SET_PRECHARGE_PERIOD); if (ret < 0) @@ -383,8 +408,7 @@ static int ssd1307fb_init(struct ssd1307fb_par *par) if (ret < 0) return ret; - compins = 0x02 | !(par->com_seq & 0x1) << 4 - | (par->com_lrremap & 0x1) << 5; + compins = 0x02 | !par->com_seq << 4 | par->com_lrremap << 5; ret = ssd1307fb_write_cmd(par->client, compins); if (ret < 0) return ret; @@ -408,6 +432,28 @@ static int ssd1307fb_init(struct ssd1307fb_par *par) if (ret < 0) return ret; + /* Set lookup table */ + if (par->lookup_table_set) { + int i; + + ret = ssd1307fb_write_cmd(par->client, + SSD1307FB_SET_LOOKUP_TABLE); + if (ret < 0) + return ret; + + for (i = 0; i < ARRAY_SIZE(par->lookup_table); ++i) { + u8 val = par->lookup_table[i]; + + if (val < 31 || val > 63) + dev_warn(&par->client->dev, + "lookup table index %d value out of range 31 <= %d <= 63\n", + i, val); + ret = ssd1307fb_write_cmd(par->client, val); + if (ret < 0) + return ret; + } + } + /* Switch to horizontal addressing mode */ ret = ssd1307fb_write_cmd(par->client, SSD1307FB_SET_ADDRESS_MODE); if (ret < 0) @@ -610,17 +656,26 @@ static int ssd1307fb_probe(struct i2c_client *client, if (of_property_read_u32(node, "solomon,prechargep2", &par->prechargep2)) par->prechargep2 = 2; + if (!of_property_read_u8_array(node, "solomon,lookup-table", + par->lookup_table, ARRAY_SIZE(par->lookup_table))) + par->lookup_table_set = 1; + par->seg_remap = !of_property_read_bool(node, "solomon,segment-no-remap"); par->com_seq = of_property_read_bool(node, "solomon,com-seq"); par->com_lrremap = of_property_read_bool(node, "solomon,com-lrremap"); par->com_invdir = of_property_read_bool(node, "solomon,com-invdir"); + par->area_color_enable = + of_property_read_bool(node, "solomon,area-color-enable"); + par->low_power = of_property_read_bool(node, "solomon,low-power"); par->contrast = 127; par->vcomh = par->device_info->default_vcomh; /* Setup display timing */ - par->dclk_div = par->device_info->default_dclk_div; - par->dclk_frq = par->device_info->default_dclk_frq; + if (of_property_read_u32(node, "solomon,dclk-div", &par->dclk_div)) + par->dclk_div = par->device_info->default_dclk_div; + if (of_property_read_u32(node, "solomon,dclk-frq", &par->dclk_frq)) + par->dclk_frq = par->device_info->default_dclk_frq; vmem_size = DIV_ROUND_UP(par->width, 8) * par->height; @@ -654,13 +709,6 @@ static int ssd1307fb_probe(struct i2c_client *client, info->var.yres = par->height; info->var.yres_virtual = par->height; - info->var.red.length = 1; - info->var.red.offset = 0; - info->var.green.length = 1; - info->var.green.offset = 0; - info->var.blue.length = 1; - info->var.blue.offset = 0; - info->screen_buffer = vmem; info->fix.smem_start = __pa(vmem); info->fix.smem_len = vmem_size;