#include <linux/slab.h>
 #include <linux/firmware.h>
 #include <linux/input/mt.h>
+#include <linux/input/touchscreen.h>
 #include <linux/acpi.h>
 #include <linux/of.h>
 #include <linux/gpio/consumer.h>
        unsigned int y_res;
        unsigned int x_max;
        unsigned int y_max;
+       struct touchscreen_properties prop;
 
        enum elants_state state;
        enum elants_iap_mode iap_mode;
 
                        input_mt_slot(input, i);
                        input_mt_report_slot_state(input, tool_type, true);
-                       input_event(input, EV_ABS, ABS_MT_POSITION_X, x);
-                       input_event(input, EV_ABS, ABS_MT_POSITION_Y, y);
+                       touchscreen_report_pos(input, &ts->prop, x, y, true);
                        input_event(input, EV_ABS, ABS_MT_PRESSURE, p);
                        input_event(input, EV_ABS, ABS_MT_TOUCH_MAJOR, w);
 
        input_abs_set_res(ts->input, ABS_MT_POSITION_Y, ts->y_res);
        input_abs_set_res(ts->input, ABS_MT_TOUCH_MAJOR, 1);
 
+       touchscreen_parse_properties(ts->input, true, &ts->prop);
+
        error = input_mt_init_slots(ts->input, MAX_CONTACT_NUM,
                                    INPUT_MT_DIRECT | INPUT_MT_DROP_UNUSED);
        if (error) {