| .. | .. |
|---|
| 1 | +// SPDX-License-Identifier: GPL-2.0-only |
|---|
| 1 | 2 | #include <linux/module.h> |
|---|
| 2 | 3 | #include <linux/virtio.h> |
|---|
| 3 | 4 | #include <linux/virtio_config.h> |
|---|
| 4 | 5 | #include <linux/input.h> |
|---|
| 6 | +#include <linux/slab.h> |
|---|
| 5 | 7 | #include <linux/input/mt.h> |
|---|
| 6 | 8 | |
|---|
| 7 | 9 | #include <uapi/linux/virtio_ids.h> |
|---|
| .. | .. |
|---|
| 112 | 114 | { |
|---|
| 113 | 115 | u8 size; |
|---|
| 114 | 116 | |
|---|
| 115 | | - virtio_cwrite(vi->vdev, struct virtio_input_config, select, &select); |
|---|
| 116 | | - virtio_cwrite(vi->vdev, struct virtio_input_config, subsel, &subsel); |
|---|
| 117 | | - virtio_cread(vi->vdev, struct virtio_input_config, size, &size); |
|---|
| 117 | + virtio_cwrite_le(vi->vdev, struct virtio_input_config, select, &select); |
|---|
| 118 | + virtio_cwrite_le(vi->vdev, struct virtio_input_config, subsel, &subsel); |
|---|
| 119 | + virtio_cread_le(vi->vdev, struct virtio_input_config, size, &size); |
|---|
| 118 | 120 | return size; |
|---|
| 119 | 121 | } |
|---|
| 120 | 122 | |
|---|
| .. | .. |
|---|
| 157 | 159 | u32 mi, ma, re, fu, fl; |
|---|
| 158 | 160 | |
|---|
| 159 | 161 | virtinput_cfg_select(vi, VIRTIO_INPUT_CFG_ABS_INFO, abs); |
|---|
| 160 | | - virtio_cread(vi->vdev, struct virtio_input_config, u.abs.min, &mi); |
|---|
| 161 | | - virtio_cread(vi->vdev, struct virtio_input_config, u.abs.max, &ma); |
|---|
| 162 | | - virtio_cread(vi->vdev, struct virtio_input_config, u.abs.res, &re); |
|---|
| 163 | | - virtio_cread(vi->vdev, struct virtio_input_config, u.abs.fuzz, &fu); |
|---|
| 164 | | - virtio_cread(vi->vdev, struct virtio_input_config, u.abs.flat, &fl); |
|---|
| 162 | + virtio_cread_le(vi->vdev, struct virtio_input_config, u.abs.min, &mi); |
|---|
| 163 | + virtio_cread_le(vi->vdev, struct virtio_input_config, u.abs.max, &ma); |
|---|
| 164 | + virtio_cread_le(vi->vdev, struct virtio_input_config, u.abs.res, &re); |
|---|
| 165 | + virtio_cread_le(vi->vdev, struct virtio_input_config, u.abs.fuzz, &fu); |
|---|
| 166 | + virtio_cread_le(vi->vdev, struct virtio_input_config, u.abs.flat, &fl); |
|---|
| 165 | 167 | input_set_abs_params(vi->idev, abs, mi, ma, fu, fl); |
|---|
| 166 | 168 | input_abs_set_res(vi->idev, abs, re); |
|---|
| 167 | 169 | if (abs == ABS_MT_TRACKING_ID) { |
|---|
| .. | .. |
|---|
| 252 | 254 | |
|---|
| 253 | 255 | size = virtinput_cfg_select(vi, VIRTIO_INPUT_CFG_ID_DEVIDS, 0); |
|---|
| 254 | 256 | if (size >= sizeof(struct virtio_input_devids)) { |
|---|
| 255 | | - virtio_cread(vi->vdev, struct virtio_input_config, |
|---|
| 256 | | - u.ids.bustype, &vi->idev->id.bustype); |
|---|
| 257 | | - virtio_cread(vi->vdev, struct virtio_input_config, |
|---|
| 258 | | - u.ids.vendor, &vi->idev->id.vendor); |
|---|
| 259 | | - virtio_cread(vi->vdev, struct virtio_input_config, |
|---|
| 260 | | - u.ids.product, &vi->idev->id.product); |
|---|
| 261 | | - virtio_cread(vi->vdev, struct virtio_input_config, |
|---|
| 262 | | - u.ids.version, &vi->idev->id.version); |
|---|
| 257 | + virtio_cread_le(vi->vdev, struct virtio_input_config, |
|---|
| 258 | + u.ids.bustype, &vi->idev->id.bustype); |
|---|
| 259 | + virtio_cread_le(vi->vdev, struct virtio_input_config, |
|---|
| 260 | + u.ids.vendor, &vi->idev->id.vendor); |
|---|
| 261 | + virtio_cread_le(vi->vdev, struct virtio_input_config, |
|---|
| 262 | + u.ids.product, &vi->idev->id.product); |
|---|
| 263 | + virtio_cread_le(vi->vdev, struct virtio_input_config, |
|---|
| 264 | + u.ids.version, &vi->idev->id.version); |
|---|
| 263 | 265 | } else { |
|---|
| 264 | 266 | vi->idev->id.bustype = BUS_VIRTUAL; |
|---|
| 265 | 267 | } |
|---|
| .. | .. |
|---|
| 371 | 373 | static unsigned int features[] = { |
|---|
| 372 | 374 | /* none */ |
|---|
| 373 | 375 | }; |
|---|
| 374 | | -static struct virtio_device_id id_table[] = { |
|---|
| 376 | +static const struct virtio_device_id id_table[] = { |
|---|
| 375 | 377 | { VIRTIO_ID_INPUT, VIRTIO_DEV_ANY_ID }, |
|---|
| 376 | 378 | { 0 }, |
|---|
| 377 | 379 | }; |
|---|