Greetings,

One of my developers are getting spurius ^[[G outputs from keyboard driver. Im 
100% certain that its caused by keyboard
driver and removing report_key also removes the problem.

I extracted some numbers when it happens and they show some linear structure, 
but so far failed to understand
why it doesn't work.

It happens when j = 5, i = even number (2, 4, 6, 8, 10)
Here are the values this developer is getting at boot (along with 5 x ^[[G)

(j , i, scancode, xor, bit)
5, 6, 53, 32 , 32
5, 8, 69, 32 , 32
5, 4, 37, 32 , 32
5, 2, 21, 32 , 32


                
        for (i = 0; i < JORNADA_SCAN_SIZE; i++) {
                unsigned char new = jornadakbd->new_scan[i];
                unsigned char old = jornadakbd->old_scan[i];
                unsigned int xor = new ^ old;

                /* no difference, then skip */
                if (xor == 0)
                        continue;

                /* run through bits and compair */
                for (j = 0; j < 8; j++) {
                        unsigned char bit = 1 << j;
                        if (xor & bit) {
                                scancode = (i << 3) + j;
                                if(j == 5)
                                    printk(KERN_INFO "kbd: reporting i=%d, 
j=%d, code=%d, xor=%d, bit=%d\n", i, j, scancode, xor, bit);
                                input_event(input_dev,
                                            EV_MSC, MSC_SCAN, scancode);
                                input_report_key(input_dev,
                                                 keymap[scancode],
                                                 !(new & bit));
                                sync_me = 1;
                        }
                }
        }

        if (sync_me)
            input_sync(input_dev);
}




-- 
Kristoffer Ericson <[EMAIL PROTECTED]>

Reply via email to