From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.5 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 48BD1C4727E for ; Wed, 30 Sep 2020 09:45:18 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id A5B812075F for ; Wed, 30 Sep 2020 09:45:17 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="2MNkt7fH"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=ffwll.ch header.i=@ffwll.ch header.b="R6bW/xtB" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A5B812075F Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=ffwll.ch Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References:Message-ID: Subject:To:From:Date:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=ZztxbIFOpVG+wpRHPkzpxftzxputvGhfNe/DXjtuSxI=; b=2MNkt7fHxiGRIB2KlaSEWhqqo 8UwHxp7TekWN8CYMCrmAjUAvFXbf2FlqqIUgxQxPWHv0smiuXrAjA+NN2zElH9ppEPmR9y1b00FzF 9m6qPVyTxyuRFc858CZ9gBQDTqIfPld4q7WnVduMP6Ru9ZHYCRC6zsIfoQcA9Bij95IQJyX/LgXaT ohHI04Go5NM8AAdbIzg/9HE7Td/ogtYNM4Hd1NbvaDi9IIgcqQ89K3A8+yFHbcCrqNvPIZT15RMIL LzSmw34drxqdE0XTwm1j6SsOztNpEr7qBW9pZnH/y6hHgqc8HA4NMbAMGO0gv8g01tj/1Y3kJKkoQ P/wzQpAuA==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kNYe3-0000bh-Vf; Wed, 30 Sep 2020 09:43:32 +0000 Received: from mail-wr1-x444.google.com ([2a00:1450:4864:20::444]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kNYdv-0000ZC-60 for linux-arm-kernel@lists.infradead.org; Wed, 30 Sep 2020 09:43:29 +0000 Received: by mail-wr1-x444.google.com with SMTP id m6so1033380wrn.0 for ; Wed, 30 Sep 2020 02:43:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ffwll.ch; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:content-transfer-encoding:in-reply-to; bh=SYP3Xx/9aJouCvemUaCysEYvQ4x4v+8YM0EZuVSMfq0=; b=R6bW/xtBxshR+nhWUjJqT7AHg7Qp+CHSQxjLbQuJFSjsrF/TMcBpn8nSfkLmyuNshq 6ypFcQBZ9UCTJI2/NBSjCo0eDjbfEJ9VCTIJBzzkl/pjmZJul18j92hl35Z0nsYmdjYn dJZYicAStjHLAk/n29OB16KAJy1qadmjqe17I= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:content-transfer-encoding :in-reply-to; bh=SYP3Xx/9aJouCvemUaCysEYvQ4x4v+8YM0EZuVSMfq0=; b=cywM/CrKAjMD08Zv1teVmbRY5VubGOmRHN5PNBoAkSla2DWxo2jNpuPulBQEEr/MIf 100+9pDFeE0xthqSriNA6H8kIn4/JOs/TsuFqMaaRxdIablKKmg8RKUkc0C4+87ivkfC M7DqdC7MCaKEX3GhfDAt0OhhdQgmwFUG38GHkRPYwci8JQxTGmwUHdAz1x9xnbXB1JCq 3mk8Cd2VTTCIlg33NB/yJi017WJ/rJRV930P/oViq6gwtEXX5TRbWp+r39HPhFm/x+Fu FkV4O7fqYUJ69FWXHcV0kdmgsQ0J8NCAANzQfUbhhDZbcHRZrC0xWHPnrCH6uW//i1s9 ltxA== X-Gm-Message-State: AOAM5300SKKpdZAn19wHMdtXXsuuKx9vBfQt+WleGDQXPpcTtWZWjk4f GoHU5LnBt/j4vwoUMkLRyVpqbg== X-Google-Smtp-Source: ABdhPJxKDXEVyEFhQaxFxCaFYbaVggu5dHLUm9JcrR5/NE9z6Jc/eDLBinx51WKPCySfa6W1yLt+iA== X-Received: by 2002:a5d:688b:: with SMTP id h11mr2091002wru.319.1601459001421; Wed, 30 Sep 2020 02:43:21 -0700 (PDT) Received: from phenom.ffwll.local ([2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa]) by smtp.gmail.com with ESMTPSA id i9sm1687596wma.47.2020.09.30.02.43.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 30 Sep 2020 02:43:20 -0700 (PDT) Date: Wed, 30 Sep 2020 11:43:18 +0200 From: Daniel Vetter To: Peter Collingbourne Subject: Re: [PATCH] Revert "video: fbdev: amba-clcd: Retire elder CLCD driver" Message-ID: <20200930094318.GV438822@phenom.ffwll.local> References: <20200928200856.1897023-1-pcc@google.com> <0dc9f36b-417d-bfad-9eb7-858c3041ff0c@baylibre.com> <20200929093201.GL438822@phenom.ffwll.local> <20200929164828.GP438822@phenom.ffwll.local> <20200929165206.GQ438822@phenom.ffwll.local> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Operating-System: Linux phenom 5.7.0-1-amd64 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200930_054323_562065_4AB19BD6 X-CRM114-Status: GOOD ( 65.13 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Neil Armstrong , Linus Walleij , Kevin Brodsky , Russell King , ML dri-devel , Eric Anholt , Daniel Vetter , Sean Paul , Linux ARM Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org On Tue, Sep 29, 2020 at 01:51:36PM -0700, Peter Collingbourne wrote: > On Tue, Sep 29, 2020 at 11:44 AM Daniel Vetter wrote: > > > > On Tue, Sep 29, 2020 at 7:49 PM Peter Collingbourne wr= ote: > > > > > > On Tue, Sep 29, 2020 at 9:52 AM Daniel Vetter wrote: > > > > > > > > On Tue, Sep 29, 2020 at 06:48:28PM +0200, Daniel Vetter wrote: > > > > > On Tue, Sep 29, 2020 at 09:30:08AM -0700, Peter Collingbourne wro= te: > > > > > > On Tue, Sep 29, 2020 at 2:32 AM Daniel Vetter = wrote: > > > > > > > > > > > > > > On Tue, Sep 29, 2020 at 09:28:56AM +0200, Neil Armstrong wrot= e: > > > > > > > > Hi, > > > > > > > > > > > > > > > > On 28/09/2020 22:08, Peter Collingbourne wrote: > > > > > > > > > Also revert the follow-up change "drm: pl111: Absorb the = external > > > > > > > > > register header". > > > > > > > > > > > > > > > > > > This reverts commits 7e4e589db76a3cf4c1f534eb5a09cc642276= 6b93 > > > > > > > > > and 0fb8125635e8eb5483fb095f98dcf0651206a7b8. > > > > > > > > > > > > > > > > > > The fbdev driver is used by Android's FVP configuration. = Using the > > > > > > > > > DRM driver together with DRM's fbdev emulation results in= a failure > > > > > > > > > to boot Android. The root cause is that Android's generic= fbdev > > > > > > > > > userspace driver relies on the ability to set the pixel f= ormat via > > > > > > > > > FBIOPUT_VSCREENINFO, which is not supported by fbdev emul= ation. > > > > > > > > > > > > > > > > Can't Android FVP use drm-hwcomposer instead ? > > > > > > > > > > > > Not without kernel changes. See e.g. > > > > > > https://www.spinics.net/lists/dri-devel/msg255883.html > > > > > > > > > > That discussion seems to have died down with no further action. > > > > > > > > > > I also was kinda under the assumption that with Android these buf= fers > > > > > would be allocated directly from dma-buf heaps/ion, so this all s= eems not > > > > > that well baked out. > > > > > > The disagreement about whether these allocations should be made via > > > the render node or via dma-buf/ion is one reason why it was hard to > > > make progress on this, unfortunately. > > > > Yeah, using dumb buffer create to allocate random buffers for shared > > software rendering isn't super popular move. > > > > But aside from all this, why is this blocking the migration from fbdev > > to drm? With fbdev you don't have buffer allocations, nor dma-buf > > support, and somehow android can boot. But on drm you can't boot if > > these things are not available. That sounds like the bar for drm is > > maybe a tad too high for simple dumb kms drivers like pl1111 which are > > just there to get a picture on the screen/panel. > = > I would not intend to use dumb buffer create to allocate > non-framebuffer-destined buffers for software rendering. > = > With the generic fbdev driver any allocations not destined for the > framebuffer use ashmem, which is how the driver avoids making huge > allocations in fbdev space. I would intend to do something similar for > DRM where framebuffer-destined allocations use dumb buffer create and > non-framebuffer-destined allocations use dma-buf. At the time I > prototyped this approach on the Android side [1] and together with my > render-nodes-everywhere patch and some other hopefully-uncontroversial > changes it worked and let me boot to the home screen. I would be very > happy if this approach were allowed on render nodes so that Android > FVP would be unblocked from moving off fbdev, but at the point where > we left the thread off last time you weren't sure whether it would be > acceptable [2]. > = > One thing that I might not have mentioned on the thread last time was > that render nodes have the advantage that unlike primary nodes, > opening them does not take master if it is not already taken. This > means that on Android, using primary nodes instead of render nodes in > the process responsible for creating frame buffers creates a startup > race condition for master between the hwcomposer process (which > normally opens the primary node and is responsible for flipping > frames) and the surfaceflinger process (which normally opens the > render node and is responsible for drawing onto the framebuffer and > exporting its frames to the composer). I still don't get how this works with fbdev, how do applications render directly into the fbdev memory (when that's the target)? How is that fbdev memory shared with them? Since if the memory shared there isn't really a functional regression, even if we haven't yet solved the "how can clients allocate scanout-capable memory for simple displays" issue. -Daniel > = > Peter > = > [1] https://chromium-review.googlesource.com/c/chromiumos/platform/minigb= m/+/2438955 > [2] https://www.spinics.net/lists/dri-devel/msg256559.html > = > > -Daniel > > > > > > > > > > > > Also, if we need to add more random fbdev ioctls to the drm f= bdev > > > > > > > emulation, then let's do that. Not keep fbdev drivers on life= support for > > > > > > > longer than necessary. > > > > > > > > > > > > That should have been done *before* removing the old driver, wh= ich was > > > > > > a userspace break that was introduced in 5.9rc1. We shouldn't l= eave > > > > > > userspace broken for the period of time that it would take to d= evelop > > > > > > that change. Even if such a change were developed before 5.9 is > > > > > > released, it probably wouldn't be considered a bug fix that wou= ld be > > > > > > eligible for 5.9. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Neil > > > > > > > > > > > > > > > > > > > > > > > > > > There have been other less critical behavioral difference= s identified > > > > > > > > > between the fbdev driver and the DRM driver with fbdev em= ulation. The > > > > > > > > > DRM driver exposes different values for the panel's width= , height and > > > > > > > > > refresh rate, and the DRM driver fails a FBIOPUT_VSCREENI= NFO syscall > > > > > > > > > with yres_virtual greater than the maximum supported valu= e instead > > > > > > > > > of letting the syscall succeed and setting yres_virtual b= ased on yres. > > > > > > > > > > > > > > Also something that should be fixed I think in upstream, in t= he drm fbdev > > > > > > > emulation. At least doesn't sound like it's something unfixab= le. > > > > > > > > > > > > Again, it should have been fixed before removing the old driver. > > > > > > > > > > Yeah, but we also don't have a whole lot people who seem to push = for this. > > > > > So the only way to find the people who still care is to remove th= e fbdev > > > > > drivers. > > > > > > > > > > fbdev is dead. I'm totally fine reverting the driver to shut up t= he > > > > > regression report, but it's not fixing anything long term. There'= s not > > > > > going to be new drivers, or new hw support in existing drivers in= fbdev. > > > > > > > > > > Also note that there's not spec nor test suite for fbdev, so "you= guys > > > > > should have known before removing drivers" doesn't work. > > > > > > > > btw revert itself is stuck somewhere, so I can't find it. And for t= he > > > > > > You should be able to download the commit like this (the commit > > > message will need amending to remove most of the trailers at the > > > bottom, though): > > > > > > git fetch https://linux.googlesource.com/linux/kernel/git/torvalds/li= nux > > > refs/changes/52/2952/1 > > > > > > > revert can you pls just resurrect the files in drivers/video, witho= ut > > > > touching anything in drivers/gpu? Tying down drm drivers with stuff= in > > > > fbdev doesn't make much sense to me. > > > > > > The touching of code in drm was a consequence of needing to revert a > > > follow-up commit which moved code previously shared between fbdev and > > > drm into the drm driver. > > > > > > Or do you think we should "manually" revert the first commit and as a > > > consequence end up with the two copies of the code? > > > > > > Peter > > > > > > > > > > > Thanks, Daniel > > > > > > > > > -Daniel > > > > > > > > > > > > > > > > > Peter > > > > > > > > > > > > > -Daniel > > > > > > > > > > > > > > > > > > > > > > > > > Signed-off-by: Peter Collingbourne > > > > > > > > > --- > > > > > > > > > View this change in Gerrit: https://linux-review.googleso= urce.com/q/I2d7e59b0e693d9fec206d40df190c5aa02844b56 > > > > > > > > > > > > > > > > > > MAINTAINERS | 5 + > > > > > > > > > drivers/gpu/drm/pl111/pl111_debugfs.c | 1 + > > > > > > > > > drivers/gpu/drm/pl111/pl111_display.c | 1 + > > > > > > > > > drivers/gpu/drm/pl111/pl111_drm.h | 73 -- > > > > > > > > > drivers/gpu/drm/pl111/pl111_drv.c | 1 + > > > > > > > > > drivers/gpu/drm/pl111/pl111_versatile.c | 1 + > > > > > > > > > drivers/video/fbdev/Kconfig | 20 + > > > > > > > > > drivers/video/fbdev/Makefile | 1 + > > > > > > > > > drivers/video/fbdev/amba-clcd.c | 986 ++++++++++= ++++++++++++++ > > > > > > > > > include/linux/amba/clcd-regs.h | 87 +++ > > > > > > > > > include/linux/amba/clcd.h | 290 +++++++ > > > > > > > > > 11 files changed, 1393 insertions(+), 73 deletions(-) > > > > > > > > > create mode 100644 drivers/video/fbdev/amba-clcd.c > > > > > > > > > create mode 100644 include/linux/amba/clcd-regs.h > > > > > > > > > create mode 100644 include/linux/amba/clcd.h > > > > > > > > > > > > > > > > > > diff --git a/MAINTAINERS b/MAINTAINERS > > > > > > > > > index 190c7fa2ea01..671c1fa79e64 100644 > > > > > > > > > --- a/MAINTAINERS > > > > > > > > > +++ b/MAINTAINERS > > > > > > > > > @@ -1460,6 +1460,11 @@ S: Odd Fixes > > > > > > > > > F: drivers/amba/ > > > > > > > > > F: include/linux/amba/bus.h > > > > > > > > > > > > > > > > > > +ARM PRIMECELL CLCD PL110 DRIVER > > > > > > > > > +M: Russell King > > > > > > > > > +S: Odd Fixes > > > > > > > > > +F: drivers/video/fbdev/amba-clcd.* > > > > > > > > > + > > > > > > > > > ARM PRIMECELL KMI PL050 DRIVER > > > > > > > > > M: Russell King > > > > > > > > > S: Odd Fixes > > > > > > > > > diff --git a/drivers/gpu/drm/pl111/pl111_debugfs.c b/driv= ers/gpu/drm/pl111/pl111_debugfs.c > > > > > > > > > index 317f68abf18b..26ca8cdf3e60 100644 > > > > > > > > > --- a/drivers/gpu/drm/pl111/pl111_debugfs.c > > > > > > > > > +++ b/drivers/gpu/drm/pl111/pl111_debugfs.c > > > > > > > > > @@ -3,6 +3,7 @@ > > > > > > > > > * Copyright =A9 2017 Broadcom > > > > > > > > > */ > > > > > > > > > > > > > > > > > > +#include > > > > > > > > > #include > > > > > > > > > > > > > > > > > > #include > > > > > > > > > diff --git a/drivers/gpu/drm/pl111/pl111_display.c b/driv= ers/gpu/drm/pl111/pl111_display.c > > > > > > > > > index b3e8697cafcf..703ddc803c55 100644 > > > > > > > > > --- a/drivers/gpu/drm/pl111/pl111_display.c > > > > > > > > > +++ b/drivers/gpu/drm/pl111/pl111_display.c > > > > > > > > > @@ -9,6 +9,7 @@ > > > > > > > > > * Copyright (C) 2011 Texas Instruments > > > > > > > > > */ > > > > > > > > > > > > > > > > > > +#include > > > > > > > > > #include > > > > > > > > > #include > > > > > > > > > #include > > > > > > > > > diff --git a/drivers/gpu/drm/pl111/pl111_drm.h b/drivers/= gpu/drm/pl111/pl111_drm.h > > > > > > > > > index 2a46b5bd8576..ba399bcb792f 100644 > > > > > > > > > --- a/drivers/gpu/drm/pl111/pl111_drm.h > > > > > > > > > +++ b/drivers/gpu/drm/pl111/pl111_drm.h > > > > > > > > > @@ -23,79 +23,6 @@ > > > > > > > > > #include > > > > > > > > > #include > > > > > > > > > > > > > > > > > > -/* > > > > > > > > > - * CLCD Controller Internal Register addresses > > > > > > > > > - */ > > > > > > > > > -#define CLCD_TIM0 0x00000000 > > > > > > > > > -#define CLCD_TIM1 0x00000004 > > > > > > > > > -#define CLCD_TIM2 0x00000008 > > > > > > > > > -#define CLCD_TIM3 0x0000000c > > > > > > > > > -#define CLCD_UBAS 0x00000010 > > > > > > > > > -#define CLCD_LBAS 0x00000014 > > > > > > > > > - > > > > > > > > > -#define CLCD_PL110_IENB 0x00000018 > > > > > > > > > -#define CLCD_PL110_CNTL 0x0000001c > > > > > > > > > -#define CLCD_PL110_STAT 0x00000020 > > > > > > > > > -#define CLCD_PL110_INTR 0x00000024 > > > > > > > > > -#define CLCD_PL110_UCUR 0x00000028 > > > > > > > > > -#define CLCD_PL110_LCUR 0x0000002C > > > > > > > > > - > > > > > > > > > -#define CLCD_PL111_CNTL 0x00000018 > > > > > > > > > -#define CLCD_PL111_IENB 0x0000001c > > > > > > > > > -#define CLCD_PL111_RIS 0x00000020 > > > > > > > > > -#define CLCD_PL111_MIS 0x00000024 > > > > > > > > > -#define CLCD_PL111_ICR 0x00000028 > > > > > > > > > -#define CLCD_PL111_UCUR 0x0000002c > > > > > > > > > -#define CLCD_PL111_LCUR 0x00000030 > > > > > > > > > - > > > > > > > > > -#define CLCD_PALL 0x00000200 > > > > > > > > > -#define CLCD_PALETTE 0x00000200 > > > > > > > > > - > > > > > > > > > -#define TIM2_PCD_LO_MASK GENMASK(4, 0) > > > > > > > > > -#define TIM2_PCD_LO_BITS 5 > > > > > > > > > -#define TIM2_CLKSEL (1 << 5) > > > > > > > > > -#define TIM2_ACB_MASK GENMASK(10, 6) > > > > > > > > > -#define TIM2_IVS (1 << 11) > > > > > > > > > -#define TIM2_IHS (1 << 12) > > > > > > > > > -#define TIM2_IPC (1 << 13) > > > > > > > > > -#define TIM2_IOE (1 << 14) > > > > > > > > > -#define TIM2_BCD (1 << 26) > > > > > > > > > -#define TIM2_PCD_HI_MASK GENMASK(31, 27) > > > > > > > > > -#define TIM2_PCD_HI_BITS 5 > > > > > > > > > -#define TIM2_PCD_HI_SHIFT 27 > > > > > > > > > - > > > > > > > > > -#define CNTL_LCDEN (1 << 0) > > > > > > > > > -#define CNTL_LCDBPP1 (0 << 1) > > > > > > > > > -#define CNTL_LCDBPP2 (1 << 1) > > > > > > > > > -#define CNTL_LCDBPP4 (2 << 1) > > > > > > > > > -#define CNTL_LCDBPP8 (3 << 1) > > > > > > > > > -#define CNTL_LCDBPP16 (4 << 1) > > > > > > > > > -#define CNTL_LCDBPP16_565 (6 << 1) > > > > > > > > > -#define CNTL_LCDBPP16_444 (7 << 1) > > > > > > > > > -#define CNTL_LCDBPP24 (5 << 1) > > > > > > > > > -#define CNTL_LCDBW (1 << 4) > > > > > > > > > -#define CNTL_LCDTFT (1 << 5) > > > > > > > > > -#define CNTL_LCDMONO8 (1 << 6) > > > > > > > > > -#define CNTL_LCDDUAL (1 << 7) > > > > > > > > > -#define CNTL_BGR (1 << 8) > > > > > > > > > -#define CNTL_BEBO (1 << 9) > > > > > > > > > -#define CNTL_BEPO (1 << 10) > > > > > > > > > -#define CNTL_LCDPWR (1 << 11) > > > > > > > > > -#define CNTL_LCDVCOMP(x) ((x) << 12) > > > > > > > > > -#define CNTL_LDMAFIFOTIME (1 << 15) > > > > > > > > > -#define CNTL_WATERMARK (1 << 16) > > > > > > > > > - > > > > > > > > > -/* ST Microelectronics variant bits */ > > > > > > > > > -#define CNTL_ST_1XBPP_444 0x0 > > > > > > > > > -#define CNTL_ST_1XBPP_5551 (1 << 17) > > > > > > > > > -#define CNTL_ST_1XBPP_565 (1 << 18) > > > > > > > > > -#define CNTL_ST_CDWID_12 0x0 > > > > > > > > > -#define CNTL_ST_CDWID_16 (1 << 19) > > > > > > > > > -#define CNTL_ST_CDWID_18 (1 << 20) > > > > > > > > > -#define CNTL_ST_CDWID_24 ((1 << 19) | (1 << 20)) > > > > > > > > > -#define CNTL_ST_CEAEN (1 << 21) > > > > > > > > > -#define CNTL_ST_LCDBPP24_PACKED (6 << 1) > > > > > > > > > - > > > > > > > > > #define CLCD_IRQ_NEXTBASE_UPDATE BIT(2) > > > > > > > > > > > > > > > > > > struct drm_minor; > > > > > > > > > diff --git a/drivers/gpu/drm/pl111/pl111_drv.c b/drivers/= gpu/drm/pl111/pl111_drv.c > > > > > > > > > index 96e58fda75d8..da0c39dae874 100644 > > > > > > > > > --- a/drivers/gpu/drm/pl111/pl111_drv.c > > > > > > > > > +++ b/drivers/gpu/drm/pl111/pl111_drv.c > > > > > > > > > @@ -47,6 +47,7 @@ > > > > > > > > > */ > > > > > > > > > > > > > > > > > > #include > > > > > > > > > +#include > > > > > > > > > #include > > > > > > > > > #include > > > > > > > > > #include > > > > > > > > > diff --git a/drivers/gpu/drm/pl111/pl111_versatile.c b/dr= ivers/gpu/drm/pl111/pl111_versatile.c > > > > > > > > > index bdd883f4f0da..1127082e9a60 100644 > > > > > > > > > --- a/drivers/gpu/drm/pl111/pl111_versatile.c > > > > > > > > > +++ b/drivers/gpu/drm/pl111/pl111_versatile.c > > > > > > > > > @@ -9,6 +9,7 @@ > > > > > > > > > * Major contributions and discoveries by Russell King. > > > > > > > > > */ > > > > > > > > > > > > > > > > > > +#include > > > > > > > > > #include > > > > > > > > > #include > > > > > > > > > #include > > > > > > > > > diff --git a/drivers/video/fbdev/Kconfig b/drivers/video/= fbdev/Kconfig > > > > > > > > > index b2c9dd4f0cb5..402e85450bb5 100644 > > > > > > > > > --- a/drivers/video/fbdev/Kconfig > > > > > > > > > +++ b/drivers/video/fbdev/Kconfig > > > > > > > > > @@ -272,6 +272,26 @@ config FB_PM2_FIFO_DISCONNECT > > > > > > > > > help > > > > > > > > > Support the Permedia2 FIFO disconnect feature. > > > > > > > > > > > > > > > > > > +config FB_ARMCLCD > > > > > > > > > + tristate "ARM PrimeCell PL110 support" > > > > > > > > > + depends on ARM || ARM64 || COMPILE_TEST > > > > > > > > > + depends on FB && ARM_AMBA && HAS_IOMEM > > > > > > > > > + select FB_CFB_FILLRECT > > > > > > > > > + select FB_CFB_COPYAREA > > > > > > > > > + select FB_CFB_IMAGEBLIT > > > > > > > > > + select FB_MODE_HELPERS if OF > > > > > > > > > + select VIDEOMODE_HELPERS if OF > > > > > > > > > + select BACKLIGHT_CLASS_DEVICE if OF > > > > > > > > > + help > > > > > > > > > + This framebuffer device driver is for the ARM Prime= Cell PL110 > > > > > > > > > + Colour LCD controller. ARM PrimeCells provide the = building > > > > > > > > > + blocks for System on a Chip devices. > > > > > > > > > + > > > > > > > > > + If you want to compile this as a module (=3Dcode wh= ich can be > > > > > > > > > + inserted into and removed from the running kernel),= say M > > > > > > > > > + here and read . The module > > > > > > > > > + will be called amba-clcd. > > > > > > > > > + > > > > > > > > > config FB_ACORN > > > > > > > > > bool "Acorn VIDC support" > > > > > > > > > depends on (FB =3D y) && ARM && ARCH_ACORN > > > > > > > > > diff --git a/drivers/video/fbdev/Makefile b/drivers/video= /fbdev/Makefile > > > > > > > > > index cad4fb64442a..a0705b99e643 100644 > > > > > > > > > --- a/drivers/video/fbdev/Makefile > > > > > > > > > +++ b/drivers/video/fbdev/Makefile > > > > > > > > > @@ -75,6 +75,7 @@ obj-$(CONFIG_FB_HIT) +=3D = hitfb.o > > > > > > > > > obj-$(CONFIG_FB_ATMEL) +=3D atmel_lcdfb.o > > > > > > > > > obj-$(CONFIG_FB_PVR2) +=3D pvr2fb.o > > > > > > > > > obj-$(CONFIG_FB_VOODOO1) +=3D sstfb.o > > > > > > > > > +obj-$(CONFIG_FB_ARMCLCD) +=3D amba-clcd.o > > > > > > > > > obj-$(CONFIG_FB_GOLDFISH) +=3D goldfishfb.o > > > > > > > > > obj-$(CONFIG_FB_68328) +=3D 68328fb.o > > > > > > > > > obj-$(CONFIG_FB_GBE) +=3D gbefb.o > > > > > > > > > diff --git a/drivers/video/fbdev/amba-clcd.c b/drivers/vi= deo/fbdev/amba-clcd.c > > > > > > > > > new file mode 100644 > > > > > > > > > index 000000000000..b7682de412d8 > > > > > > > > > --- /dev/null > > > > > > > > > +++ b/drivers/video/fbdev/amba-clcd.c > > > > > > > > > @@ -0,0 +1,986 @@ > > > > > > > > > +/* > > > > > > > > > + * linux/drivers/video/amba-clcd.c > > > > > > > > > + * > > > > > > > > > + * Copyright (C) 2001 ARM Limited, by David A Rusling > > > > > > > > > + * Updated to 2.5, Deep Blue Solutions Ltd. > > > > > > > > > + * > > > > > > > > > + * This file is subject to the terms and conditions of t= he GNU General Public > > > > > > > > > + * License. See the file COPYING in the main directory = of this archive > > > > > > > > > + * for more details. > > > > > > > > > + * > > > > > > > > > + * ARM PrimeCell PL110 Color LCD Controller > > > > > > > > > + */ > > > > > > > > > +#include > > > > > > > > > +#include > > > > > > > > > +#include > > > > > > > > > +#include > > > > > > > > > +#include > > > > > > > > > +#include > > > > > > > > > +#include > > > > > > > > > +#include > > > > > > > > > +#include > > > > > > > > > +#include > > > > > > > > > +#include > > > > > > > > > +#include > > > > > > > > > +#include > > > > > > > > > +#include > > > > > > > > > +#include > > > > > > > > > +#include > > > > > > > > > +#include