2 * Copyright (C) 2010, Imagis Technology Co. Ltd. All Rights Reserved.
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
16 #ifndef __IST30XX_CMCS_H__
17 #define __IST30XX_CMCS_H__
20 #define IST30XX_INTERNAL_CMCS_BIN (1)
22 #define CMCS_FLAG_CM (1)
23 #define CMCS_FLAG_CM_SPEC (1 << 1)
24 #define CMCS_FLAG_CM_SLOPE0 (1 << 2)
25 #define CMCS_FLAG_CM_SLOPE1 (1 << 3)
26 #define CMCS_FLAG_CS0 (1 << 4)
27 #define CMCS_FLAG_CS1 (1 << 5)
29 #define FLAG_ENABLE_CM (1)
30 #define FLAG_ENABLE_CS (2)
31 #define FLAG_ENABLE_CR (4)
33 #define IST30XX_CMCS_LOAD_END (0x8FFFFCAB)
34 #if (IMAGIS_TSP_IC == IMAGIS_IST30XXB)
35 #define IST30XX_CMCS_BUF_SIZE (16 * 16)
36 #elif (IMAGIS_TSP_IC == IMAGIS_IST3038)
37 #define IST30XX_CMCS_BUF_SIZE (((19 * 19) / 2 + 1) * 2)
39 #error "Unknown TSP_IC"
42 #define ENABLE_CM_MODE(n) (n & 1)
43 #define ENABLE_CS_MODE(n) ((n >> 1) & 1)
45 #define IST30XXB_CMCS_NAME "ist30xxb.cms"
47 #define IST30XX_CMCS_MAGIC "CMCS1TAG"
48 struct CMCS_ADDR_INFO {
67 struct CMCS_SLOPE_INFO {
75 struct CMCS_SPEC_INFO {
82 u16 mode; // enable bit
90 u32 reserved; // for checksum of firmware
92 typedef struct _CMCS_INFO {
94 struct CMCS_ADDR_INFO addr;
95 struct CMCS_CH_INFO ch;
96 struct CMCS_SPEC_INFO spec_cr;
97 struct CMCS_SPEC_INFO spec_cm;
98 struct CMCS_SPEC_INFO spec_cs0;
99 struct CMCS_SPEC_INFO spec_cs1;
100 struct CMCS_SLOPE_INFO slope;
110 typedef struct _CMCS_BIN_INFO {
119 typedef struct _CMCS_BUF {
120 s16 cm[IST30XX_CMCS_BUF_SIZE];
121 s16 spec[IST30XX_CMCS_BUF_SIZE];
122 s16 slope0[IST30XX_CMCS_BUF_SIZE];
123 s16 slope1[IST30XX_CMCS_BUF_SIZE];
124 s16 cs0[IST30XX_CMCS_BUF_SIZE];
125 s16 cs1[IST30XX_CMCS_BUF_SIZE];
129 int ist30xx_init_cmcs_sysfs(void);
131 #endif // __IST30XX_CMCS_H__