[tlinux-users:08505] Re: reg:ToshibaA100-139 Fn key

Jaime <[email protected]>
Newsgroups gmane.linux.hardware.toshiba
Message-ID <[email protected]>
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
> >
>
>
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.