From: Paul Boddie <paul@boddie.org.uk>
To: Paul Cercueil <paul@crapouillou.net>
Cc: "H . Nikolaus Schaller" <hns@goldelico.com>,
周琰杰 <zhouyanjie@wanyeetech.com>,
linux-mips <linux-mips@vger.kernel.org>
Subject: Re: JZ4780 LCD controller initialisation (was Re: [PATCH] clocksource: Ingenic: Add high resolution timer support for SMP.)
Date: Mon, 01 Jun 2020 22:06:07 +0200 [thread overview]
Message-ID: <8743693.hF1s80oglt@jeremy> (raw)
In-Reply-To: <T8OYAQ.3TE69K2DB79Z2@crapouillou.net>
On Wednesday 27. May 2020 01.07.41 Paul Cercueil wrote:
>
> Don't focus too much on interrupts right now. You don't get interrupts
> because the data is not flowing. Which in turns is caused either by the
> LCDC not being correctly configured, or the HDMI not sending
> hsync/vsync signals.
>
> For now, what seems to be the problem is that the DMA descriptors
> aren't loaded properly. Whatever I do, the debug registers
> (LCDSAx/LCDIDx/etc) are still zero here.
I checked the LCDSA0 (source address) and LCDFID0 (frame identifier)
registers, and they get populated with what I put in the descriptor, so I am
inclined to think that some kind of initialisation does happen. However, as
previously noted, the LCDIID (interrupt identifier) remains zero.
What I have subsequently done is to introduce the HDMI driver functionality
from Linux into my test environment (L4Re) to investigate the configuration
process. Eventually, I managed to get the HDMI signal enabled, meaning that I
can switch my monitor to the DVI input and be told what kind of picture it
thinks it is getting (1280x1024 @ 62Hz, and although I asked for 60Hz, the
111MHz pixel clock will probably generate something closer to 62Hz).
Where this gets interesting/infuriating is that the signal persists but there
is no actual picture (just a black screen, but illuminated), but accompanying
this is a "FIFO 0 under run" condition (IFU0 in LCDSTATE). Looking at the
manual, there is no other mention of this "FIFO 0", but I did wonder whether
it had anything to do with the OSD functionality because it seems to be the
case that the OSD is always enabled (OSDEN is set in LCDOSDC) and cannot be
unset just by clearing the OSDEN bit.
I thought that the "new" 8-word descriptor arrangement might be important in
this regard. Although the manual doesn't make this explicit, it seems to be
the case that the extra 4 words are configuring the OSD foreground planes. So,
I enabled the populated extra words in a similar way to what the 3.18 driver
does. But even with various other JZ4780-specific registers set up (RGB
control, priority threshold), what actually happens is that the monitor fails
to acknowledge a signal and switches back to its default VGA input.
I have tried a few things, such as enabling the IPU clock in the CPM unit
(which is probably unnecessary since it is enabled by default) and enabling
the IPU clock in the LCD controller (IPU_CLKEN in LCDOSDCTRL), but neither
changes the situation.
I also noted a recent patch on the dri-devel list adding OSD support...
"[PATCH 09/12] gpu/drm: Ingenic: Add support for OSD mode"
What is interesting about that patch is that it attempts to enable the OSD
foreground planes by setting F0EN and F1EN on LCDOSDC. However, these are
marked as read-only in the JZ4780 and cannot actually be set.
So, I am currently looking for some more ideas about how to get this working.
It is entirely possible that I have taken one too many shortcuts with the HDMI
initialisation: I have only implemented "DVI mode" and have sought only to
implement what is necessary for that and for RGB data. It is also likely that
I have missed something from the LCD initialisation, but whatever it is
escapes me at present.
Any suggestions would be appreciated at this point!
Thanks in advance,
Paul
P.S. I can easily imagine that the obstacle to getting things working in a
modern Linux kernel is just the data format/encoding. The 3.18 driver supports
only RGB data, which is presumably converted by the HDMI peripheral to
whatever the preferred output actually is.
next prev parent reply other threads:[~2020-06-01 20:06 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-05-19 14:35 Introduce SMP support for CI20 (based on JZ4780) v8 周琰杰 (Zhou Yanjie)
2020-05-19 14:35 ` [PATCH v8 0/6] Introduce SMP support for CI20 (based on JZ4780) 周琰杰 (Zhou Yanjie)
2020-05-19 14:35 ` [PATCH v8 1/6] MIPS: JZ4780: Introduce SMP support 周琰杰 (Zhou Yanjie)
2020-05-19 16:09 ` Paul Cercueil
2020-05-20 7:24 ` Zhou Yanjie
2020-05-19 18:21 ` kbuild test robot
2020-05-19 19:41 ` Paul Cercueil
2020-05-20 7:23 ` Zhou Yanjie
2020-05-20 11:33 ` Paul Cercueil
2020-05-20 12:32 ` Jiaxun Yang
2020-05-19 14:35 ` [PATCH v8 2/6] MIPS: CI20: Modify DTS to support high resolution timer for SMP 周琰杰 (Zhou Yanjie)
2020-05-19 14:35 ` [PATCH v8 3/6] clocksource: Ingenic: Add high resolution timer support " 周琰杰 (Zhou Yanjie)
2020-05-19 17:42 ` Paul Cercueil
2020-05-19 20:11 ` [PATCH] " Paul Cercueil
2020-05-20 22:14 ` Paul Boddie
2020-05-22 12:26 ` Paul Cercueil
2020-05-22 19:16 ` Paul Boddie
2020-05-25 23:03 ` JZ4780 LCD controller initialisation (was Re: [PATCH] clocksource: Ingenic: Add high resolution timer support for SMP.) Paul Boddie
2020-05-26 4:48 ` H. Nikolaus Schaller
2020-05-26 15:03 ` Paul Cercueil
2020-05-26 22:44 ` Paul Boddie
2020-05-26 23:07 ` Paul Cercueil
2020-06-01 20:06 ` Paul Boddie [this message]
2020-06-23 21:28 ` Paul Boddie
2020-05-19 14:35 ` [PATCH v8 4/6] dt-bindings: MIPS: Document Ingenic SoCs binding 周琰杰 (Zhou Yanjie)
2020-05-26 19:29 ` Rob Herring
2020-05-27 5:59 ` Zhou Yanjie
2020-05-19 14:35 ` [PATCH v8 5/6] MIPS: Ingenic: Add 'cpus' node for Ingenic SoCs 周琰杰 (Zhou Yanjie)
2020-09-10 7:52 ` H. Nikolaus Schaller
2020-09-12 6:17 ` Zhou Yanjie
2020-05-19 14:35 ` [PATCH v8 6/6] MIPS: CI20: Update defconfig to support SMP 周琰杰 (Zhou Yanjie)
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=8743693.hF1s80oglt@jeremy \
--to=paul@boddie.org.uk \
--cc=hns@goldelico.com \
--cc=linux-mips@vger.kernel.org \
--cc=paul@crapouillou.net \
--cc=zhouyanjie@wanyeetech.com \
/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).