diff --git a/model/input/driver/hdf_touch.c b/model/input/driver/hdf_touch.c index 8d2f1707831dbad0439bf2a228cb308c1b491c0d..acaadd92cb00190e13d6de9b84a51cb8a03f73a9 100644 --- a/model/input/driver/hdf_touch.c +++ b/model/input/driver/hdf_touch.c @@ -106,6 +106,9 @@ static int32_t HandlePowerEvent(ChipDevice *chipDev, uint32_t *timing, uint32_t static int32_t InputPinMuxCfg(uint32_t regAddr, int32_t regSize, uint32_t regValue) { +#if defined(CONFIG_ARCH_SPRD) + return HDF_SUCCESS; +#endif uint8_t *base = NULL; if (regAddr == 0) { HDF_LOGE("%s: regAddr invalid", __func__); @@ -264,9 +267,13 @@ static int32_t ChipDriverInit(ChipDevice *chipDev) CHECK_RETURN_VALUE(ret); HDF_LOGI("%s: chipDetect succ, ret = %d ", __func__, ret); +#if defined(CONFIG_ARCH_SPRD) + HDF_LOGI("%s: DAYU do not update firmware", __func__); +#else ret = chipDev->ops->UpdateFirmware(chipDev); CHECK_RETURN_VALUE(ret); HDF_LOGI("%s: update firmware success", __func__); +#endif ret = SetupChipIrq(chipDev); CHECK_RETURN_VALUE(ret); diff --git a/model/input/driver/touchscreen/touch_gt911.c b/model/input/driver/touchscreen/touch_gt911.c index c25c7c09900e0a18e746c6392e942e43ff9990ad..7ed36242e1f6e53382ea5b6f7d5c2553f977bfac 100644 --- a/model/input/driver/touchscreen/touch_gt911.c +++ b/model/input/driver/touchscreen/touch_gt911.c @@ -14,10 +14,6 @@ #include "input_i2c_ops.h" #include "touch_gt911.h" -#define AXIS_X_MAX 479 -#define AXIS_X_RANGE 0 -#define AXIS_Y_MAX 959 -#define AXIS_Y_RANGE 0 #define MAX_POINT 5 static int32_t ChipInit(ChipDevice *device) @@ -98,10 +94,19 @@ static void ParsePointData(ChipDevice *device, FrameData *frame, uint8_t *buf, u for (i = 0; i < pointNum; i++) { if (chipVer == 0) { // chipversion A:gt911_zsj5p5 frame->fingers[i].trackId = buf[GT_POINT_SIZE * i + GT_TRACK_ID]; +#if defined(CONFIG_ARCH_SPRD) + frame->fingers[i].y = (resY - 1 - ((buf[GT_POINT_SIZE * i + GT_X_LOW] & ONE_BYTE_MASK) | + ((buf[GT_POINT_SIZE * i + GT_X_HIGH] & ONE_BYTE_MASK) << + ONE_BYTE_OFFSET))) * resX / resY; + frame->fingers[i].x = ((buf[GT_POINT_SIZE * i + GT_Y_LOW] & ONE_BYTE_MASK) | + ((buf[GT_POINT_SIZE * i + GT_Y_HIGH] & ONE_BYTE_MASK) << + ONE_BYTE_OFFSET)) * resY / resX; +#else frame->fingers[i].y = (buf[GT_POINT_SIZE * i + GT_X_LOW] & ONE_BYTE_MASK) | ((buf[GT_POINT_SIZE * i + GT_X_HIGH] & ONE_BYTE_MASK) << ONE_BYTE_OFFSET); frame->fingers[i].x = (buf[GT_POINT_SIZE * i + GT_Y_LOW] & ONE_BYTE_MASK) | ((buf[GT_POINT_SIZE * i + GT_Y_HIGH] & ONE_BYTE_MASK) << ONE_BYTE_OFFSET); +#endif if (frame->fingers[i].x == 0) { frame->fingers[i].x = X_OFFSET; } @@ -189,17 +194,17 @@ static void SetAbility(ChipDevice *device) SET_BIT(ABS_MT_POSITION_Y) | SET_BIT(ABS_MT_TRACKING_ID); device->driver->inputDev->abilitySet.keyCode[3] = SET_BIT(KEY_UP) | SET_BIT(KEY_DOWN); device->driver->inputDev->attrSet.axisInfo[ABS_X].min = 0; - device->driver->inputDev->attrSet.axisInfo[ABS_X].max = AXIS_X_MAX; - device->driver->inputDev->attrSet.axisInfo[ABS_X].range = AXIS_X_RANGE; + device->driver->inputDev->attrSet.axisInfo[ABS_X].max = device->boardCfg->attr.resolutionX - 1; + device->driver->inputDev->attrSet.axisInfo[ABS_X].range = 0; device->driver->inputDev->attrSet.axisInfo[ABS_Y].min = 0; - device->driver->inputDev->attrSet.axisInfo[ABS_Y].max = AXIS_Y_MAX; - device->driver->inputDev->attrSet.axisInfo[ABS_Y].range = AXIS_Y_RANGE; + device->driver->inputDev->attrSet.axisInfo[ABS_Y].max = device->boardCfg->attr.resolutionY - 1; + device->driver->inputDev->attrSet.axisInfo[ABS_Y].range = 0; device->driver->inputDev->attrSet.axisInfo[ABS_MT_POSITION_X].min = 0; - device->driver->inputDev->attrSet.axisInfo[ABS_MT_POSITION_X].max = AXIS_X_MAX; - device->driver->inputDev->attrSet.axisInfo[ABS_MT_POSITION_X].range = AXIS_X_RANGE; + device->driver->inputDev->attrSet.axisInfo[ABS_MT_POSITION_X].max = device->boardCfg->attr.resolutionX - 1; + device->driver->inputDev->attrSet.axisInfo[ABS_MT_POSITION_X].range = 0; device->driver->inputDev->attrSet.axisInfo[ABS_MT_POSITION_Y].min = 0; - device->driver->inputDev->attrSet.axisInfo[ABS_MT_POSITION_Y].max = AXIS_Y_MAX; - device->driver->inputDev->attrSet.axisInfo[ABS_MT_POSITION_Y].range = AXIS_Y_RANGE; + device->driver->inputDev->attrSet.axisInfo[ABS_MT_POSITION_Y].max = device->boardCfg->attr.resolutionY - 1; + device->driver->inputDev->attrSet.axisInfo[ABS_MT_POSITION_Y].range = 0; device->driver->inputDev->attrSet.axisInfo[ABS_MT_TRACKING_ID].max = MAX_POINT; }