Discussion:
[lcd4linux] Problems with Parport and HD44780 driver
Stefan U. Hegner
2015-04-04 21:10:06 UTC
Permalink
Hi there,

I just migrated to a new server and also moved the lcd4linux display to
the new box.
As with the old server, I added a multi-io card to get the legacy
parport for lcd4linux.

It's a Delock PCIx Parport & 2x Serial card (in total the machine has
two of those). Here's the output from lspci -v:

07:00.2 Parallel controller: MosChip Semiconductor Technology Ltd.
PCIe 9912 Multi-I/O Controller (prog-if 03 [IEEE1284])
Subsystem: Device a000:2000
Flags: bus master, fast devsel, latency 0, IRQ 17
I/O ports at 4010 [size=8]
I/O ports at 4000 [size=8]
Memory at b1510000 (32-bit, non-prefetchable) [size=4K]
Memory at b1500000 (32-bit, non-prefetchable) [size=4K]
Capabilities: [50] MSI: Enable- Count=1/1 Maskable- 64bit+
Capabilities: [78] Power Management version 3
Capabilities: [80] Express Legacy Endpoint, MSI 00
Capabilities: [100] Advanced Error Reporting
Kernel driver in use: parport_serial

The lcd4linux.conf says regarding the display:

Display HD44780-generic {
Driver 'HD44780'
Model 'generic'
Port '/dev/parport1'
Size '20x4'
asc255bug 0
Icons 2
GPOs 0
Wire {
RW 'GND'
RS 'AUTOFD'
ENABLE 'STROBE'
ENABLE2 'GND'
GPO 'INIT'
POWER 'GND'
}
Timing {
fuzz '175'
}
}

But when I start lcd4linux I get after a while (but mostly right at
startup) the following error:

HD44780: ioctl(/dev/parport1, PPCLAIM) failed: 4 Interrupted system call
HD44780: could not initialize parallel port!
HD44780: start display failed!
Error initializing driver HD44780: Exit!

Does this sound like a timing issue?

I got no clue about the lowlevel timings. I now just took the example
from the website and replaced the old fuzz-setting:

Timing {
CY 1000
PW 450
AS 140
AH 20
INIT1 4100
INIT2 100
EXEC 80
WRCG 120
CLEAR 2250
HOME 2250
ONOFF 2250
GPO_ST 20
GPO_PW 230
POWER 500
}

For the moment, this seems to work. However, I'd appreciate, if someone
could drop me a line or two about this, because I'd like to undstand
what I'm doing and where to tweak, If I run into trouble again.

Thanks a lot in advance.

Stefan.
--
Stefan U. Hegner
<***@hegner-online.de>
* * *
D-32584 Löhne --- good ole Germany
internet: http://www.hegner-web.de
* * *
GPG-Key | 048D 7F64 0BEB 73B1 2725
F-Print | C05E 4F77 9674 EF11 55FE
Stefan U. Hegner
2015-04-05 10:38:35 UTC
Permalink
Hi there,

me again ...
Post by Stefan U. Hegner
I got no clue about the lowlevel timings. I now just took the example
Timing {
CY 1000
PW 450
AS 140
AH 20
INIT1 4100
INIT2 100
EXEC 80
WRCG 120
CLEAR 2250
HOME 2250
ONOFF 2250
GPO_ST 20
GPO_PW 230
POWER 500
}
For the moment, this seems to work.
It was wise to be a bit sceptic.

About twelve hours later, lcd4linux hung again. Here's the snippet from
my syslog:

Apr 5 11:46:56 zomba kernel: INFO: task lcd4linux:14452 blocked for
more than 120 seconds.
Apr 5 11:46:56 zomba kernel: Not tainted 3.16.0-4-amd64 #1
Apr 5 11:46:56 zomba kernel: "echo 0 >
/proc/sys/kernel/hung_task_timeout_secs" disables this message.
Apr 5 11:46:56 zomba kernel: lcd4linux D ffff8803adfdce78
0 14452 1 0x00000000
Apr 5 11:46:56 zomba kernel: ffff8803adfdca20 0000000000000082
0000000000012f00 ffff880439b43fd8
Apr 5 11:46:56 zomba kernel: 0000000000012f00 ffff8803adfdca20
ffffffffa02bc040 ffff880439b43e78
Apr 5 11:46:56 zomba kernel: ffffffffa02bc044 ffff8803adfdca20
00000000ffffffff ffffffffa02bc048
Apr 5 11:46:56 zomba kernel: Call Trace:
Apr 5 11:46:56 zomba kernel: [<ffffffff8150cb35>] ?
schedule_preempt_disabled+0x25/0x70
Apr 5 11:46:56 zomba kernel: [<ffffffff8150e5e3>] ?
__mutex_lock_slowpath+0xd3/0x1c0
Apr 5 11:46:56 zomba kernel: [<ffffffff8150e6eb>] ?
mutex_lock+0x1b/0x2a
Apr 5 11:46:56 zomba kernel: [<ffffffffa02b9387>] ?
pp_ioctl+0x27/0x970 [ppdev]
Apr 5 11:46:56 zomba kernel: [<ffffffff811c92d3>] ?
seq_read+0x1b3/0x360
Apr 5 11:46:56 zomba kernel: [<ffffffff811b9ecf>] ?
do_vfs_ioctl+0x2cf/0x4b0
Apr 5 11:46:56 zomba kernel: [<ffffffff812063d5>] ?
proc_reg_read+0x45/0x70
Apr 5 11:46:56 zomba kernel: [<ffffffff811a7ae3>] ?
vfs_read+0x93/0x170
Apr 5 11:46:56 zomba kernel: [<ffffffff811ba131>] ?
SyS_ioctl+0x81/0xa0
Apr 5 11:46:56 zomba kernel: [<ffffffff8150ff6d>] ?
system_call_fast_compare_end+0x10/0x15
[...]
Apr 5 11:48:56 zomba kernel: INFO: task lcd4linux:14452 blocked for
more than 120 seconds.
Apr 5 11:48:56 zomba kernel: Not tainted 3.16.0-4-amd64 #1
Apr 5 11:48:56 zomba kernel: "echo 0 >
/proc/sys/kernel/hung_task_timeout_secs" disables this message.
Apr 5 11:48:56 zomba kernel: lcd4linux D ffff8803adfdce78
0 14452 1 0x00000000
Apr 5 11:48:56 zomba kernel: ffff8803adfdca20 0000000000000082
0000000000012f00 ffff880439b43fd8
Apr 5 11:48:56 zomba kernel: 0000000000012f00 ffff8803adfdca20
ffffffffa02bc040 ffff880439b43e78
Apr 5 11:48:56 zomba kernel: ffffffffa02bc044 ffff8803adfdca20
00000000ffffffff ffffffffa02bc048
Apr 5 11:48:56 zomba kernel: Call Trace:
Apr 5 11:48:56 zomba kernel: [<ffffffff8150cb35>] ?
schedule_preempt_disabled+0x25/0x70
Apr 5 11:48:56 zomba kernel: [<ffffffff8150e5e3>] ?
__mutex_lock_slowpath+0xd3/0x1c0
Apr 5 11:48:56 zomba kernel: [<ffffffff8150e6eb>] ?
mutex_lock+0x1b/0x2a
Apr 5 11:48:56 zomba kernel: [<ffffffffa02b9387>] ?
pp_ioctl+0x27/0x970 [ppdev]
Apr 5 11:48:56 zomba kernel: [<ffffffff811c92d3>] ?
seq_read+0x1b3/0x360
Apr 5 11:48:56 zomba kernel: [<ffffffff811b9ecf>] ?
do_vfs_ioctl+0x2cf/0x4b0
Apr 5 11:48:56 zomba kernel: [<ffffffff812063d5>] ?
proc_reg_read+0x45/0x70
Apr 5 11:48:56 zomba kernel: [<ffffffff811a7ae3>] ?
vfs_read+0x93/0x170
Apr 5 11:48:56 zomba kernel: [<ffffffff811ba131>] ?
SyS_ioctl+0x81/0xa0
Apr 5 11:48:56 zomba kernel: [<ffffffff8150ff6d>] ?
system_call_fast_compare_end+0x10/0x15
[...]
Apr 5 11:50:56 zomba kernel: INFO: task lcd4linux:14452 blocked for
more than 1
20 seconds.
Apr 5 11:50:56 zomba kernel: Not tainted 3.16.0-4-amd64 #1
Apr 5 11:50:56 zomba kernel: "echo 0 >
/proc/sys/kernel/hung_task_timeout_secs" disables this message.
Apr 5 11:50:56 zomba kernel: lcd4linux D ffff8803adfdce78
0 14452 1 0x00000000
Apr 5 11:50:56 zomba kernel: ffff8803adfdca20 0000000000000082
0000000000012f00 ffff880439b43fd8
Apr 5 11:50:56 zomba kernel: 0000000000012f00 ffff8803adfdca20
ffffffffa02bc040 ffff880439b43e78
Apr 5 11:50:56 zomba kernel: ffffffffa02bc044 ffff8803adfdca20
00000000ffffffff ffffffffa02bc048
Apr 5 11:50:56 zomba kernel: Call Trace:
Apr 5 11:50:56 zomba kernel: [<ffffffff8150cb35>] ?
schedule_preempt_disabled+0x25/0x70
Apr 5 11:50:56 zomba kernel: [<ffffffff8150e5e3>] ?
__mutex_lock_slowpath+0xd3/0x1c0
Apr 5 11:50:56 zomba kernel: [<ffffffff8150e6eb>] ?
mutex_lock+0x1b/0x2a
Apr 5 11:50:56 zomba kernel: [<ffffffffa02b9387>] ?
pp_ioctl+0x27/0x970 [ppdev]
Apr 5 11:50:56 zomba kernel: [<ffffffff811c92d3>] ?
seq_read+0x1b3/0x360
Apr 5 11:50:56 zomba kernel: [<ffffffff811b9ecf>] ?
do_vfs_ioctl+0x2cf/0x4b0
Apr 5 11:50:56 zomba kernel: [<ffffffff812063d5>] ?
proc_reg_read+0x45/0x70
Apr 5 11:50:56 zomba kernel: [<ffffffff811a7ae3>] ?
vfs_read+0x93/0x170
Apr 5 11:50:56 zomba kernel: [<ffffffff811ba131>] ?
SyS_ioctl+0x81/0xa0
Apr 5 11:50:56 zomba kernel: [<ffffffff8150ff6d>] ?
system_call_fast_compare_end+0x10/0x15
[...]

... this keeps on repeating until 12:04:56 every two minutes

Any hints as where to play with are most warmly welcome.

Background to the system:

* System: Debian 8.0 Jessie
* Kernel: Linux 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt7-1
(2015-03-01) x86_64 GNU/Linux
* lcd4linux Version: 0.11.0~svn1200-3

... happy Easter!

Stefan.
--
Stefan U. Hegner
<***@gmail.com>
* * *
D-32584 Löhne --- good ole Germany
Michael Reinelt
2015-04-06 02:52:32 UTC
Permalink
Hi Stefan,
Post by Stefan U. Hegner
HD44780: ioctl(/dev/parport1, PPCLAIM) failed: 4 Interrupted system call
HD44780: could not initialize parallel port!
HD44780: start display failed!
Error initializing driver HD44780: Exit!
Does this sound like a timing issue?
No, I don't think so. The problem is that PPCLAIM fails.

Regarding the syslog messages from your 2nd post, this sounds like the reason for "Interrupted system call"

Maybe something else is using the parport? (some printer wizard, CUPS, ...)


regards, Michael
--
Michael Reinelt <***@reinelt.co.at>
http://home.pages.at/reinelt
GPG-Key 0xDF13BA50
ICQ #288386781
Stefan U. Hegner
2015-04-06 17:29:14 UTC
Permalink
Hi Michael,
Post by Michael Reinelt
Post by Stefan U. Hegner
But when I start lcd4linux I get after a while (but mostly right at
HD44780: ioctl(/dev/parport1, PPCLAIM) failed: 4 Interrupted system call
HD44780: could not initialize parallel port!
HD44780: start display failed!
Error initializing driver HD44780: Exit!
Does this sound like a timing issue?
No, I don't think so. The problem is that PPCLAIM fails.
Regarding the syslog messages from your 2nd post, this sounds like the
reason for "Interrupted system call"
Maybe something else is using the parport? (some printer wizard, CUPS, ...)
thanks for your hint. Then the problem needs to be searched indeed
elsewhere.

Do you have by any chance a hint, how to look for other processes on the
parport? As I'm not a developer myself, I am unware of tools that could
e.g. trace processes that try to access the parport.

Cheers & Thanks,

Stefan.
--
Stefan U. Hegner
<***@hegner-online.de>
* * *
D-32584 Löhne --- good ole Germany
internet: http://www.hegner-web.de
* * *
GPG-Key | 048D 7F64 0BEB 73B1 2725
F-Print | C05E 4F77 9674 EF11 55FE
Loading...