Hello Greg,
On Sat, Oct 25, 2008 at 3:59 AM, Greg KH <[EMAIL PROTECTED]> wrote:
> On Thu, Oct 23, 2008 at 06:38:43PM +0530, Anuz Pratap Singh Tomar wrote:
>> There are some issues with drivers in that book, infact my par_port driver
>> couldn't run because there was no interrupt generation. I am not sure
>> whether that is issue with driver or the h/w(which is less likely).
>>
>> I once sent a mail to Greg to update the book somewhere online or something
>> like that, but I guess the mail got lost in the huge chunk of mails he
>> receive.
>
> Well, any email telling me to "just update the book to the latest kernel
> version" probably got dropped on the floor due to my laughing so hard :)
>
> Updating the linux driver book is something that the LDD authors have
> been talking about for a while now, it's just due to schedules and other
> things, it is still in the planning phase. The biggest thing we are
> trying to work on solving is to keep it from going out of date so soon,
> to find a way to keep it up to date with the rapid pace of kernel
> development.
>
> sorry,
Fully agree with your dilemma. Everyone has to take care of their
priorities. For Greg, it is commercial and real-world problem. For
others, it is their schoolwork and learning. With Internet, it is
much faster and easier to help each other now. For those who have
the time, I would appreciate if u can supply patches (to
HERE.....kernelnewbies!!!!) to baker's 2.6.25 LDD3 examples.
Focusing on the problem at hand now, I zoomed to the tty subdirectory.
Only two file there - tiny_serial.c and tiny_tty.c.
Compiling it in the latest kernel 2.6.27 reveal some errors. After
some trial and errors, I got it fixed, below is the patch:
/mnt/lv1/download/ldd3_examples/tty>diff -Nurp tiny_serial.c.orig tiny_serial.c
--- tiny_serial.c.orig 2008-10-25 16:34:00.000000000 +0800
+++ tiny_serial.c 2008-10-25 16:32:39.000000000 +0800
@@ -103,7 +103,7 @@ static void tiny_timer(unsigned long dat
return;
if (!port->info)
return;
- tty = port->info->tty;
+ tty = port->info->port.tty;
if (!tty)
return;
@@ -289,4 +289,3 @@ static int __init tiny_init(void)
}
module_init(tiny_init);
-
/mnt/lv1/download/ldd3_examples/tty>diff -Nurp tiny_tty.c.orig tiny_tty.c
--- tiny_tty.c.orig 2008-10-25 16:15:09.000000000 +0800
+++ tiny_tty.c 2008-10-25 16:26:26.000000000 +0800
@@ -507,10 +507,36 @@ static struct tty_operations serial_ops
.write = tiny_write,
.write_room = tiny_write_room,
.set_termios = tiny_set_termios,
+
+/* with reference to drivers/char/synclinkmp.c */
+
+ .ioctl = tiny_ioctl, /* tiny */
+ .read_proc = tiny_read_proc, /* tiny */
+ .tiocmget = tiny_tiocmget, /* tiny */
+ .tiocmset = tiny_tiocmset, /* tiny */
};
static struct tty_driver *tiny_tty_driver;
+/*
+
+static const struct tty_operations ops = {
+ .put_char = put_char,
+ .flush_chars = flush_chars,
+ .chars_in_buffer = chars_in_buffer,
+ .flush_buffer = flush_buffer,
+ .throttle = throttle,
+ .unthrottle = unthrottle,
+ .send_xchar = send_xchar,
+ .break_ctl = set_break,
+ .wait_until_sent = wait_until_sent,
+ .stop = tx_hold,
+ .start = tx_release,
+ .hangup = hangup,
+};
+*/
+
+
static int __init tiny_init(void)
{
int retval;
@@ -538,10 +564,6 @@ static int __init tiny_init(void)
/* hack to make the book purty, yet still use these functions in the
* real driver. They really should be set up in the serial_ops
* structure above... */
- tiny_tty_driver->read_proc = tiny_read_proc;
- tiny_tty_driver->tiocmget = tiny_tiocmget;
- tiny_tty_driver->tiocmset = tiny_tiocmset;
- tiny_tty_driver->ioctl = tiny_ioctl;
/* register the tty driver */
retval = tty_register_driver(tiny_tty_driver);
Now it compile successfully.
Good luck!!!!
--
Regards,
Peter Teoh
--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to [EMAIL PROTECTED]
Please read the FAQ at http://kernelnewbies.org/FAQ