[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: parport ECP & DMA
We have a couple of customers using a DMA based ECP
driver forETRAX 100LX. When I return from my vacation
(August 5) I will check if I have the sourcecode
somewhere. In our non-Linux based products (e.g. the
printservers) we use ECP a lot so we know that the ECP
mode in the ETRAX 100LX works well.
The switching between forward and reverse mode has to be
There are two ways to solve this:
1. Some protocols used over parallel ports are based on
commands and responses. In this case the port can be
switched to forward just before the command and then
to reverse just after the command.
2. For applications where the bulk of the data is
in one direction you can poll the other direction
by reverseing the port once in a while. This works
well with e.g. printers.
Can you describe the protocol that will run on your
Behalf Of Pieter Grimmerink
Sent: den 22 juli 2002 10:41
Subject: parport ECP & DMA
I understand from the lack of replies to my previous parport & ECP
question, that hardware ECP support is not being worked on
at the moment.
I have an application for which a lot of data should go through
the parallel port, in both directions.
The reverse data arrives asynchronically.
Now with DMA enabled for the parallel port, all that's left would
be setting the port in ecp_forward and ecp_reverse mode and enabling
the proper DMA channel.
I guess that in my situation I should switch to ecp_rev mode
when reverse data is available from within an interrupt handler,
since I don't find any indication in the manuals that the ECP hardware
is capable of switching to reverse mode by itself when necessary.
For my application, this would mean that worst case (full speed in
both directions) one interrupt per reverse byte would be generated,
because the port has to switch continuously between forward / reverse mode.
Before I searched the manuals on this issue, I was hoping for the
-enable DMA channel for both directions,
-hardware handles all ECP operations, switches to reverse whenever reverse
data is available, back to forward when forward data is available
But I am afraid it does not work like this?