Subject: Re: LKMized SBUS driver
To: None <uwe@ptc.spbu.ru>
From: Pete Zaitcev <zaitcev@redhat.com>
List: port-sparc
Date: 11/26/2001 18:46:04
> FWIW, I have a very strange problem with com @ ebus in Krups
> JavaStation.  When comstart is called with fewer than 8 bytes, I
> receive an interrupt from com, but the IIR register denies any
> knowledge of ever sending one (IIR_NOPEND) - thus making it a stray
> interrupt (since comintr sees IIR_NOPEND and returns 0 immediately).
> The work-around I came up with is to modify comstart to send the chunk
> of data first and enable TX interrupts only after that.  This might be
> a chip glitch, but I mention it here to give you an example of a stray
> interrupt in a situation where you wouldn't expect (from reading the
> source) to have one.

I never saw anything like that on Krups, its serial always
worked perfectly for me. MrCoffee, on the other hand...

static inline void
su_outb(struct su_struct *info, unsigned long offset, int value)
{
#ifndef __sparc_v9__
        /*
         * MrCoffee has weird schematics: IRQ4 & P10(?) pins of SuperIO are
         * connected with a gate then go to SlavIO. When IRQ4 goes tristated
         * gate outputs a logical one. Since we use level triggered interrupts
         * we have lockup and watchdog reset. We cannot mask IRQ because
         * keyboard shares IRQ with us (Word has it as Bob Smelik's design).
         * This problem is similar to what Alpha people suffer, see serial.c.
         */
        if (offset == UART_MCR) value |= UART_MCR_OUT2;
#endif
        outb(value, info->port + offset);
}

-- Pete