From: Linus Walleij <linus.walleij@linaro.org>
To: linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH 11/11] ARM: versatile: move CLCD configuration to device tree
Date: Thu, 25 Feb 2016 14:04:52 +0000 [thread overview]
Message-ID: <CACRpkdZd8TLdsi7_cOrqzcqWKJrfdp4Vz2sx5ozpwJXOj0fa+Q@mail.gmail.com> (raw)
In-Reply-To: <56CC60C4.6040908@ti.com>
On Tue, Feb 23, 2016 at 2:38 PM, Tomi Valkeinen <tomi.valkeinen@ti.com> wrote:
> Maybe Versatile is different. If CLCD is only used on that board, or a
> small family of boards, from one vendor, I guess it is maintainable to
> have board specific driver parts for CLCD. But if CLCD can be used by
> many vendors in many different boards, I'd steer clear of board specific
> driver code.
OK I think at this point we would say that CLCD is a legacy driver.
It is a PrimceCell (IP block) made by ARM Ltd for their reference
designs, and intended for demonstration purposes. It is used in
these:
arch/arm/mach-integrator/
arch/arm/mach-versatile/
arch/arm/mach-realview/
arch/arm/mach-vexpress/
At the last iteration of their reference designs, ARM invented a
new display driver called HDLCD, which you can find in
drivers/gpu/drm/arm in linux-next. Thus the CLCD is now legacy.
As part of signing a deal with ARM to synthesize their silicon,
vendors get copies of the IP blocks to jumpstart design work.
Sometimes they will design their own display controller, sometimes
they will take the ARM CLCD and synthesize it right off
and not innovate around it at all. That is why CLCD also
appears in:
arch/arm/configs/axm55xx_defconfig
arch/arm/configs/lpc18xx_defconfig
arch/arm/boot/dts/lpc18xx.dtsi
arch/arm/configs/lpc32xx_defconfig
arch/arm/boot/dts/lpc32xx.dtsi
arch/arm/configs/netx_defconfig
arch/arm/configs/spear3xx_defconfig
Sometimes the vendors will tweak the CLCD. St Microelectronics
did the latter, and that is why I add support for that variant as
well.
HOWEVER: the ARM Versatile is the *only* platform I have
seen of these that have plug'n'play for the display.
*All* the others
will be very happy with *ONE* display defined as panel in the
device tree, and off they go. Usually VGA. And that will look
much like arch/arm/boot/dts/vexpress-v2m.dtsi already look
like today, using "panel-dpi" to define their displays.
They and their displays may need some board-specific or SoC
specific tweaks though, just like the Nomadik. The Vexpress is
happy to be able to go without, because I guess it is hard-coded
to just use the DVI output, so no path for the signal needs to be
set up.
I add support for doing this for the Integrator and RealView in
the patch set, by grabbing a handle to the system controller
where they have a few "misc registers". However if you look at
it:
static void integrator_clcd_enable(struct clcd_fb *fb)
{
struct fb_var_screeninfo *var = &fb->fb.var;
u32 val;
dev_info(&fb->dev->dev, "enable Integrator CLCD connectors\n");
val = INTEGRATOR_CLCD_LCD_STATIC1 | INTEGRATOR_CLCD_LCD_STATIC2 |
INTEGRATOR_CLCD_LCD0_EN | INTEGRATOR_CLCD_LCD1_EN;
if (var->bits_per_pixel <= 8 ||
(var->bits_per_pixel = 16 && var->green.length = 5))
/* Pseudocolor, RGB555, BGR555 */
val |= INTEGRATOR_CLCD_LCDMUX_VGA555;
else if (fb->fb.var.bits_per_pixel <= 16)
/* truecolor RGB565 */
val |= INTEGRATOR_CLCD_LCDMUX_VGA565;
else
val = 0; /* no idea for this, don't trust the docs */
regmap_update_bits(versatile_syscon_map,
INTEGRATOR_HDR_CTRL_OFFSET,
0,
INTEGRATOR_CLCD_MASK);
}
This is stuff that is so closely tied in to the fbdev driver that even
if it is SoC-specific (and reside in arch/arm/mach-integrator etc
today) it would be hard to argument that it should not be part
of the fbdev driver: what it does is connect the lines out of the
CLCD block to the physical VGA encode chip in different ways
depending on how the pixels were set up.
Yours,
Linus Walleij
next prev parent reply other threads:[~2016-02-25 14:04 UTC|newest]
Thread overview: 71+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-02-04 14:04 [PATCH 00/11] CLCD Nomadik+Versatile support Linus Walleij
2016-02-04 14:04 ` [PATCH 01/11] video: ARM CLCD: backlight support for OF Linus Walleij
2016-02-04 14:04 ` [PATCH 02/11] video: ARM CLCD: support DT signal inversion flags Linus Walleij
2016-02-17 18:10 ` [02/11] " Ray Jui
2016-02-19 8:46 ` Linus Walleij
2016-02-20 1:23 ` Ray Jui
2016-02-20 11:46 ` Linus Walleij
2016-02-04 14:04 ` [PATCH 03/11] video: ARM CLCD: support pads connected in reverse order Linus Walleij
2016-02-04 14:04 ` [PATCH 04/11] video: ARM CLCD: support Nomadik variant Linus Walleij
2016-02-04 14:04 ` [PATCH 05/11] video: ARM CLCD: add special board and panel hooks for Nomadik Linus Walleij
2016-02-04 14:04 ` [PATCH 06/11] Documentation/DT: add blurb for IB2 syscon to Versatile Linus Walleij
2016-02-04 14:04 ` [PATCH 07/11] Documentation/DT: add Versatile display bindings Linus Walleij
2016-02-17 9:11 ` Tomi Valkeinen
2016-02-18 20:48 ` Linus Walleij
2016-02-04 14:04 ` [PATCH 08/11] video: ARM CLCD: add special panel hook for Versatiles Linus Walleij
2016-02-04 14:04 ` [PATCH 09/11] ARM: PB11MPCore: define a standard VGA panel Linus Walleij
2016-02-04 14:04 ` [PATCH 10/11] ARM: PB1176: " Linus Walleij
2016-02-04 14:04 ` [PATCH 11/11] ARM: versatile: move CLCD configuration to device tree Linus Walleij
2016-02-17 9:09 ` Tomi Valkeinen
2016-02-17 9:41 ` Russell King - ARM Linux
2016-02-17 16:17 ` Linus Walleij
2016-02-17 21:32 ` Russell King - ARM Linux
2016-02-18 11:52 ` Tomi Valkeinen
2016-02-18 13:12 ` Russell King - ARM Linux
2016-02-18 13:37 ` Tomi Valkeinen
2016-02-18 20:31 ` Linus Walleij
2016-02-21 22:39 ` Linus Walleij
2016-02-22 15:41 ` Tomi Valkeinen
2016-02-22 15:54 ` Linus Walleij
2016-02-23 9:08 ` Linus Walleij
2016-02-23 9:34 ` Arnd Bergmann
2016-02-23 10:10 ` Linus Walleij
2016-02-23 11:22 ` Arnd Bergmann
2016-02-23 13:00 ` Tomi Valkeinen
2016-02-23 13:16 ` Linus Walleij
2016-02-23 13:38 ` Tomi Valkeinen
2016-02-24 10:53 ` Russell King - ARM Linux
2016-02-24 11:35 ` Tomi Valkeinen
2016-02-25 14:04 ` Linus Walleij [this message]
2016-02-25 16:08 ` Arnd Bergmann
2016-02-25 16:22 ` Russell King - ARM Linux
2016-02-25 16:45 ` Tomi Valkeinen
2016-02-25 16:57 ` Russell King - ARM Linux
2016-02-25 19:30 ` Linus Walleij
2016-02-26 10:47 ` Tomi Valkeinen
2016-03-05 16:57 ` Linus Walleij
2016-03-07 7:36 ` Tomi Valkeinen
2016-02-25 19:32 ` Linus Walleij
2016-02-23 9:58 ` Tomi Valkeinen
2016-02-23 10:32 ` Adam Ford
2016-02-23 10:59 ` Pantelis Antoniou
2016-02-23 11:56 ` Peter Maydell
2016-02-23 12:01 ` Russell King - ARM Linux
2016-02-23 13:45 ` Tom Rini
2016-02-23 12:45 ` Tomi Valkeinen
2016-02-23 13:49 ` Peter Maydell
2016-02-24 12:06 ` Tomi Valkeinen
2016-02-24 10:46 ` Russell King - ARM Linux
2016-02-24 11:21 ` Tomi Valkeinen
2016-02-24 11:35 ` Russell King - ARM Linux
2016-02-24 11:47 ` Tomi Valkeinen
2016-02-24 12:13 ` Pantelis Antoniou
2016-02-25 13:43 ` Linus Walleij
2016-02-25 13:56 ` Tomi Valkeinen
2016-02-25 14:35 ` Pantelis Antoniou
2016-02-25 15:36 ` Linus Walleij
2016-02-25 15:40 ` Pantelis Antoniou
2016-02-23 13:08 ` Linus Walleij
2016-02-15 23:34 ` [PATCH 00/11] CLCD Nomadik+Versatile support Linus Walleij
2016-02-16 13:29 ` Tomi Valkeinen
2016-02-16 22:30 ` Linus Walleij
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CACRpkdZd8TLdsi7_cOrqzcqWKJrfdp4Vz2sx5ozpwJXOj0fa+Q@mail.gmail.com \
--to=linus.walleij@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).