Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  elan_i2c.h   Sprache: C

 
/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * Elan I2C/SMBus Touchpad driver
 *
 * Copyright (c) 2013 ELAN Microelectronics Corp.
 *
 * Author: 林政維 (Duson Lin) <dusonlin@emc.com.tw>
 *
 * Based on cyapa driver:
 * copyright (c) 2011-2012 Cypress Semiconductor, Inc.
 * copyright (c) 2011-2012 Google, Inc.
 *
 * Trademarks are the property of their respective owners.
 */


#ifndef _ELAN_I2C_H
#define _ELAN_I2C_H

#include <linux/types.h>

#define ETP_ENABLE_ABS  0x0001
#define ETP_ENABLE_CALIBRATE 0x0002
#define ETP_DISABLE_CALIBRATE 0x0000
#define ETP_DISABLE_POWER 0x0001
#define ETP_PRESSURE_OFFSET 25

#define ETP_CALIBRATE_MAX_LEN 3

#define ETP_FEATURE_REPORT_MK BIT(0)

#define ETP_REPORT_ID  0x5D
#define ETP_TP_REPORT_ID 0x5E
#define ETP_TP_REPORT_ID2 0x5F
#define ETP_REPORT_ID2  0x60 /* High precision report */

#define ETP_REPORT_ID_OFFSET 2
#define ETP_TOUCH_INFO_OFFSET 3
#define ETP_FINGER_DATA_OFFSET 4
#define ETP_HOVER_INFO_OFFSET 30
#define ETP_MK_DATA_OFFSET 33 /* For high precision reports */

#define ETP_MAX_REPORT_LEN 39

#define ETP_MAX_FINGERS  5
#define ETP_FINGER_DATA_LEN 5

/* IAP Firmware handling */
#define ETP_PRODUCT_ID_FORMAT_STRING "%d.0"
#define ETP_FW_NAME  "elan_i2c_" ETP_PRODUCT_ID_FORMAT_STRING ".bin"
#define ETP_IAP_START_ADDR 0x0083
#define ETP_FW_IAP_PAGE_ERR (1 << 5)
#define ETP_FW_IAP_INTF_ERR (1 << 4)
#define ETP_FW_PAGE_SIZE 64
#define ETP_FW_PAGE_SIZE_128 128
#define ETP_FW_PAGE_SIZE_512 512
#define ETP_FW_SIGNATURE_SIZE 6

#define ETP_PRODUCT_ID_WHITEBOX 0x00B8
#define ETP_PRODUCT_ID_VOXEL 0x00BF
#define ETP_PRODUCT_ID_DELBIN 0x00C2
#define ETP_PRODUCT_ID_MAGPIE 0x0120
#define ETP_PRODUCT_ID_BOBBA 0x0121

struct i2c_client;
struct completion;

enum tp_mode {
 IAP_MODE = 1,
 MAIN_MODE
};

struct elan_transport_ops {
 int (*initialize)(struct i2c_client *client);
 int (*sleep_control)(struct i2c_client *, bool sleep);
 int (*power_control)(struct i2c_client *, bool enable);
 int (*set_mode)(struct i2c_client *client, u8 mode);

 int (*calibrate)(struct i2c_client *client);
 int (*calibrate_result)(struct i2c_client *client, u8 *val);

 int (*get_baseline_data)(struct i2c_client *client,
     bool max_baseline, u8 *value);

 int (*get_version)(struct i2c_client *client, u8 pattern, bool iap,
      u8 *version);
 int (*get_sm_version)(struct i2c_client *client, u8 pattern,
         u16 *ic_type, u8 *version, u8 *clickpad);
 int (*get_checksum)(struct i2c_client *client, bool iap, u16 *csum);
 int (*get_product_id)(struct i2c_client *client, u16 *id);

 int (*get_max)(struct i2c_client *client,
         unsigned int *max_x, unsigned int *max_y);
 int (*get_resolution)(struct i2c_client *client,
         u8 *hw_res_x, u8 *hw_res_y);
 int (*get_num_traces)(struct i2c_client *client,
         unsigned int *x_tracenum,
         unsigned int *y_tracenum);

 int (*iap_get_mode)(struct i2c_client *client, enum tp_mode *mode);
 int (*iap_reset)(struct i2c_client *client);

 int (*prepare_fw_update)(struct i2c_client *client, u16 ic_type,
     u8 iap_version, u16 fw_page_size);
 int (*write_fw_block)(struct i2c_client *client, u16 fw_page_size,
         const u8 *page, u16 checksum, int idx);
 int (*finish_fw_update)(struct i2c_client *client,
    struct completion *reset_done);

 int (*get_report_features)(struct i2c_client *client, u8 pattern,
       unsigned int *features,
       unsigned int *report_len);
 int (*get_report)(struct i2c_client *client, u8 *report,
     unsigned int report_len);
 int (*get_pressure_adjustment)(struct i2c_client *client,
           int *adjustment);
 int (*get_pattern)(struct i2c_client *client, u8 *pattern);
};

extern const struct elan_transport_ops elan_smbus_ops, elan_i2c_ops;

#endif /* _ELAN_I2C_H */

Messung V0.5
C=99 H=100 G=99

¤ Dauer der Verarbeitung: 0.9 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge