Skip to content

Commit

Permalink
Video configuration, Archive TS driver update
Browse files Browse the repository at this point in the history
This reverts commit 3ca4641.
  • Loading branch information
AbandonedCart committed Dec 14, 2012
1 parent 3ca4641 commit 9dadd2a
Show file tree
Hide file tree
Showing 5 changed files with 39 additions and 106 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -93,3 +93,5 @@ zip.aosp/boot.img
zip.aosp/TwistedZero_leanKernel_184Mhz_AOSP.zip

include/config/tristate.conf

0
2 changes: 1 addition & 1 deletion arch/arm/configs/lean_aosp_defconfig
Original file line number Diff line number Diff line change
Expand Up @@ -315,7 +315,7 @@ CONFIG_ARCH_MSM7X30_LTE=y
# CONFIG_MACH_BLISSC is not set
# CONFIG_MSM_STACKED_MEMORY is not set
CONFIG_PHYS_OFFSET=0x00200000
CONFIG_PANEL_SELF_REFRESH=y
# CONFIG_PANEL_SELF_REFRESH is not set
CONFIG_HTC_BATTCHG=y
# CONFIG_HTC_BATT_CORE is not set
CONFIG_HTC_BATTCHG_SMEM=y
Expand Down
2 changes: 1 addition & 1 deletion config/mecha_config
Original file line number Diff line number Diff line change
Expand Up @@ -315,7 +315,7 @@ CONFIG_ARCH_MSM7X30_LTE=y
# CONFIG_MACH_BLISSC is not set
# CONFIG_MSM_STACKED_MEMORY is not set
CONFIG_PHYS_OFFSET=0x00200000
CONFIG_PANEL_SELF_REFRESH=y
# CONFIG_PANEL_SELF_REFRESH is not set
CONFIG_HTC_BATTCHG=y
# CONFIG_HTC_BATT_CORE is not set
CONFIG_HTC_BATTCHG_SMEM=y
Expand Down
134 changes: 30 additions & 104 deletions drivers/input/touchscreen/atmel.c
Original file line number Diff line number Diff line change
Expand Up @@ -43,12 +43,16 @@
#define RECALIB_NG 1
#define RECALIB_DONE 2

/* phone call status */
#define PHONE_NONE 0
#define PHONE_END_CALL 1
#define PHONE_IN_CALL 2

struct atmel_ts_data {
struct i2c_client *client;
struct input_dev *input_dev;
struct workqueue_struct *atmel_wq;
struct work_struct work;
struct work_struct check_delta_work;
int (*power) (int on);
struct early_suspend early_suspend;
struct info_id_t *id;
Expand Down Expand Up @@ -329,8 +333,8 @@ static ssize_t atmel_regdump_show(struct device *dev,
return count;
numObj = ts_data->id->num_declared_objects - 1;
startAddr = get_object_address(ts_data, GEN_POWERCONFIG_T7);
endAddr = get_object_address(ts_data, SPT_CTECONFIG_T28);
endAddr += get_object_size(ts_data, SPT_CTECONFIG_T28) - 1;
endAddr = ts_data->object_table[numObj].i2c_address +
ts_data->object_table[numObj].size - 1;
if (ts_data->id->version >= 0x14) {
for (loop_i = startAddr; loop_i <= endAddr; loop_i++) {
ret_t = i2c_atmel_read(ts_data->client, loop_i, ptr, 1);
Expand Down Expand Up @@ -474,9 +478,7 @@ static ssize_t atmel_unlock_store(struct device *dev,

printk(KERN_INFO "Touch: unlock change to %d\n", unlock);

if (unlock == 2 && ts_data->id->version >= 0x20 &&
ts_data->first_pressed &&
ts_data->pre_data[0] < RECALIB_DONE)
if (unlock == 2 && ts_data->pre_data[0] != RECALIB_DONE)
confirm_calibration(ts_data, 0);

return count;
Expand Down Expand Up @@ -585,63 +587,6 @@ static int check_delta(struct atmel_ts_data*ts)
return 0;
}

static int check_delta_full(struct atmel_ts_data *ts)
{
int8_t data[T37_DATA + T37_PAGE_SIZE];
uint8_t loop_i, loop_j;
uint8_t cnt, pos_cnt, neg_cnt, thr_cnt;
uint8_t x, y;
int16_t rawdata;

cnt = pos_cnt = neg_cnt = 0;
i2c_atmel_write_byte_data(ts->client,
get_object_address(ts, GEN_COMMANDPROCESSOR_T6) +
T6_CFG_DIAG, T6_CFG_DIAG_CMD_DELTAS);

x = T28_CFG_MODE0_X + ts->config_setting[NONE].config_T28[T28_CFG_MODE];
y = T28_CFG_MODE0_Y - ts->config_setting[NONE].config_T28[T28_CFG_MODE];
thr_cnt = (x * y) >> 1; /* 50% */

for (loop_i = 0; loop_i < 4; loop_i++) {
memset(data, 0xFF, sizeof(data));
for (loop_j = 0;
!(data[T37_MODE] == T6_CFG_DIAG_CMD_DELTAS && data[T37_PAGE] == loop_i) && loop_j < 10; loop_j++) {
msleep(5);
i2c_atmel_read(ts->client,
get_object_address(ts, DIAGNOSTIC_T37), data, 2);
}
if (loop_j == 10)
printk(KERN_ERR "%s: Diag data not ready\n", __func__);

i2c_atmel_read(ts->client,
get_object_address(ts, DIAGNOSTIC_T37),
data, T37_DATA + T37_PAGE_SIZE);
for (loop_j = T37_DATA;
loop_j < (T37_DATA + T37_PAGE_SIZE - 1); loop_j += 2) {
rawdata = data[loop_j+1] << 8 | data[loop_j];
cnt++;
if (rawdata > 50)
pos_cnt++;
else if (rawdata < -50)
neg_cnt++;

if (cnt >= x * y - 1)
break;
}
i2c_atmel_write_byte_data(ts->client,
get_object_address(ts, GEN_COMMANDPROCESSOR_T6) +
T6_CFG_DIAG, T6_CFG_DIAG_CMD_PAGEUP);
}

if (pos_cnt + neg_cnt > thr_cnt) {
printk(KERN_INFO "Touch: environment changed, C=%d P=%d N=%d T=%d\n",
cnt, pos_cnt, neg_cnt, thr_cnt);
return 1;
}

return 0;
}

static void check_calibration(struct atmel_ts_data*ts)
{
uint8_t data[T37_DATA + T37_TCH_FLAG_SIZE];
Expand Down Expand Up @@ -783,8 +728,9 @@ static void msg_process_multitouch(struct atmel_ts_data *ts, uint8_t *data, uint
}
if (ts->id->version >= 0x20 && ts->pre_data[0] < RECALIB_DONE) {
if (ts->finger_count == 0 && !ts->pre_data[0] &&
((jiffies > ts->timestamp + 15 * HZ && ts->psensor_status == 0) ||
(idx == 0 && ts->finger_data[idx].y > 750
&& ((ts->finger_data[idx].y - ts->pre_data[idx + 1]) > 135)))
&& ((ts->finger_data[idx].y - ts->pre_data[idx + 1]) > 135))))
confirm_calibration(ts, 1);
if (ts->finger_count)
i2c_atmel_write_byte_data(ts->client,
Expand Down Expand Up @@ -920,13 +866,16 @@ static void compatible_input_report(struct input_dev *idev,
struct atmel_finger_data *fdata, uint8_t press, uint8_t last)
{
if (!press) {
input_report_key(idev, BTN_TOUCH, 0);
} else {
input_report_abs(idev, ABS_MT_PRESSURE, fdata->z);
input_report_key(idev, BTN_TOUCH, 0);
input_report_abs(idev, ABS_MT_TOUCH_MAJOR, 0);
}
else {
input_report_key(idev, BTN_TOUCH, 1);
input_report_abs(idev, ABS_MT_TOUCH_MAJOR, fdata->z);
input_report_abs(idev, ABS_MT_WIDTH_MAJOR, fdata->w);
input_report_abs(idev, ABS_MT_POSITION_X, fdata->x);
input_report_abs(idev, ABS_MT_POSITION_Y, fdata->y);
input_report_key(idev, BTN_TOUCH, fdata->z);
input_report_abs(idev, ABS_MT_PRESSURE, fdata->z);
input_mt_sync(idev);
}
}
Expand All @@ -936,12 +885,16 @@ static void htc_input_report(struct input_dev *idev,
struct atmel_finger_data *fdata, uint8_t press, uint8_t last)
{
if (!press) {
input_report_key(idev, BTN_TOUCH, 0);
input_report_abs(idev, ABS_MT_AMPLITUDE, 0);
input_report_abs(idev, ABS_MT_PRESSURE, 0);
input_report_abs(idev, ABS_MT_POSITION, BIT(31));
} else {
input_report_key(idev, BTN_TOUCH, 1);
input_report_abs(idev, ABS_MT_AMPLITUDE, fdata->z << 16 | fdata->w);
input_report_abs(idev, ABS_MT_POSITION,
(last ? BIT(31) : 0) | fdata->x << 16 | fdata->y);
input_report_abs(idev, ABS_MT_PRESSURE, fdata->z);
}
}
#endif
Expand Down Expand Up @@ -1060,32 +1013,6 @@ static void atmel_ts_work_func(struct work_struct *work)
enable_irq(ts->client->irq);
}

static void atmel_ts_check_delta_work_func(struct work_struct *work)
{
struct atmel_ts_data *ts;

ts = container_of(work, struct atmel_ts_data, check_delta_work);

if (ts->id->version >= 0x20 && check_delta_full(ts)) {
i2c_atmel_write_byte_data(ts->client,
get_object_address(ts, GEN_ACQUISITIONCONFIG_T8) +
T8_CFG_ATCHCALST, ts->ATCH_EXT[0]);
i2c_atmel_write_byte_data(ts->client,
get_object_address(ts, GEN_ACQUISITIONCONFIG_T8) +
T8_CFG_ATCHCALSTHR, ts->ATCH_EXT[1]);
i2c_atmel_write_byte_data(ts->client,
get_object_address(ts, GEN_ACQUISITIONCONFIG_T8) +
T8_CFG_ATCHFRCCALTHR, 16);
i2c_atmel_write_byte_data(ts->client,
get_object_address(ts, GEN_ACQUISITIONCONFIG_T8) +
T8_CFG_ATCHFRCCALRATIO, 240);
msleep(1);
i2c_atmel_write_byte_data(ts->client,
get_object_address(ts, GEN_COMMANDPROCESSOR_T6) +
T6_CFG_CALIBRATE, 0x55);
}
}

static irqreturn_t atmel_ts_irq_handler(int irq, void *dev_id)
{
struct atmel_ts_data *ts = dev_id;
Expand Down Expand Up @@ -1276,7 +1203,6 @@ static int atmel_ts_probe(struct i2c_client *client,
}

INIT_WORK(&ts->work, atmel_ts_work_func);
INIT_WORK(&ts->check_delta_work, atmel_ts_check_delta_work_func);
ts->client = client;
i2c_set_clientdata(client, ts);
pdata = client->dev.platform_data;
Expand Down Expand Up @@ -1444,8 +1370,10 @@ static int atmel_ts_probe(struct i2c_client *client,
ts->abs_width_min = pdata->abs_width_min;
ts->abs_width_max = pdata->abs_width_max;
ts->GCAF_level = pdata->GCAF_level;
if (ts->id->version >= 0x20)
if (ts->id->version >= 0x20) {
ts->ATCH_EXT = &pdata->config_T8[T8_CFG_ATCHCALST];
ts->timestamp = jiffies + 60 * HZ;
}
ts->filter_level = pdata->filter_level;

if (usb_get_connect_type())
Expand Down Expand Up @@ -1678,7 +1606,7 @@ static int atmel_ts_probe(struct i2c_client *client,
}
ts->input_dev->name = "atmel-touchscreen";
set_bit(EV_SYN, ts->input_dev->evbit);
set_bit(EV_KEY, ts->input_dev->evbit);
set_bit(EV_KEY, ts->input_dev->keybit);
set_bit(BTN_TOUCH, ts->input_dev->keybit);
set_bit(BTN_2, ts->input_dev->keybit);
set_bit(EV_ABS, ts->input_dev->evbit);
Expand All @@ -1692,16 +1620,15 @@ static int atmel_ts_probe(struct i2c_client *client,
ts->abs_x_min, ts->abs_x_max, 0, 0);
input_set_abs_params(ts->input_dev, ABS_MT_POSITION_Y,
ts->abs_y_min, ts->abs_y_max, 0, 0);
input_set_abs_params(ts->input_dev, ABS_MT_PRESSURE,
ts->abs_pressure_min, ts->abs_pressure_max,
0, 0);
input_set_abs_params(ts->input_dev, ABS_MT_WIDTH_MAJOR,
ts->abs_width_min, ts->abs_width_max, 0, 0);
input_set_abs_params(ts->input_dev, ABS_MT_TOUCH_MAJOR, 0, 255, 0, 0);
input_set_abs_params(ts->input_dev, ABS_MT_WIDTH_MAJOR, 0, 30, 0, 0);
input_set_abs_params(ts->input_dev, ABS_MT_PRESSURE, 0, 255, 0, 0);
#ifndef CONFIG_TOUCHSCREEN_COMPATIBLE_REPORT
input_set_abs_params(ts->input_dev, ABS_MT_AMPLITUDE,
0, ((ts->abs_pressure_max << 16) | ts->abs_width_max), 0, 0);
input_set_abs_params(ts->input_dev, ABS_MT_POSITION,
0, (BIT(31) | (ts->abs_x_max << 16) | ts->abs_y_max), 0, 0);
input_set_abs_params(ts->input_dev, ABS_MT_PRESSURE, 0, 255, 0, 0);
#endif


Expand Down Expand Up @@ -1782,7 +1709,6 @@ static int atmel_ts_suspend(struct i2c_client *client, pm_message_t mesg)

disable_irq(client->irq);

cancel_work_sync(&ts->check_delta_work);
ret = cancel_work_sync(&ts->work);
if (ret)
enable_irq(client->irq);
Expand Down Expand Up @@ -1820,6 +1746,7 @@ static int atmel_ts_resume(struct i2c_client *client)
get_object_address(ts, GEN_ACQUISITIONCONFIG_T8) + T8_CFG_ATCHCALSTHR,
ts->cal_tchthr[ts->status] - 5);
}
ts->timestamp = jiffies;
}

i2c_atmel_write(ts->client,
Expand Down Expand Up @@ -1855,7 +1782,6 @@ static int atmel_ts_resume(struct i2c_client *client)
if (ts->pre_data[0] != RECALIB_NEED) {
printk(KERN_INFO "Touch: resume in call, psensor status %d\n",
ts->psensor_status);
queue_work(ts->atmel_wq, &ts->check_delta_work);
} else {
msleep(1);
i2c_atmel_write_byte_data(client,
Expand Down
5 changes: 5 additions & 0 deletions mkboot.aosp/boot.img-ramdisk/init.htc7x30.usb.rc
Original file line number Diff line number Diff line change
Expand Up @@ -43,3 +43,8 @@ on property:sys.usb.config=mass_storage,rndis,adb
start adbd
setprop sys.usb.state $sys.usb.config

on property:persist.service.adb.enable=1
start adbd

on property:persist.service.adb.enable=0
stop adbd

0 comments on commit 9dadd2a

Please sign in to comment.