Hi, Looks like my previous email didn't get through due to large attachment size. I've combined your module with my code and created speakup-test.c module ( http://pastebin.com/pXqRgyF1). When compiled into the kernel binary, it is able to communicate during the boot process. Relevant part of kernel log reproduced below. I've posted full log here: http://pastebin.com/UqMAktFm [ 3.382675] GHES: HEST is not enabled! [ 3.383142] ACPI: Battery Slot [BAT0] (battery present) [ 3.383161] Serial: 8250/16550 driver, 32 ports, IRQ sharing enabled [ 3.404736] 00:03: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A [ 3.405554] Linux agpgart interface v0.103 [ 3.405616] got tty ffff97ed674b0000 [ 3.405805] speakup_test_open(): tty->name: ttyS0; tty->ldisc->ops->name: speakup_test_ldisc [ 3.405894] speakup_test_open(): done writing. rv=9 [ 3.407209] brd: module loaded [ 3.407722] loop: module loaded [ 3.407789] ata_piix 0000:00:01.1: version 2.13 [ 3.408060] scsi host0: ata_piix Comms work fine both as a LKM and when built in. Now I see three items to address, listed below in no particular order. 1. Supplying major and minor dev numbers, instead of hardcoding. 2. Integrating the changes into speakup_dummy and testing it. 3. Strategy for kernel patch. Do we try to have it accepted? Not sure if there is a standard way of addressing it. Thanks, Okash On Mon, Nov 21, 2016 at 10:32 PM, Okash Khawaja <okash.khawaja@xxxxxxxxx> wrote: > Hi, > > Just to be sure, this is what we want for speakup_dummy. > > 1. register ldisc structure in spk_tty_probe(). > 2. in spk_tty_probe(), attach line discipline - like you would for > /dev/ttyX from user space > 3. in open() method of ldisc structure, take the tty_struct and cache it. > 4. in spk_serial_out_tty() call tty->ops->write() instead of outb(). > > What have a I missed here? > > Thanks, > Okash > _______________________________________________ Speakup mailing list Speakup@xxxxxxxxxxxxxxxxx http://linux-speakup.org/cgi-bin/mailman/listinfo/speakup