[tlinux-users:08525] Re: reg:ToshibaA100-139 Fn key
Jaime <[email protected]> Tue, 19 Jun 2007 18:55:35 +0200
| Newsgroups | gmane.linux.hardware.toshiba |
|---|---|
| Message-ID | <[email protected]> |
Sorry, no idea about where obtain information about that. I started the for lcd brightness module after some mails I sent to the Toshiba support requesting a specification with no result (They sent me some pdf's, but unfortunately they were useless), so debugging the windows driver was the only solution. I think it would be better add this module to a more generic-driver rather than adding more functionalities. I sent it to the omnibook people. Maybe you should add the functionalities to this driver. I have an ATI x1400 and never had a problem with the VGA output. Cheers Jaime On 6/19/07, Christian Tenllado <[email protected]> wrote: > Thanks a lot Jaime, it was a problem with my insmod. I don't know insmod > does not work on my installation. I copied the module in > the /lib/modules/mykernel and used run depmod so I could load the module > with modprobe. Now it works!! > > Thanks once more. I will have a look to the code to see if I can add > more functionality. For instance, I need to get the VGA output working, > do you have any idea where can I get the info I need for that? > > Thanks again a lot. > > Cheers. > > El vie, 15-06-2007 a las 13:18 +0200, Jaime escribió: > > Christian, please send a bit more information of what you are doing. > > The commands you use and their outputs, as well as the last lines of > > syslog where the OOPS happened. > > I'm using 2.6.21 and shouldn't be a problem the kernel version. A > > segmentation fault or a hang could happen during echoing the number to > > the device (because the module doesn't make any kind of tests) but > > during the insmod it's very strange. > > > > Try to send more data about it, maybe it could be solved. > > > > Regards > > > > Jaime > > > > On 6/15/07, Christian Tenllado <[email protected]> wrote: > > > Hello: > > > > > > I have followed this conversation, because I have the same problem. I > > > have followed this instructions on a Toshiba A100 with a Debian Sid and > > > kernel 2.6.21-1-686 kernel. > > > > > > When I try insmod I get a segmentation fault. Do you know if the problem > > > is the version of the kernel I am using? Can you help me to find out > > > which is the problem? > > > > > > Thanks in advance. > > > > > > Christian > > > > > > El jue, 14-06-2007 a las 20:15 +0200, Jaime escribió: > > > > You can type the following commands in a xterm: > > > > > > > > mkdir test_dir > > > > copy test.c to test_dir > > > > > > > > cd test_dir > > > > echo "obj-m := test.o" > Makefile > > > > make -C /usr/src/linux SUBDIRS=`pwd` modules > > > > mknod test_file c 181 0 > > > > > > > > Until here only the first time. Then you can load de module (as root): > > > > > > > > insmod test.ko > > > > > > > > Whatever user can do now: > > > > > > > > echo 2 > test_file > > > > > > > > The "2" can be a number from 0 to 7 (the brightness) > > > > > > > > In order to make this work you should have de kernel source's in > > > > /usr/src/linux to compile the module. > > > > > > > > Hope this will be useful for you. > > > > Regards > > > > > > > > Jaime > > > > > > > > > > > > > > > > > > > > > > > > On 6/14/07, atul jain <[email protected]> wrote: > > > > > > > > > > Hello Jaime, > > > > > Thanks for sending module , can you give the details > > > > > regarding first part > > > > > Which Makefile i need to edit in oder to make it work , as it is > > > > > unclear to me . > > > > > > > > > > > > > > > > > > > > On 6/14/07, Jaime <[email protected]> wrote: > > > > > > I made a small module with reverse engeneering of the Windows driver. > > > > > > I only tested on my Toshiba Satellite Pro A100 and it works. > > > > > > To compile: > > > > > > Edit a Makefile and add: > > > > > > obj-m := test.o > > > > > > > > > > > > > > > > then run in the same directory: > > > > > > > > > > > > make -C /usr/src/linux SUBDIRS=`pwd` modules > > > > > > > > > > > > Then make the file for the new device: > > > > > > > > > > > > mknod test_file c 181 0 > > > > > > > > > > > > Load de module: > > > > > > > > > > > > insmod test.ko > > > > > > > > > > > > And now, if you are very very lucky, maybe it will work: > > > > > > > > > > > > echo 3 > test_file > > > > > > > > > > > > But I warn: THE MOST PROBABLY THING WILL HAPPEN IS THE FREEZE OF THE > > > > > > LAPTOP IF YOUR MODEL DOESN'T MATCH EXACTLY WITH THE MODEL I TESTED. If > > > > > > you don't have a Phoenix BIOS don't try this, and if you have.. well.. > > > > > > it's your election x) > > > > > > > > > > > > Here is the driver > > > > > > > > > > > > test.c > > > > > > =================== CUT HERE =================== > > > > > > /* > > > > > > * Module for Toshiba lcd bright change. > > > > > > * I only made it for my Toshiba Satellite Pro A100 with Phoenix BIOS > > > > > > * I don't know under which models it works (I suppose very few) > > > > > > * The asm code I inserted I took it from a disass of the windows > > > > > > * driver provided by Toshiba. > > > > > > * WARNING: > > > > > > * The driver does NOT make any tests if the model is valid or not > > > > > > * so, the MOST probably effect of running this will be the hang of > > > > > > * the laptop, or something worse. > > > > > > * PLEASE DON'T USE THIS unless you really know what you are doing > > > > > > * This module isn't made for give support to any Toshiba model, > > > > > > * only for tests purpouses , sorry about it. > > > > > > * > > > > > > * Jaime F. <[email protected]> > > > > > > * License: GNU/GPL > > > > > > */ > > > > > > > > > > > > > > > > > > #include <linux/kernel.h> > > > > > > #include <linux/module.h> > > > > > > #include <linux/fs.h> > > > > > > #include <linux/io.h> > > > > > > > > > > > > #define DEVICE_NAME "lcd_bright" > > > > > > #define MAJOR_NUM 181 > > > > > > > > > > > > char *ptr; > > > > > > > > > > > > static ssize_t > > > > > > device_write(struct file *file, > > > > > > const char __user * buffer, size_t length, loff_t * offset) > > > > > > { > > > > > > char *addr; > > > > > > addr=(char *)__pa(ptr); > > > > > > addr+=0x10; > > > > > > > > > > > > strcpy(ptr, "INVTOS"); > > > > > > //ptr+=10; > > > > > > *(ptr+16)=(char) buffer[0]-0x30; > > > > > > //printk("escribiendo %x\n", *ptr); > > > > > > /* > > > > > > inb( 0x2e); > > > > > > inb( 0x2f); > > > > > > outb(7, 0x2e); > > > > > > outb(9, 0x2f); > > > > > > v3=inb(0x2f); > > > > > > outb2(0x2e, 0x55); > > > > > > outb2(0x2e, 7); > > > > > > outb2(0x2f,0x10); > > > > > > outb2(0x2e,0xe0); > > > > > > v4=inb(0x2f); > > > > > > outb2(0x2f,2); > > > > > > v5=inb(0x2f); > > > > > > outb2(0x2f,3); > > > > > > > > > > > > outb2(0x2e, 7); > > > > > > outb2(0x2f,9); > > > > > > outb2(0x2e,0x60); > > > > > > v1=inb(0x2f); > > > > > > outb2(0x2e,7); > > > > > > outb2(0x2f,0x10); > > > > > > outb2(0x2e,0xe0); > > > > > > outb2(0x2f,0); > > > > > > outb2(0x2e, 7); > > > > > > outb2(0x2f, 9); > > > > > > outb2 ( 0x2e, 0xaa); > > > > > > outb2 ( 0x400, 0xAF); > > > > > > v2=inb( 0x401); > > > > > > outb2( 0x400, 0xAF); > > > > > > */ > > > > > > > > > > > > __asm__("cli\n" > > > > > > /* "mov $0x01E4, %%eax\n" > > > > > > "mov $0x00b0, %%dx\n" > > > > > > "movb $0x02, 0xEF\n" > > > > > > "out %%eax, %%dx\n" > > > > > > */ > > > > > > "mov %0, %%edx\n" > > > > > > "mov %%edx, %%edi\n" > > > > > > "mov $0x20, %%ecx\n" > > > > > > "mov $0x8000f840, %%eax\n mov $0xcf8, %%edx\n out %%eax, > > > > > %%dx\n" > > > > > > "mov $0xcfc, %%dx\n" > > > > > > "in %%dx, %%eax\n" > > > > > > "and $0x0000ff80, %%eax\n" > > > > > > "add $0x2c, %%eax\n" > > > > > > "mov %%ax, %%dx\n" > > > > > > "in %%dx, %%eax\n" > > > > > > "push %%eax\n" > > > > > > // "mov %%ax, %%dx\n" > > > > > > "xor %%eax, %%eax\n" > > > > > > "out %%eax, %%dx\n" > > > > > > "mov $0xA2E4, %%eax\n" > > > > > > "mov $0xb2, %%dx\n" > > > > > > "out %%eax, %%dx\n" > > > > > > "pop %%eax\n" > > > > > > "mov $0x102c, %%dx\n" > > > > > > "out %%eax, %%dx\n" > > > > > > /* "movl $0x10, %%edx\n\t" > > > > > > "movl %%edx, %%edi\n\t" > > > > > > "movl $0x20, %%ecx\n" > > > > > > "movw $0x00E4, %%ax\n" > > > > > > "movb $0x5, %%ah\n" > > > > > > "outw %%ax, $0xb2\n" > > > > > > "movl %%eax, %0\n sti\n" > > > > > > */ > > > > > > : > > > > > > :"r"(addr): "%eax", "%edx", "%ecx","%edi", "%esi"); > > > > > > return length; > > > > > > } > > > > > > > > > > > > struct file_operations Fops = { > > > > > > .write = device_write, > > > > > > }; > > > > > > > > > > > > int init_module() > > > > > > { > > > > > > int ret_val; > > > > > > ptr=(char *)kmalloc(100, GFP_KERNEL); > > > > > > ptr+=10; > > > > > > ret_val = register_chrdev(MAJOR_NUM, DEVICE_NAME, &Fops); > > > > > > > > > > > > if (ret_val < 0) > > > > > > { > > > > > > printk(KERN_ALERT "El registro del dispositivo falló (%d)\n", > > > > > ret_val); > > > > > > return ret_val; > > > > > > } > > > > > > > > > > > > return 0; > > > > > > } > > > > > > > > > > > > void cleanup_module() > > > > > > { > > > > > > int ret; > > > > > > > > > > > > ret = unregister_chrdev(MAJOR_NUM, DEVICE_NAME); > > > > > > > > > > > > if (ret < 0) > > > > > > printk(KERN_ALERT "Error: unregister_chrdev: %d\n", ret); > > > > > > } > > > > > > > > > > > > ===================== CUT HERE ==================== > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On 6/14/07, Mathieu Larose < [email protected]> wrote: > > > > > > > Hi Atul, > > > > > > > > > > > > > > I know it won't be very useful, but I just want to let you know that > > > > > I'm in > > > > > > > the same situation as you. I've tried a lot of "solution", but none of > > > > > these > > > > > > > worked. I even contacted Toshiba and Phoenix to get information about > > > > > this > > > > > > > BIOS, and they refused to tell me anything. Maybe you should try to > > > > > contact > > > > > > > Toshiba you too or start to reverse engineering it on Windows :) > > > > > > > > > > > > > > I know that Mathieu on omnibook has received a lot of request to > > > > > support > > > > > > > your model, but without information from Toshiba, he won't do anything. > > > > > > > > > > > > > > > > > > > > > Mathieu > > > > > > > > > > > > > > > > > > > > > 2007/6/13, atul jain <[email protected]>: > > > > > > > > > > > > > > > > Hello all , > > > > > > > > > > > > > > > > i bought toshiba A100-139 > > > > > last week and > > > > > > > installed debian etch on it .I found that the fnfx is not functioning > > > > > > > > so , i am unable to set lcd brigthness and > > > > > also > > > > > > > since the bios vendor is pheonix , so i cannot use > > > > > > > > toshiba utils. > > > > > > > > > > > > > > > > > > > > > > > > If anyone any idea reagarding this , please > > > > > let me > > > > > > > know. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > waiting for reply > > > > > > > > > > > > > > > > > > > > > > > > Thanks in advance > > > > > > > > -- > > > > > > > > > > > > > > > > Cheers :) > > > > > > > > Atul > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > > > > > Regards > > > > > Atul > > > > > > > > > > > > > > > > > >