There are apparently 3 conditions that need to hold in order for
interrupts to be generated:
1. RXENAB has to be set for the line
2. MSE | RIE needs to be set for csr
3. The serial IRQ bit needs to be set in the status register.
My latest theory indicates that 1 and 2 are set... I generated
a timer loop to print out 2. - and #1 I'm actually poking at the
controller... So I'm fairly certain its being set.
#3 though is giving me a difficult time - my best theory at the moment
is that after the "dz_write" and the subsequent interrupt series,
something is turning off interrupts explicitly. I base this
on the fact that I have tried a timer routine that simply turned on
transmit interrupts - and that does not generate interrupts...
The sequence of events is something like:
1. dz_write load up text....
2. process characters through generated interrupts across the serial
(successfully sends characters across the line)
3. call dz_stop (disables transmit enable)
( successfully stops transmit interrupts)
4. SOMETHING UNKNOWN
5. timer kicks in... tries to set transmit enable... no interrupts
generated. There should be at least one interrupt generated...
Assuming no registers changed besides the transmit enable
this should work - but it doesn't. The only logical explanation
is that the status register is changing for some reason.
1. Is there an easy way to print out the status register?
2. Where do I find the code for fgets - which I think is what
sash is calling - and may be causing the problem?
3. Does anyone have any tylenol for my headache?
Given enough eyeballs all bugs seem shallow.
On Wed, 4 Nov 1998, Anders Magnusson wrote:
> > I'm trying to write the DZ-11 serial driver for linux (on decstation 2100)
> Eh, do the DS2100 have anything DZ11-compatible? Or is it the DC chip
> you mean? The on-board mouse/keyboard controller.
I mean the dc7085 that is a dz-11 like clone - at least according to the
> > I've gotten the code to generate interrupts for transmitting characters -
> > but seem to be totally unable to get it to generate interrupts when it
> > receives characters...
> Note that, as different from the "original" DZ11 device, the receive
> and transmit interrupt is enabled not in the device registers but
> somewhere else, in some interrupt controller somewhere. I'm no expert
> of DS2100, have only played with VAXstations.
Indeed - that's what request_irq does at the bottom of the function.
> > I believe that I've enabled the line appropriatedly - I know that the
> > RDONE flag goes high when a character comes in - (I can read the
> > status if I force transmittion) - but for the life of me I can't
> > get the thing to generate an interrupt on the machine....
> If MSE and RXIE is enabled, you should have got an interrupt if you
> receive a character. Otherwise you haven't enabled RX interrupts in
> the interrupt controller. I don't know if the RXIE bit is needed on
> the DS2100.
Thank you for confirmation that I really should expect an RX - it helps
immensely to know that.
> Have you looked at the dz11 code in NetBSD? sys/arch/vax/uba/dz*.?
No - I haven't - but I did find the dc.c equivalent for mips pmax netbsd -
which I figure is very close to what I need.
> > Any thoughts you might have might give me that final insight into
> > what I'm doing wrong....
> I hope I have given you some hints at least :-)
> -- Ragge