// SPDX-License-Identifier: GPL-2.0-or-later/* * HID driver for Sony DualSense(TM) controller. * * Copyright (c) 2020 Sony Interactive Entertainment */#include<linux/bits.h>#include<linux/crc32.h>#include<linux/device.h>#include<linux/hid.h>#include<linux/idr.h>#include<linux/input/mt.h>#include<linux/leds.h>#include<linux/led-class-multicolor.h>#include<linux/module.h>#include<asm/unaligned.h>#include"hid-ids.h"/* List of connected playstation devices. */staticDEFINE_MUTEX(ps_devices_lock);staticLIST_HEAD(ps_devices_list);staticDEFINE_IDA(ps_player_id_allocator);#define HID_PLAYSTATION_VERSION_PATCH 0x8000/* Base class for playstation devices. */structps_device{structlist_headlist;structhid_device*hdev;spinlock_tlock;uint32_tplayer_id;structpower_supply_descbattery_desc;structpower_supply*battery;uint8_tbattery_capacity;intbattery_status;constchar*input_dev_name;/* Name of primary input device. */uint8_tmac_address[6];/* Note: stored in little endian order. */uint32_thw_version;uint32_tfw_version;int(<