Re: [PATCH v7 2/2] input: add driver for Hynitron CST816X touchscreen

From: kernel test robot
Date: Sat Sep 14 2024 - 07:00:08 EST


Hi Oleh,

kernel test robot noticed the following build warnings:

[auto build test WARNING on dtor-input/next]
[also build test WARNING on dtor-input/for-linus robh/for-next krzk-dt/for-next linus/master v6.11-rc7 next-20240913]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url: https://github.com/intel-lab-lkp/linux/commits/Oleh-Kuzhylnyi/input-add-driver-for-Hynitron-CST816X-touchscreen/20240912-213044
base: https://git.kernel.org/pub/scm/linux/kernel/git/dtor/input.git next
patch link: https://lore.kernel.org/r/20240912132823.123409-2-kuzhylol%40gmail.com
patch subject: [PATCH v7 2/2] input: add driver for Hynitron CST816X touchscreen
config: sparc64-randconfig-r133-20240913 (https://download.01.org/0day-ci/archive/20240914/202409141849.QpkMdWlC-lkp@xxxxxxxxx/config)
compiler: sparc64-linux-gcc (GCC) 14.1.0
reproduce: (https://download.01.org/0day-ci/archive/20240914/202409141849.QpkMdWlC-lkp@xxxxxxxxx/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202409141849.QpkMdWlC-lkp@xxxxxxxxx/

sparse warnings: (new ones prefixed by >>)
>> drivers/input/touchscreen/hynitron-cst816x.c:100:21: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __be16 [usertype] abs_x @@ got unsigned long @@
drivers/input/touchscreen/hynitron-cst816x.c:100:21: sparse: expected restricted __be16 [usertype] abs_x
drivers/input/touchscreen/hynitron-cst816x.c:100:21: sparse: got unsigned long
>> drivers/input/touchscreen/hynitron-cst816x.c:101:21: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __be16 [usertype] abs_y @@ got unsigned long @@
drivers/input/touchscreen/hynitron-cst816x.c:101:21: sparse: expected restricted __be16 [usertype] abs_y
drivers/input/touchscreen/hynitron-cst816x.c:101:21: sparse: got unsigned long
>> drivers/input/touchscreen/hynitron-cst816x.c:147:58: sparse: sparse: incorrect type in argument 3 (different base types) @@ expected int value @@ got restricted __be16 [addressable] [usertype] abs_x @@
drivers/input/touchscreen/hynitron-cst816x.c:147:58: sparse: expected int value
drivers/input/touchscreen/hynitron-cst816x.c:147:58: sparse: got restricted __be16 [addressable] [usertype] abs_x
>> drivers/input/touchscreen/hynitron-cst816x.c:148:58: sparse: sparse: incorrect type in argument 3 (different base types) @@ expected int value @@ got restricted __be16 [addressable] [usertype] abs_y @@
drivers/input/touchscreen/hynitron-cst816x.c:148:58: sparse: expected int value
drivers/input/touchscreen/hynitron-cst816x.c:148:58: sparse: got restricted __be16 [addressable] [usertype] abs_y

vim +100 drivers/input/touchscreen/hynitron-cst816x.c

93
94 static bool cst816x_process_touch(struct cst816x_priv *priv,
95 struct cst816x_touch_info *info)
96 {
97 if (cst816x_i2c_read_register(priv, CST816X_FRAME, info, sizeof(*info)))
98 return false;
99
> 100 info->abs_x = get_unaligned_be16(&info->abs_x) & GENMASK(11, 0);
> 101 info->abs_y = get_unaligned_be16(&info->abs_y) & GENMASK(11, 0);
102
103 dev_dbg(&priv->client->dev, "x: %d, y: %d, t: %d, g: 0x%x\n",
104 info->abs_x, info->abs_y, info->touch, info->gesture);
105
106 return true;
107 }
108
109 static int cst816x_register_input(struct cst816x_priv *priv)
110 {
111 priv->input = devm_input_allocate_device(&priv->client->dev);
112 if (!priv->input)
113 return -ENOMEM;
114
115 priv->input->name = "Hynitron CST816X Touchscreen";
116 priv->input->phys = "input/ts";
117 priv->input->id.bustype = BUS_I2C;
118 input_set_drvdata(priv->input, priv);
119
120 for (int i = 0; i < ARRAY_SIZE(priv->event_map); i++)
121 input_set_capability(priv->input, EV_KEY,
122 priv->event_map[i].code);
123
124 input_set_abs_params(priv->input, ABS_X, 0, 240, 0, 0);
125 input_set_abs_params(priv->input, ABS_Y, 0, 240, 0, 0);
126
127 return input_register_device(priv->input);
128 }
129
130 static void cst816x_reset(struct cst816x_priv *priv)
131 {
132 gpiod_set_value_cansleep(priv->reset, 1);
133 msleep(50);
134 gpiod_set_value_cansleep(priv->reset, 0);
135 msleep(100);
136 }
137
138 static irqreturn_t cst816x_irq_cb(int irq, void *cookie)
139 {
140 struct cst816x_priv *priv = cookie;
141 struct cst816x_touch_info info;
142
143 if (!cst816x_process_touch(priv, &info))
144 return IRQ_HANDLED;
145
146 if (info.touch) {
> 147 input_report_abs(priv->input, ABS_X, info.abs_x);
> 148 input_report_abs(priv->input, ABS_Y, info.abs_y);
149 input_report_key(priv->input, BTN_TOUCH, 1);
150 }
151
152 if (info.gesture) {
153 input_report_key(priv->input,
154 priv->event_map[info.gesture & 0x0F].code,
155 info.touch);
156
157 if (!info.touch)
158 input_report_key(priv->input, BTN_TOUCH, 0);
159 }
160
161 input_sync(priv->input);
162
163 return IRQ_HANDLED;
164 }
165

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki