linux-fbdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Tony Prisk <linux@prisktech.co.nz>
To: linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH 4/4] fb: vt8500: Add VGA output support to wm8505fb driver.
Date: Sat, 18 May 2013 19:51:38 +0000	[thread overview]
Message-ID: <5197DBCA.8050708@prisktech.co.nz> (raw)
In-Reply-To: <CABjd4Yxrk3hXnB5f6u+1HcJjymDZbtQ1F1HXkZ2dzF3dwCrWhg@mail.gmail.com>

On 19/05/13 01:28, Alexey Charkov wrote:
> 2013/5/18 Tony Prisk <linux@prisktech.co.nz>:
>> The APC8750 does not support an LCD panel, but provides a VGA connector.
>> This patch adds support for the VGA interface, and defines an optional
>> devicetree property to specify the output interface. The default if not
>> specified is LCD for backward compatibility.
>>
>> Signed-off-by: Tony Prisk <linux@prisktech.co.nz>
>> ---
>>   .../devicetree/bindings/video/wm,wm8505-fb.txt     |    5 ++++
>>   drivers/video/wm8505fb.c                           |   31 ++++++++++++++++++--
>>   2 files changed, 34 insertions(+), 2 deletions(-)
>>
>> diff --git a/Documentation/devicetree/bindings/video/wm,wm8505-fb.txt b/Documentation/devicetree/bindings/video/wm,wm8505-fb.txt
>> index 601416c..9f1d648 100644
>> --- a/Documentation/devicetree/bindings/video/wm,wm8505-fb.txt
>> +++ b/Documentation/devicetree/bindings/video/wm,wm8505-fb.txt
>> @@ -7,6 +7,10 @@ Required properties:
>>   - bits-per-pixel : bit depth of framebuffer (16 or 32)
>>   - clocks : phandle to DVO clock
>>
>> +Optional properties:
>> +- output-interface : the interface the fb should output on. Valid values are
>> +       "lcd" or "vga". If not specified, the default is "lcd".
>> +
>>   Required subnodes:
>>   - display-timings: see display-timing.txt for information
>>
>> @@ -17,6 +21,7 @@ Example:
>>                  reg = <0xd8051700 0x200>;
>>                  bits-per-pixel = <16>;
>>                  clocks = <&clkdvo>;
>> +               output-interface = "vga";
>>
>>                  display-timings {
>>                          native-mode = <&timing0>;
>> diff --git a/drivers/video/wm8505fb.c b/drivers/video/wm8505fb.c
>> index f8bffc2..d1f7f33 100644
>> --- a/drivers/video/wm8505fb.c
>> +++ b/drivers/video/wm8505fb.c
>> @@ -130,12 +130,17 @@
>>
>>   #define to_wm8505fb_info(__info) container_of(__info, \
>>                                                  struct wm8505fb_info, fb)
>> +
>> +#define INTERFACE_LCD  1
>> +#define INTERFACE_VGA  2
>> +
>>   struct wm8505fb_info {
>>          struct fb_info fb;
>>          void __iomem *regbase;
>>          unsigned int contrast;
>>          struct device *dev;
>>          struct clk *clk_dvo;
>> +       int interface;
>>   };
>>
>>
>> @@ -158,7 +163,11 @@ static int wm8505fb_init_hw(struct fb_info *info)
>>           * 0x31C sets the correct color mode (RGB565) for WM8650
>>           * Bit 8+9 (0x300) are ignored on WM8505 as reserved
>>           */
>> -       writel(0x31c,                  fbi->regbase + REG_GOVRH_YUVRGB);
>> +       if (fbi->interface = INTERFACE_VGA)
>> +               writel(0x338, fbi->regbase + REG_GOVRH_YUVRGB);
>> +       else
>> +               writel(0x31c, fbi->regbase + REG_GOVRH_YUVRGB);
>> +
>>          writel(1,                      fbi->regbase + REG_GOVRH_DVO_PIX);
> Tony,
>
> Would it be possible to also define known bit offsets for those
> registers, while you are at this? It would probably reduce the black
> magic quite a bit :)
On my list of things to do :)
>>          /* Virtual buffer size */
>> @@ -167,7 +176,12 @@ static int wm8505fb_init_hw(struct fb_info *info)
>>
>>          /* black magic ;) */
>>          writel(0xf,                    fbi->regbase + REG_GOVRH_FHI);
>> -       writel(4,                      fbi->regbase + REG_GOVRH_DVO_SET);
>> +
>> +       if (fbi->interface = INTERFACE_VGA)
>> +               writel(0xe, fbi->regbase + REG_GOVRH_DVO_SET);
>> +       else
>> +               writel(4, fbi->regbase + REG_GOVRH_DVO_SET);
> I don't remember if HDMI is yet another option for this register or
> not... If it is, it would probably warrant defining fbi->interface as
> an enum and changing this if-else into a switch statement to let the
> compiler add its checks/warnings.
This register defines the h/v syncpolarity and enable/disable for DVO.
>
>>          writel(1,                      fbi->regbase + REG_GOVRH_MIF);
>>          writel(1,                      fbi->regbase + REG_GOVRH_REG_STS);
>>
>> @@ -194,11 +208,15 @@ static int wm8505fb_set_timing(struct fb_info *info)
>>          writel(h_end,   fbi->regbase + REG_GOVRH_ACTPX_END);
>>          writel(h_all,   fbi->regbase + REG_GOVRH_H_ALLPXL);
>>          writel(h_sync,  fbi->regbase + REG_GOVRH_HDMI_HSYNW);
>> +       if (fbi->interface = INTERFACE_VGA)
>> +               writel(h_sync,  fbi->regbase + REG_GOVRH_VGA_HSYNW);
> Will it misbehave on LCD if you write to the VGA register unconditionally?
Don't know - wouldn't imagine so. I will test it and see.
>
>>          writel(v_start, fbi->regbase + REG_GOVRH_ACTLN_BG);
>>          writel(v_end,   fbi->regbase + REG_GOVRH_ACTLN_END);
>>          writel(v_all,   fbi->regbase + REG_GOVRH_V_ALLLN);
>>          writel(v_sync,  fbi->regbase + REG_GOVRH_HDMI_VBISW);
>> +       if (fbi->interface = INTERFACE_VGA)
>> +               writel(info->var.pixclock,  fbi->regbase + REG_GOVRH_VGA_VSYNW);
> Same here. I would assume that setting the pixclock should not hurt
> LCD, which would then simplify the code a little.
>
> Thanks,
> Alexey
Regards
Tony Prisk

  parent reply	other threads:[~2013-05-18 19:51 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-05-18  9:15 [PATCH 0/4] FB updates for 3.11 Tony Prisk
2013-05-18  9:15 ` [PATCH 1/4] fb: vt8500: Move register defines inside driver Tony Prisk
2013-05-18  9:15 ` [PATCH 2/4] fb: vt8500: Convert to use vendor register names Tony Prisk
2013-05-18  9:15 ` [PATCH 3/4] fb: vt8500: Require a device clock for wm8505fb driver Tony Prisk
2013-05-18  9:15 ` [PATCH 4/4] fb: vt8500: Add VGA output support to " Tony Prisk
2013-05-18 13:28   ` Alexey Charkov
2013-05-18 13:41     ` Andy Chernyak
2013-05-18 19:51     ` Tony Prisk [this message]
2013-05-19  8:06 ` [PATCH 0/4] FB updates for 3.11 Tony Prisk

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=5197DBCA.8050708@prisktech.co.nz \
    --to=linux@prisktech.co.nz \
    --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).