最終更新:2015-09-01 (火) 15:38:48 (3153d)  

Nexus 7 (2013)/タッチパネル
Top / Nexus 7 (2013) / タッチパネル

ドライバ

dmesg

  • ファームからI2Cで解像度を取得してるっぽい
    <4>[    0.250762] [ELAN] Touch dirver register
    
    ...
    
    <4>[    1.339202] [ektf3k]:[elan] elan_ktf3k_ts_init
    <4>[    1.339538] [ektf3k]:[ELAN] Start HW reset!
    <4>[    1.439697] [usb_otg] switch to peripheral mode by default (boot)
    <4>[    1.599365] [ektf3k]:[elan]detect intr=>Old FW
    <4>[    1.599731] [ektf3k]:The boot code is old!
    <4>[    1.629760] [ektf3k]:[elan] __hello_packet_handler: hello packet 55:55:55:55
    <4>[    1.629852] [ektf3k]:[elan] hello packet's rc = 0
    <6>[    1.839782] notifying plugin
    <4>[    1.841735] [ektf3k]:[elan] __fw_packet_handler: firmware version: 0xa044
    <4>[    1.843872] [ektf3k]:[elan] __fw_packet_handler: X resolution: 0x007e
    <4>[    1.845916] [ektf3k]:[elan] __fw_packet_handler: Y resolution: 0x00d2
    <4>[    1.848052] [ektf3k]:[elan] __fw_packet_handler: firmware id: 0x3029
    <4>[    1.850128] [ektf3k]:[elan] __fw_packet_handler: boot code id: 0x6047
    <4>[    1.850311] [ektf3k]:[Elan] Max X=2239, Max Y=1343
    <6>[    1.850616] input: elan-touchscreen as /devices/virtual/input/input0
    <4>[    1.851074] [ektf3k]:The firmware was version 0xA044 and id:0x3029
    <4>[    1.851287] [ektf3k]: /proc/ektf_dbg created
    <4>[    1.851745] [ektf3k]:[elan] Start touchscreen elan-touchscreen in interrupt mode
    <4>[    1.852050] [ektf3k]:[ELAN]misc_register finished!!
    <6>[    1.852142] elan-ktf3k 3-0010: Update power source to 0

Linux/proc/interrupts

  • 294:         37   msmgpio  elan-ktf3k

getevent

  • root@flo:/ # getevent
    add device 1: /dev/input/event5
      name:     "gpio-keys"
    add device 2: /dev/input/event3
      name:     "apq8064-tabla-snd-card Headset Jack"
    add device 3: /dev/input/event2
      name:     "apq8064-tabla-snd-card Button Jack"
    add device 4: /dev/input/event4
      name:     "h2w button"
    add device 5: /dev/input/event1
      name:     "lid_input"
    add device 6: /dev/input/event0
      name:     "elan-touchscreen"
    could not get driver version for /dev/input/mice, Not a typewriter
    130|root@flo:/ # getevent -lp /dev/input/event0
    add device 1: /dev/input/event0
      name:     "elan-touchscreen"
      events:
        ABS (0003): ABS_MT_SLOT           : value 0, min 0, max 9, fuzz 0, flat 0, resolution 0
                    ABS_MT_TOUCH_MAJOR    : value 0, min 0, max 31, fuzz 0, flat 0,resolution 0
                    ABS_MT_POSITION_X     : value 0, min 0, max 1343, fuzz 0, flat 0, resolution 0
                    ABS_MT_POSITION_Y     : value 0, min 0, max 2239, fuzz 0, flat 0, resolution 0
                    ABS_MT_TRACKING_ID    : value 0, min 0, max 65535, fuzz 0, flat0, resolution 0
                    ABS_MT_PRESSURE       : value 0, min 0, max 255, fuzz 0, flat 0, resolution 0
      input props:
        INPUT_PROP_DIRECT

.idc

  • AOSP/device/asus/flo/elan-touchscreen.idc
    # Copyright (C) 2010 The Android Open Source Project
    #
    # Licensed under the Apache License, Version 2.0 (the "License");
    # you may not use this file except in compliance with the License.
    # You may obtain a copy of the License at
    #
    #      http://www.apache.org/licenses/LICENSE-2.0
    #
    # Unless required by applicable law or agreed to in writing, software
    # distributed under the License is distributed on an "AS IS" BASIS,
    # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    # See the License for the specific language governing permissions and
    # limitations under the License.
    
    #
    # Input Device Configuration File for the ELAN touch panel device.
    #
    # These calibration values are derived from empirical measurements
    # and may not be appropriate for use with other touch screens.
    # Refer to the input device configuration documentation for more details.
    #
    
    # Basic Parameters
    touch.deviceType = touchScreen
    touch.orientationAware = 1
    
    # Size
    touch.size.calibration = diameter
    touch.size.scale = 6.3284
    touch.size.bias = 39.9752
    
    # Pressure
    touch.pressure.calibration = amplitude
    touch.pressure.scale = 0.0048
    
    # Orientation
    touch.orientation.calibration = none
    
    touch.coverage.calibration = box

ファームウェア

  • drivers/input/touchscreen/fw_data.b?