<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-toradex.git/drivers, branch toradex_vf_4.0-next</title>
<subtitle>Linux kernel for Apalis and Colibri modules</subtitle>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/'/>
<entry>
<title>video: fsl-dcu-fb: implement wait for VSYNC ioctrl</title>
<updated>2015-07-02T07:27:05+00:00</updated>
<author>
<name>Stefan Agner</name>
<email>stefan.agner@toradex.com</email>
</author>
<published>2015-07-02T06:34:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=9a0eb5848d988ee5e1c60f1d2495ffa657510131'/>
<id>9a0eb5848d988ee5e1c60f1d2495ffa657510131</id>
<content type='text'>
Implement ioctrl FBIO_WAITFORVSYNC which allows user space to wait for
next VSYNC. The ioctrl waits until the next vertical synchronization
phase has begun.

This reintroduces interrupt handling which has been removed in a
earlier commit 85f663301364 ("video: fsl-dcu-fb: remove underrun
interrupt handling")
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Implement ioctrl FBIO_WAITFORVSYNC which allows user space to wait for
next VSYNC. The ioctrl waits until the next vertical synchronization
phase has begun.

This reintroduces interrupt handling which has been removed in a
earlier commit 85f663301364 ("video: fsl-dcu-fb: remove underrun
interrupt handling")
</pre>
</div>
</content>
</entry>
<entry>
<title>video: fsl-dcu-fb: use automatic update mode</title>
<updated>2015-07-02T07:21:19+00:00</updated>
<author>
<name>Stefan Agner</name>
<email>stefan.agner@toradex.com</email>
</author>
<published>2015-07-02T06:14:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=bb2725c66b7d48698f2fd663314b80aef44e00f4'/>
<id>bb2725c66b7d48698f2fd663314b80aef44e00f4</id>
<content type='text'>
The DCU provides two register update methods: Manual using READREG
and automatic using MODE. Tests showed that the manual mode leads
to significant flickers on displays. This is especially disturbing
when using double buffering and panning (FBIOPAN_DISPLAY ioctrl).

Use the READREG mode only on initial mode setting and switch to
automatic mode for any further register changes.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The DCU provides two register update methods: Manual using READREG
and automatic using MODE. Tests showed that the manual mode leads
to significant flickers on displays. This is especially disturbing
when using double buffering and panning (FBIOPAN_DISPLAY ioctrl).

Use the READREG mode only on initial mode setting and switch to
automatic mode for any further register changes.
</pre>
</div>
</content>
</entry>
<entry>
<title>video: fsl-dcu-fb: consider initial yoffset</title>
<updated>2015-07-02T07:21:12+00:00</updated>
<author>
<name>Stefan Agner</name>
<email>stefan.agner@toradex.com</email>
</author>
<published>2015-07-01T13:13:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=8f30ee5981b6cc2014c0eb9e4506192db7918f29'/>
<id>8f30ee5981b6cc2014c0eb9e4506192db7918f29</id>
<content type='text'>
Initial Y-offset has not been considered, which could lead to
unexpected behavior when initializing with a yoffset other than 0.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Initial Y-offset has not been considered, which could lead to
unexpected behavior when initializing with a yoffset other than 0.
</pre>
</div>
</content>
</entry>
<entry>
<title>video: fsl-dcu-fb: remove underrun interrupt handling</title>
<updated>2015-06-11T07:25:04+00:00</updated>
<author>
<name>Stefan Agner</name>
<email>stefan.agner@toradex.com</email>
</author>
<published>2015-06-11T07:25:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=85f663301364d015738e9cc7c77bd8c550262df0'/>
<id>85f663301364d015738e9cc7c77bd8c550262df0</id>
<content type='text'>
The current buffer underrun interrupt handling seems bogus in
multiple ways: Disabling and reenabling the controller seems a
questionable procedure and is also not documented. Furthermore,
to apply a DCU mode, a register transfer would be necessary
(UPDATE_MODE).

The current implementation probably even introduce races: If
a underrun happens just when enabling the controller (which has
been observed to happen quite often during initialization), the
register could still be in transfer mode. A write to a register
could still be transferred in this situation, which might lead
that the DCU off mode is transferred. Since the interrupt handler
does not initiate another register transfer, the controller would
stay off in this situation...

Rare conditions have been observed in which the controller ends
up in test mode. The race condition outlined above describes a
sequence in which the controller ends up beeing disabled. However,
before cd586e4cf9dc ("video: fsl-dcu-fb: fix operating mode off)
the DCU state off and test have been mixed up, hence this patch
could in fact fix that issue.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The current buffer underrun interrupt handling seems bogus in
multiple ways: Disabling and reenabling the controller seems a
questionable procedure and is also not documented. Furthermore,
to apply a DCU mode, a register transfer would be necessary
(UPDATE_MODE).

The current implementation probably even introduce races: If
a underrun happens just when enabling the controller (which has
been observed to happen quite often during initialization), the
register could still be in transfer mode. A write to a register
could still be transferred in this situation, which might lead
that the DCU off mode is transferred. Since the interrupt handler
does not initiate another register transfer, the controller would
stay off in this situation...

Rare conditions have been observed in which the controller ends
up in test mode. The race condition outlined above describes a
sequence in which the controller ends up beeing disabled. However,
before cd586e4cf9dc ("video: fsl-dcu-fb: fix operating mode off)
the DCU state off and test have been mixed up, hence this patch
could in fact fix that issue.
</pre>
</div>
</content>
</entry>
<entry>
<title>video: fsl-dcu-fb: fix layer initialization</title>
<updated>2015-06-11T07:01:53+00:00</updated>
<author>
<name>Stefan Agner</name>
<email>stefan.agner@toradex.com</email>
</author>
<published>2015-06-11T07:01:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=62c593f704e0b2f05db5b4e53fa3911a86f6f575'/>
<id>62c593f704e0b2f05db5b4e53fa3911a86f6f575</id>
<content type='text'>
Fix layer initialization by also resetting the first Layer index 0.
Do not transfer the registers just yet, since this would probably
put the controller in test mode.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fix layer initialization by also resetting the first Layer index 0.
Do not transfer the registers just yet, since this would probably
put the controller in test mode.
</pre>
</div>
</content>
</entry>
<entry>
<title>video: fsl-dcu-fb: fix FB blank powerdown mode</title>
<updated>2015-06-11T06:51:49+00:00</updated>
<author>
<name>Stefan Agner</name>
<email>stefan.agner@toradex.com</email>
</author>
<published>2015-06-11T06:51:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=e4c61c14cbbaf989ab7d911d68e596f9d98d94d7'/>
<id>e4c61c14cbbaf989ab7d911d68e596f9d98d94d7</id>
<content type='text'>
Powerdown mode has not been applied since disable_controller does
not initiate a register transfer by itself. Also disable the panel
in this case. We can safely nable the controller unconditionally
on FB blank normal.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Powerdown mode has not been applied since disable_controller does
not initiate a register transfer by itself. Also disable the panel
in this case. We can safely nable the controller unconditionally
on FB blank normal.
</pre>
</div>
</content>
</entry>
<entry>
<title>video: fsl-dcu-fb: fix operating mode off</title>
<updated>2015-06-11T06:49:23+00:00</updated>
<author>
<name>Stefan Agner</name>
<email>stefan.agner@toradex.com</email>
</author>
<published>2015-06-11T06:49:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=cd586e4cf9dcc8b476311ab42caf74a5e67a53ec'/>
<id>cd586e4cf9dcc8b476311ab42caf74a5e67a53ec</id>
<content type='text'>
Operating mode off seems to be documented wrong. Adjust the defines
to the observed values/behavior (swap TEST and OFF mode) and apply
the values correctly.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Operating mode off seems to be documented wrong. Adjust the defines
to the observed values/behavior (swap TEST and OFF mode) and apply
the values correctly.
</pre>
</div>
</content>
</entry>
<entry>
<title>tty: serial: fsl_lpuart: consider TX FIFO too in tx_empty</title>
<updated>2015-06-09T11:48:51+00:00</updated>
<author>
<name>Stefan Agner</name>
<email>stefan.agner@toradex.com</email>
</author>
<published>2015-06-09T11:38:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=64578b59ff73a1a96f166cf518f58477285117f4'/>
<id>64578b59ff73a1a96f166cf518f58477285117f4</id>
<content type='text'>
Currently the tx_empty callback only considers the Transmit Complete
Flag (TC). The reference manual is not quite clear if the TC flag
covers the TX FIFO too. Debug prints on real hardware have shown that
from time to time the TC flag is asserted (indicating Transmitter
idle) while there are still data in the TX FIFO. Hence, in this case
the serial core will call the shutdown callback even though there are
data remaining in the TX FIFO buffers.

Avoid early shutdowns by considering the TX FIFO empty flag too. Also
avoid theoretical race conditions between DMA and the driver by
checking whether the TX DMA is in progress too.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Currently the tx_empty callback only considers the Transmit Complete
Flag (TC). The reference manual is not quite clear if the TC flag
covers the TX FIFO too. Debug prints on real hardware have shown that
from time to time the TC flag is asserted (indicating Transmitter
idle) while there are still data in the TX FIFO. Hence, in this case
the serial core will call the shutdown callback even though there are
data remaining in the TX FIFO buffers.

Avoid early shutdowns by considering the TX FIFO empty flag too. Also
avoid theoretical race conditions between DMA and the driver by
checking whether the TX DMA is in progress too.
</pre>
</div>
</content>
</entry>
<entry>
<title>tty: serial: fsl_lpuart: avoid TX FIFO overflow</title>
<updated>2015-06-09T11:04:39+00:00</updated>
<author>
<name>Stefan Agner</name>
<email>stefan.agner@toradex.com</email>
</author>
<published>2015-06-08T22:43:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=7ed3ad7562ccdd9dca296b30a556865c772d99e6'/>
<id>7ed3ad7562ccdd9dca296b30a556865c772d99e6</id>
<content type='text'>
In some rare cases, the TX DMA gets started while there are still
data in the TX FIFO and the Transmit Data Register Empty Flag
(TDRE) is asserted. In this case, the DMA writes data and overflows
the TX FIFO. It is not quite clear why the TDRE is asserted in this
case, reading the status register which should clear the flag did
not alleviate the problem. It seems that the switching between
DMA and interrupt mode leads to this glitches.

Avoid TX FIFO overrun by using a burst size of 1, which allows to
transfer all data using DMA and avoid switching between DMA and
interrupt mode entirely.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In some rare cases, the TX DMA gets started while there are still
data in the TX FIFO and the Transmit Data Register Empty Flag
(TDRE) is asserted. In this case, the DMA writes data and overflows
the TX FIFO. It is not quite clear why the TDRE is asserted in this
case, reading the status register which should clear the flag did
not alleviate the problem. It seems that the switching between
DMA and interrupt mode leads to this glitches.

Avoid TX FIFO overrun by using a burst size of 1, which allows to
transfer all data using DMA and avoid switching between DMA and
interrupt mode entirely.
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge tag 'v4.0.5' into toradex_vf_4.0-next</title>
<updated>2015-06-08T08:11:46+00:00</updated>
<author>
<name>Stefan Agner</name>
<email>stefan.agner@toradex.com</email>
</author>
<published>2015-06-08T08:11:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=17b63cad14be4b3b407451da0e10a688b67b0c83'/>
<id>17b63cad14be4b3b407451da0e10a688b67b0c83</id>
<content type='text'>
This is the 4.0.5 stable release
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This is the 4.0.5 stable release
</pre>
</div>
</content>
</entry>
</feed>
