Speakup and PCI Express Serial Cards
Trevor Astrope
astrope at tabbweb.com
Fri Jan 22 16:07:27 EST 2010
For those following along in the ongoing saga of Trevor versus speakup and
the pci express card, here is the latest chapter:
I last left you after modifying serialio.h and hard coding the values for
my pci express card. This had no effect.
Well, after checking a little closer, the hard coded values for
SERIAL_PORT_DFNS is in an #ifndef, so it seems it is defined elsewhere.
Trevor not being a C programmer, let alone a kernel developer, changed
that #ifndef to a #ifdef to see where it is defined.
Turns out, in my case, it is defined in
/usr/src/kernels/2.6.31.9-174.fc12.x86_64/arch/x86/include/asm/serial.h,
and what is more, it is defined the same way as it is in serialio.h.
Taking up thy keyboard, I carefully change the first entry to look like
this:
{ 0, BASE_BAUD, 0xCC00, 16, STD_COM_FLAGS }, /* ttyS0 */ \
I then do the ever so familiar, make clean; make; make modules_install;
and add another depmod -a, just for luck. But alas, it is all for not. I
still only hear silence after connecting my dectalk express and invoking
the modprobe speakup_dectlk command.
Desperate times, calling for desperate measures, I once again roll up my
sleeves, take a deep breath, and once again delve into the speakup source
code...
I notice some print statements that are commented out in serialio.c, so I
uncomment them in hopes of getting some more information in the logs. For
those who are still following along and are just dieing to know what they
are, I won't keep you in suspense...
75 /*printk(KERN_ERR "in irq\n"); */
76 /*pr_warn("in IRQ\n"); */
There are some others, but they aren't important for now.
At first, I did not see anything else being printed in the logs. In the
time honoured tradition of, "what happens when I do this," I commented out
these lines in serialio.c:
41 if (synth_request_region(ser->port, 8))
42 return NULL;
Once again, after the make clean; make; make modules_install; ritual,
followed by the modprobe speakup_dectlk invocation, with the depmod -a
thrown in there for luck, you'll never guess what happened...
I heard the following in a slow and drawn out, but still familiar voice,
"Dectalk Express found." But where is the rest? No prompt, no nothing. Hit
enter a few times, but only my old friend, silence. I told you that you
wouldn't guess.
I did find those print statements I told you about in the logs though, so
I do feel I'm getting closer. I feel I only
need to figure out what synth_request_region(ser->port, 8) means, and I'll
be a little closer...
I will beg upon the mercy of the speakup developers and offer them a gift
in the form of my logs and hopefully I will be rewarded with some
enlightenment.
Jan 22 15:10:05 trevor kernel: speakup: unregistering synth device
/dev/synth
Jan 22 15:10:54 trevor kernel: speakup 3.1.3: initialized
Jan 22 15:10:54 trevor kernel: synth name on entry is: <NULL>
Jan 22 15:10:54 trevor kernel: initialized device: /dev/synth, node (MAJOR
10, $
Jan 22 15:10:54 trevor kernel: synth probe
Jan 22 15:10:54 trevor kernel: Ports not available, trying to steal them
Jan 22 15:10:54 trevor kernel: Trying to free nonexistent resource
<00000000000$
Jan 22 15:10:54 trevor kernel: in irq
Jan 22 15:10:54 trevor kernel: in IRQ
These last two lines are repeated a few times
Jan 22 15:10:54 trevor kernel: Jan 22 15:10:54 trevor kernel: Dectalk
Express: $
And then about a hundred more of the irq lines, followed by this, likely
after I disconnected the synth
Jan 22 15:11:27 trevor kernel: Dectalk Express: too many timeouts,
deactivating$
As usual, any help is appreciated. I hope you at least enjoyed my
ramblings as I slowly, but surely lose my mind.
Thanks,
Trevor
More information about the Speakup
mailing list