Merge branch 'android11-5.4' into 'android11-5.4-lts'

Sync up with android11-5.4 for the following commits:

2385b6cc59 ANDROID: ABI: Update allowed list for QCOM
a151ec4843 FROMGIT: binder: make sure fd closes complete
ad2e92f9cd FROMLIST: HID: Support Microsoft SPI touch digitizer driver

Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: I793dbccd0029effbe6acfe92445dfcfc87c0ab46
This commit is contained in:
Greg Kroah-Hartman 2021-09-17 08:42:41 +02:00
commit 4076dc42c4
7 changed files with 81 additions and 42 deletions

View File

@ -6,12 +6,12 @@
add_wait_queue
adjust_managed_page_count
alarm_cancel
alarm_expires_remaining
alarm_init
alarm_start_relative
alarm_expires_remaining
alarmtimer_get_rtcdev
alloc_chrdev_region
__alloc_disk_node
alarmtimer_get_rtcdev
alloc_etherdev_mqs
alloc_io_pgtable_ops
alloc_netdev_mqs
@ -44,6 +44,7 @@
backlight_device_set_brightness
backlight_device_unregister
bin2hex
bio_crypt_should_process
__bitmap_clear
bitmap_find_free_region
bitmap_find_next_zero_area_off
@ -109,10 +110,10 @@
bpf_prog_put
bpf_prog_sub
bpf_stats_enabled_key
bpf_trace_run1
bpf_trace_run10
bpf_trace_run11
bpf_trace_run12
bpf_trace_run1
bpf_trace_run2
bpf_trace_run3
bpf_trace_run4
@ -127,8 +128,10 @@
bus_find_device
bus_for_each_dev
bus_register
bus_register_notifier
bus_set_iommu
bus_unregister
bus_unregister_notifier
call_netdevice_notifiers
cancel_delayed_work
cancel_delayed_work_sync
@ -318,8 +321,8 @@
csum_tcpudp_nofold
_ctype
current_time
datagram_poll
d_add
datagram_poll
d_drop
deactivate_locked_super
default_llseek
@ -570,14 +573,15 @@
dma_get_slave_channel
d_make_root
dmam_alloc_attrs
dmam_free_coherent
dma_max_mapping_size
dmam_free_coherent
dma_mmap_attrs
dma_pool_alloc
dma_pool_create
dma_pool_destroy
dma_pool_free
dma_release_channel
__dma_request_channel
dma_request_slave_channel
dma_resv_add_excl_fence
dma_resv_add_shared_fence
@ -588,7 +592,6 @@
dma_resv_test_signaled_rcu
dma_resv_wait_timeout_rcu
dma_set_coherent_mask
__dma_request_channel
dma_set_mask
do_exit
do_wait_intr
@ -882,8 +885,8 @@
drm_vma_offset_manager_destroy
drm_vma_offset_manager_init
drm_vma_offset_remove
drop_nlink
drm_wait_one_vblank
drop_nlink
dump_stack
enable_irq
enable_percpu_irq
@ -943,8 +946,8 @@
freq_qos_add_request
freq_qos_remove_request
freq_qos_update_request
fsl8250_handle_irq
fs_kobj
fsl8250_handle_irq
fsstack_copy_attr_all
ftrace_set_clr_event
full_name_hash
@ -1027,6 +1030,7 @@
gpiochip_line_is_irq
gpiochip_line_is_valid
gpiochip_remove
gpiochip_set_nested_irqchip
gpiod_cansleep
gpiod_direction_input
gpiod_direction_output
@ -1038,7 +1042,6 @@
gpiod_get_value_cansleep
gpiod_is_active_low
gpiod_set_debounce
gpiochip_set_nested_irqchip
gpiod_set_raw_value
gpiod_set_raw_value_cansleep
gpiod_set_value
@ -1065,9 +1068,9 @@
hrtimer_forward
__hrtimer_get_remaining
hrtimer_init
hrtimer_init_sleeper
hrtimer_start_range_ns
hrtimer_try_to_cancel
hrtimer_init_sleeper
hvc_alloc
hvc_instantiate
hvc_kick
@ -1086,25 +1089,30 @@
i2c_adapter_type
i2c_add_adapter
i2c_add_numbered_adapter
i2c_bus_type
i2c_del_adapter
i2c_del_driver
i2c_for_each_dev
i2c_get_adapter
i2c_get_device_id
i2c_get_dma_safe_msg_buf
i2c_put_adapter
i2c_put_dma_safe_msg_buf
i2c_register_driver
i2c_smbus_read_byte
i2c_smbus_write_byte
i2c_smbus_read_byte_data
i2c_smbus_read_byte_data
i2c_smbus_read_i2c_block_data
i2c_smbus_write_byte
i2c_smbus_write_byte_data
i2c_smbus_write_byte_data
i2c_smbus_write_i2c_block_data
__i2c_smbus_xfer
i2c_smbus_xfer
__i2c_transfer
i2c_smbus_read_i2c_block_data
i2c_smbus_read_byte_data
i2c_smbus_write_i2c_block_data
i2c_smbus_write_byte_data
i2c_transfer
i2c_transfer_buffer_flags
i2c_verify_client
icc_get
icc_link_create
icc_node_add
@ -1256,7 +1264,6 @@
irq_get_irq_data
irq_modify_status
irq_of_parse_and_map
irq_work_queue
irq_set_affinity_hint
irq_set_affinity_notifier
irq_set_chained_handler_and_data
@ -1269,6 +1276,7 @@
irq_set_irq_wake
irq_set_parent
irq_to_desc
irq_work_queue
iterate_dir
iterate_fd
jiffies
@ -1291,11 +1299,10 @@
kernfs_put
kern_path
keyslot_manager_create
keyslot_manager_private
keyslot_manager_set_max_dun_bytes
keyslot_manager_reprogram_all_keys
keyslot_manager_destroy
bio_crypt_should_process
keyslot_manager_private
keyslot_manager_reprogram_all_keys
keyslot_manager_set_max_dun_bytes
__kfifo_in
__kfifo_out
kfree
@ -1410,8 +1417,8 @@
mdiobus_free
__mdiobus_register
mdiobus_unregister
media_create_pad_link
media_create_intf_link
media_create_pad_link
media_device_cleanup
media_device_init
__media_device_register
@ -1528,8 +1535,8 @@
nf_conntrack_destroy
nla_memcpy
__nla_parse
nla_put_64bit
nla_put
nla_put_64bit
__nlmsg_put
no_llseek
nonseekable_open
@ -1539,8 +1546,8 @@
nr_swap_pages
ns_capable
nsecs_to_jiffies
ns_to_timespec64
ns_to_timespec
ns_to_timespec64
__num_online_cpus
nvmem_cell_get
nvmem_cell_put
@ -1598,11 +1605,11 @@
of_get_parent
of_get_property
of_get_regulator_init_data
of_graph_get_endpoint_by_regs
of_graph_get_next_endpoint
of_graph_get_remote_node
of_graph_get_remote_port_parent
of_graph_get_remote_port
of_graph_get_endpoint_by_regs
of_graph_get_remote_port_parent
of_graph_parse_endpoint
of_hwspin_lock_get_id
of_icc_get
@ -1685,17 +1692,22 @@
pci_common_swizzle
pci_d3cold_disable
pci_device_group
pci_device_is_present
pci_dev_present
pci_disable_device
pci_disable_msi
pcie_bus_configure_settings
pcie_capability_clear_and_set_word
pcie_capability_read_word
pci_enable_device
pci_find_bus
pci_find_capability
pci_find_ext_capability
pci_find_next_capability
pci_find_pcie_root_port
pci_free_irq_vectors
pci_get_device
pci_get_slot
pci_iomap
pci_iomap_range
pci_irq_get_affinity
@ -1725,7 +1737,6 @@
pci_walk_bus
pci_write_config_dword
pci_write_config_word
pci_dev_present
PDE_DATA
__per_cpu_offset
perf_trace_buf_alloc
@ -1930,8 +1941,8 @@
refcount_inc_checked
refcount_inc_not_zero_checked
__refrigerator
regcache_cache_only
regcache_cache_bypass
regcache_cache_only
regcache_mark_dirty
regcache_sync
regcache_sync_region
@ -2107,10 +2118,10 @@
sdev_prefix_printk
__sdhci_add_host
sdhci_add_host
sdhci_cleanup_host
sdhci_cqe_disable
sdhci_cqe_enable
sdhci_cqe_irq
sdhci_cleanup_host
sdhci_dumpregs
sdhci_enable_clk
sdhci_get_property
@ -2158,6 +2169,7 @@
sg_alloc_table_from_pages
sg_copy_from_buffer
sg_copy_to_buffer
sget
sg_free_table
sg_init_one
sg_init_table
@ -2173,7 +2185,6 @@
sg_pcopy_from_buffer
sg_pcopy_to_buffer
sg_scsi_ioctl
sget
shmem_file_setup
shmem_read_mapping_page_gfp
shmem_truncate_range
@ -2382,6 +2393,7 @@
strcmp
strcpy
strcspn
stream_open
strim
string_get_size
string_unescape
@ -2791,8 +2803,8 @@
vb2_ops_wait_prepare
vb2_plane_cookie
vb2_plane_vaddr
vb2_prepare_buf
vb2_poll
vb2_prepare_buf
vb2_qbuf
vb2_querybuf
vb2_queue_error
@ -2907,7 +2919,3 @@
xdp_rxq_info_reg
xdp_rxq_info_reg_mem_model
xdp_rxq_info_unreg
pci_get_slot
pcie_capability_clear_and_set_word
pci_device_is_present
pci_find_bus

View File

@ -1965,6 +1965,7 @@ static void binder_deferred_fd_close(int fd)
}
static void binder_transaction_buffer_release(struct binder_proc *proc,
struct binder_thread *thread,
struct binder_buffer *buffer,
binder_size_t failed_at,
bool is_failure)
@ -2124,8 +2125,16 @@ static void binder_transaction_buffer_release(struct binder_proc *proc,
&proc->alloc, &fd, buffer,
offset, sizeof(fd));
WARN_ON(err);
if (!err)
if (!err) {
binder_deferred_fd_close(fd);
/*
* Need to make sure the thread goes
* back to userspace to complete the
* deferred close
*/
if (thread)
thread->looper_need_return = true;
}
}
} break;
default:
@ -3206,7 +3215,7 @@ static void binder_transaction(struct binder_proc *proc,
err_copy_data_failed:
binder_free_txn_fixups(t);
trace_binder_transaction_failed_buffer_release(t->buffer);
binder_transaction_buffer_release(target_proc, t->buffer,
binder_transaction_buffer_release(target_proc, NULL, t->buffer,
buffer_offset, true);
if (target_node)
binder_dec_node_tmpref(target_node);
@ -3285,7 +3294,9 @@ static void binder_transaction(struct binder_proc *proc,
* Cleanup buffer and free it.
*/
static void
binder_free_buf(struct binder_proc *proc, struct binder_buffer *buffer)
binder_free_buf(struct binder_proc *proc,
struct binder_thread *thread,
struct binder_buffer *buffer)
{
binder_inner_proc_lock(proc);
if (buffer->transaction) {
@ -3313,7 +3324,7 @@ binder_free_buf(struct binder_proc *proc, struct binder_buffer *buffer)
binder_node_inner_unlock(buf_node);
}
trace_binder_transaction_buffer_release(buffer);
binder_transaction_buffer_release(proc, buffer, 0, false);
binder_transaction_buffer_release(proc, thread, buffer, 0, false);
binder_alloc_free_buf(&proc->alloc, buffer);
}
@ -3507,7 +3518,7 @@ static int binder_thread_write(struct binder_proc *proc,
proc->pid, thread->pid, (u64)data_ptr,
buffer->debug_id,
buffer->transaction ? "active" : "finished");
binder_free_buf(proc, buffer);
binder_free_buf(proc, thread, buffer);
break;
}
@ -4194,7 +4205,7 @@ static int binder_thread_read(struct binder_proc *proc,
buffer->transaction = NULL;
binder_cleanup_transaction(t, "fd fixups failed",
BR_FAILED_REPLY);
binder_free_buf(proc, buffer);
binder_free_buf(proc, thread, buffer);
binder_debug(BINDER_DEBUG_FAILED_TRANSACTION,
"%d:%d %stransaction %d fd fixups failed %d/%d, line %d\n",
proc->pid, thread->pid,

View File

@ -1998,6 +1998,9 @@ int hid_connect(struct hid_device *hdev, unsigned int connect_mask)
case BUS_I2C:
bus = "I2C";
break;
case BUS_SPI:
bus = "SPI";
break;
case BUS_VIRTUAL:
bus = "VIRTUAL";
break;

View File

@ -860,6 +860,8 @@
#define USB_DEVICE_ID_MS_POWER_COVER 0x07da
#define USB_DEVICE_ID_MS_XBOX_ONE_S_CONTROLLER 0x02fd
#define USB_DEVICE_ID_MS_PIXART_MOUSE 0x00cb
#define SPI_DEVICE_ID_MS_SURFACE_D6_0 0x0c1d
#define SPI_DEVICE_ID_MS_SURFACE_D6_1 0x0c42
#define USB_DEVICE_ID_8BITDO_SN30_PRO_PLUS 0x02e0
#define USB_VENDOR_ID_MOJO 0x8282

View File

@ -27,6 +27,7 @@
#define MS_DUPLICATE_USAGES BIT(5)
#define MS_SURFACE_DIAL BIT(6)
#define MS_QUIRK_FF BIT(7)
#define MS_NOHIDINPUT BIT(8)
struct ms_data {
unsigned long quirks;
@ -370,6 +371,7 @@ static int ms_probe(struct hid_device *hdev, const struct hid_device_id *id)
unsigned long quirks = id->driver_data;
struct ms_data *ms;
int ret;
unsigned int connect_mask;
ms = devm_kzalloc(&hdev->dev, sizeof(*ms), GFP_KERNEL);
if (ms == NULL)
@ -379,20 +381,25 @@ static int ms_probe(struct hid_device *hdev, const struct hid_device_id *id)
hid_set_drvdata(hdev, ms);
connect_mask = HID_CONNECT_DEFAULT | ((quirks & MS_HIDINPUT) ?
HID_CONNECT_HIDINPUT_FORCE : 0);
if (quirks & MS_NOGET)
hdev->quirks |= HID_QUIRK_NOGET;
if (quirks & MS_SURFACE_DIAL)
hdev->quirks |= HID_QUIRK_INPUT_PER_APP;
if (quirks & MS_NOHIDINPUT)
connect_mask &= ~HID_CONNECT_HIDINPUT;
ret = hid_parse(hdev);
if (ret) {
hid_err(hdev, "parse failed\n");
goto err_free;
}
ret = hid_hw_start(hdev, HID_CONNECT_DEFAULT | ((quirks & MS_HIDINPUT) ?
HID_CONNECT_HIDINPUT_FORCE : 0));
ret = hid_hw_start(hdev, connect_mask);
if (ret) {
hid_err(hdev, "hw start failed\n");
goto err_free;
@ -451,6 +458,10 @@ static const struct hid_device_id ms_devices[] = {
.driver_data = MS_SURFACE_DIAL },
{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_XBOX_ONE_S_CONTROLLER),
.driver_data = MS_QUIRK_FF },
{ HID_SPI_DEVICE(USB_VENDOR_ID_MICROSOFT, SPI_DEVICE_ID_MS_SURFACE_D6_0),
.driver_data = MS_NOHIDINPUT },
{ HID_SPI_DEVICE(USB_VENDOR_ID_MICROSOFT, SPI_DEVICE_ID_MS_SURFACE_D6_1),
.driver_data = MS_NOHIDINPUT },
{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_8BITDO_SN30_PRO_PLUS),
.driver_data = MS_QUIRK_FF },
{ }

View File

@ -513,6 +513,8 @@ static const struct hid_device_id hid_have_special_driver[] = {
{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_DIGITAL_MEDIA_3KV1) },
{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_POWER_COVER) },
{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_PRESENTER_8K_BT) },
{ HID_SPI_DEVICE(USB_VENDOR_ID_MICROSOFT, SPI_DEVICE_ID_MS_SURFACE_D6_0) },
{ HID_SPI_DEVICE(USB_VENDOR_ID_MICROSOFT, SPI_DEVICE_ID_MS_SURFACE_D6_1) },
#endif
#if IS_ENABLED(CONFIG_HID_MONTEREY)
{ HID_USB_DEVICE(USB_VENDOR_ID_MONTEREY, USB_DEVICE_ID_GENIUS_KB29E) },

View File

@ -681,6 +681,8 @@ struct hid_descriptor {
.bus = BUS_BLUETOOTH, .vendor = (ven), .product = (prod)
#define HID_I2C_DEVICE(ven, prod) \
.bus = BUS_I2C, .vendor = (ven), .product = (prod)
#define HID_SPI_DEVICE(ven, prod) \
.bus = BUS_SPI, .vendor = (ven), .product = (prod)
#define HID_REPORT_ID(rep) \
.report_type = (rep)