Hi Alex,
I've been reading the SMC spec that the Linux-IrDA home page links to,
and I've written something that dumps the controller config to screen.
Could you please run it and send me your output? (smc-ircc-dump.cc)
I also made something that sets the DMA of the IR controller. I hope
that helps you with your floppy problem (smc-ircc-setdma.cc)
Both should compile with "g++ -o filename filename.cc"
Thanks,
Graeme
On Sun, 2002-03-17 at 15:04, Alexander Hoogerhuis wrote:
> mail me the output of these commands BEFORE you load anything related
> to IR:
>
> lsmod
> cat /proc/dma
> cat /proc/interupts
> uname -a
>
> And I'll see if I can spot something that is not right.
>
> Oh, and attach .config from the top-level directory in the kernel
> souce.
>
> ttfn,
> A
>
> Graeme Pyle <[EMAIL PROTECTED]> writes:
>
> > Hi Alex,
> >
> > Thanks very much for all your help - I really appreciate it.
> >
> > I'm still having no luck with 2.8.19-pre3-ac1 though - my whole machine
> > freezes (keyboard lights start flashing too) as soon as I do a "echo 1 >
> > /proc/sys/net/irda/discovery" or a pppd. I can "ifconfig irda0 up"
> > though.
> >
> > What I find strange is this:
> >
> > kernel: found SMC SuperIO Chip (devid=0x0a rev=00 base=0x00e0):FDC37N971
> > kernel: SMC IrDA Controller found
> > kernel: IrCC version 2.0, firport 0xe38, sirport 0x300 dma=2, irq=3
> >
> > Where does 0xe38 come from? What does your look like? Windows detects
> >
> > IO=0x3e8
> > IO=0x130
> > IRQ=7
> > DMA=5
> >
> > If I try to override defaults, I just get "no such device".
> >
> > Anyhow, can you please send me a copy of your kernel config
> >
> > Thanks so much for your help :-)
> >
> > Graeme
> >
> >
> >
> >
> > On Sun, 2002-03-17 at 01:44, Alexander Hoogerhuis wrote:
> > > 2.4.18, 2.4.19-preX are mainline releases, they are the official 2.4
> > > string of releases, ac-releases are the patches by ALan Cox, which are
> > > usually higly recommended anyway. Preempt it a patch by Robert
> > > M. Love, look in
> > > ftp://ftp.kernel.org/pub/linux/kernel/people/rml/preempt-kernel/v2.4
> > > or thereabouts. Highly recommended too :)
> > >
> > > I have it working on anything after 2.4.18, with or without ac-patches
> > > or preempt.
> > >
> > > ttfn,
> > > A
> > >
> > > Graeme Pyle <[EMAIL PROTECTED]> writes:
> > >
> > > > Hi Alex,
> > > >
> > > > Great - I'm glad to hear you got it working!!!
> > > >
> > > > Excuse my ignorance, but what are "mainline releases and AC"? Or rather,
> > > > which kernel version do you use and where can I get it?
> > > >
> > > > I see at www.kernel.org that the latest stable release is 2.4.18? Are
> > > > you running a 2.5 kernel? Should I try 2.4.19-pre3, or perhaps
> > > > 2.4.19-pre3-ac1?
> > > >
> > > > Many thanks,
> > > >
> > > > Graeme
> > > >
> > > >
> > > >
> > > > On Sat, 2002-03-16 at 22:12, Alexander Hoogerhuis wrote:
> > > > > All the kernels I run on now are post 2.4.18, both the mainline
> > > > > releases and AC, with and without preempt, and freeswan, and it all
> > > > > seems to work good as long as you dont use the floppy driver (both SMC
> > > > > driver and floppy wants dma2).
> > > > >
> > > > > Here's what is related to IrDA in my modules.conf:
> > > > >
> > > > > alias tty-ldisc-11 irtty
> > > > > alias char-major-10-187 irnet
> > > > > alias char-major-60 ircomm_tty
> > > > > alias char-major-161 ircomm-tty
> > > > > alias irda0 smc-ircc
> > > > > alias irlan0 irlan
> > > > > post-install ircomm /bin/echo `hostname` > /proc/sys/net/irda/devname
> > > > >
> > > > > Then you can e.g. run this from /etc/rc.local:
> > > > >
> > > > > ifconfig irda0 up
> > > > > echo 1 > /proc/sys/net/irda/discovery
> > > > > echo 115200 > /proc/sys/net/irda/max_baud_rate
> > > > > pppd /dev/ircomm0 115200 192.168.2.1:192.168.2.2 passive silent noauth local
>ms-dns 192.168.2.1 persist
> > > > >
> > > > > and this in /etc/rc.serial:
> > > > > setserial /dev/ttyS2 uart none
> > > > >
> > > > > Now a Palm will be able to connect using PPP without pain. Almost,
> > > > > seems sometimes it hangs with the "establishing" dialogue on the
> > > > > Palm. and I still have my /var/log/messages clogged with these:
> > > > >
> > > > > NETDEV WATCHDOG: irda0: transmit timed out
> > > > > irda0: transmit timed out
> > > > > NETDEV WATCHDOG: irda0: transmit timed out
> > > > > irda0: transmit timed out
> > > > >
> > > > > But I still get ~4kbit transfers using HSCD on my Ericsson T39m, but
> > > > > then I only speak IrDA (no PPP) between the machine and the
> > > > > phone.
> > > > >
> > > > > My .config from the kernel sources contain these bits:
> > > > >
> > > > > CONFIG_IRDA=m
> > > > > CONFIG_IRLAN=m
> > > > > CONFIG_IRNET=m
> > > > > CONFIG_IRCOMM=m
> > > > > CONFIG_IRDA_ULTRA=y
> > > > > CONFIG_IRDA_CACHE_LAST_LSAP=y
> > > > > CONFIG_IRDA_FAST_RR=y
> > > > > # CONFIG_IRDA_DEBUG is not set
> > > > > CONFIG_IRTTY_SIR=m
> > > > > CONFIG_IRPORT_SIR=m
> > > > >
> > > > > So there you go, you have it all :)
> > > > >
> > > > > ttfn,
> > > > > A
> > > > >
> > > > > Graeme Pyle <[EMAIL PROTECTED]> writes:
> > > > >
> > > > > > Hi Alex,
> > > > > >
> > > > > > I've been reading some of your posts from February in the Linux IrDA
> > > > > > mailing list. I'm also struggling with IR on an Armada M700 running
> > > > > > RedHat 7.2
> > > > > >
> > > > > > Did you'd eventually manage to get the IR port working? If so, how?
> > > > > >
> > > > > > Thanks,
> > > > > >
> > > > > > Graeme
> > > > > >
> > > > > >
> > > > >
> > > > > --
> > > > > Alexander Hoogerhuis | [EMAIL PROTECTED]
> > > > > CCNP - CCDP - MCNE - CCSE | +47 908 21 485
> > > > > "You have zero privacy anyway. Get over it." --Scott McNealy
> > > >
> > >
> > > --
> > > Alexander Hoogerhuis | [EMAIL PROTECTED]
> > > CCNP - CCDP - MCNE - CCSE | +47 908 21 485
> > > "You have zero privacy anyway. Get over it." --Scott McNealy
> >
>
> --
> Alexander Hoogerhuis | [EMAIL PROTECTED]
> CCNP - CCDP - MCNE - CCSE | +47 908 21 485
> "You have zero privacy anyway. Get over it." --Scott McNealy
#include <stdio.h>
#include <sys/io.h>
main() {
unsigned short cfg_base=0xe0;
unsigned short fir_io;
unsigned short sir_io;
unsigned short irq;
unsigned short dma;
unsigned short fir_msb;
unsigned short fir_lsb;
unsigned short sir_msb;
unsigned short sir_lsb;
unsigned short mode;
unsigned short options;
unsigned short duplex;
unsigned short a;
unsigned short b;
// Need permission to go poking around
ioperm(cfg_base,8,1);
/* Enter configuration */
outb(0x55, cfg_base);
/* Select logical device (UART2) */
outb(0x07, cfg_base);
outb(0x05, cfg_base + 1);
/* Read SIR io */
outb(0x60, cfg_base);
sir_io = inb(cfg_base + 1) << 8;
outb(0x61, cfg_base);
sir_io |= inb(cfg_base + 1);
/* Read FIR io */
outb(0x62, cfg_base);
fir_msb = inb(cfg_base + 1);
fir_io = fir_msb << 8;
outb(0x63, cfg_base);
fir_lsb = inb(cfg_base + 1);
fir_io |= fir_lsb;
// IRQ
outb(0x70, cfg_base);
irq = inb(cfg_base + 1);
// DMA
outb(0x74, cfg_base);
dma = inb(cfg_base + 1);
// mode
outb(0xF0, cfg_base);
mode = inb(cfg_base + 1);
// options
outb(0xF1, cfg_base);
options = inb(cfg_base + 1);
// duplex
outb(0xF2, cfg_base);
duplex = inb(cfg_base + 1);
// a
outb(0xF7, cfg_base);
a = inb(cfg_base + 1);
// b
outb(0xF8, cfg_base);
b = inb(cfg_base + 1);
/* Exit configuration */
outb(0xaa, cfg_base);
printf("firport 0x%03x, sirport 0x%03x, irq %d, dma %d\n",fir_io,sir_io,irq,dma);
printf("mode 0x%02x\n",mode);
printf("options 0x%02x\n",options);
printf("duplex 0x%02x\n",duplex);
printf("a 0x%02x\n",a);
printf("b 0x%02x\n",b);
}
#include <stdio.h>
#include <stdlib.h>
#include <sys/io.h>
#include <linux/types.h>
main(int argc, char** argv) {
unsigned short cfg_base=0xe0;
if (argc!=2) {
printf("usage: smc-ircc-setdma DMA\n");
return 1;
}
unsigned short dma=atoi(argv[1]);
printf("Setting DMA to %d\n",dma);
// Need permission to go poking around
ioperm(cfg_base,8,1);
/* Enter configuration */
outb(0x55, cfg_base);
/* Select logical device (UART2) */
outb(0x07, cfg_base);
outb(0x05, cfg_base + 1);
// Write DMA
outb(0x74, cfg_base);
outb(dma, cfg_base + 1);
/* Exit configuration */
outb(0xaa, cfg_base);
return 0;
}