diff --git a/android/GKI_VERSION b/android/GKI_VERSION index 549132fdd34b..4499ab5cd0be 100644 --- a/android/GKI_VERSION +++ b/android/GKI_VERSION @@ -1 +1 @@ -LTS_5.4.134_dca02b19eb93 +LTS_5.4.134_2385b6cc59cf diff --git a/android/abi_gki_aarch64_dca02b19eb93.xml b/android/abi_gki_aarch64_2385b6cc59cf.xml similarity index 99% rename from android/abi_gki_aarch64_dca02b19eb93.xml rename to android/abi_gki_aarch64_2385b6cc59cf.xml index 94115dc478df..256539e6e231 100644 --- a/android/abi_gki_aarch64_dca02b19eb93.xml +++ b/android/abi_gki_aarch64_2385b6cc59cf.xml @@ -312,8 +312,10 @@ + + @@ -582,6 +584,8 @@ + + @@ -612,6 +616,7 @@ + @@ -776,12 +781,14 @@ + + @@ -1130,11 +1137,15 @@ + + + + @@ -1184,17 +1195,23 @@ + + + + + + @@ -1781,6 +1798,7 @@ + @@ -2329,6 +2347,7 @@ + @@ -2847,6 +2866,7 @@ + @@ -25497,6 +25517,20 @@ + + + + + + + + + + + + + + @@ -31352,6 +31386,12 @@ + + + + + + @@ -31486,6 +31526,18 @@ + + + + + + + + + + + + @@ -31496,6 +31548,12 @@ + + + + + + @@ -31622,6 +31680,14 @@ + + + + + + + + @@ -31630,6 +31696,7 @@ + @@ -31643,6 +31710,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -31950,6 +32043,8 @@ + + @@ -32490,6 +32585,8 @@ + + @@ -32531,7 +32628,7 @@ - + @@ -32797,7 +32894,7 @@ - + @@ -32819,6 +32916,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -32999,6 +33151,7 @@ + @@ -33011,33 +33164,55 @@ + - + - + - + - - + + + + + + + + + + + - + - + + + + - + - + - + + + + + + + + + + @@ -33152,7 +33327,32 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -33286,7 +33486,29 @@ - + + + + + + + + + + + + + + + + + + + + + + + @@ -33370,11 +33592,17 @@ + + + + + + + + - - @@ -33390,8 +33618,10 @@ + + @@ -33927,8 +34157,6 @@ - - @@ -33985,6 +34213,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -34084,10 +34380,24 @@ - + + + + + + + + + + + + + + + @@ -34169,6 +34479,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -34333,8 +34672,9 @@ - + + @@ -34351,61 +34691,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -34578,9 +34863,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -34591,9 +34910,9 @@ - + + - @@ -34621,7 +34940,48 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -34696,10 +35056,28 @@ - + + + + + + + + + + + + + + + + + + + + - @@ -34713,14 +35091,13 @@ - - - + + @@ -34734,6 +35111,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -34812,6 +35272,8 @@ + + @@ -34820,10 +35282,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -34849,187 +35356,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -35072,7 +35399,7 @@ - + @@ -35129,7 +35456,7 @@ - + @@ -35215,7 +35542,7 @@ - + @@ -35331,7 +35658,7 @@ - + @@ -35346,7 +35673,6 @@ - @@ -35371,218 +35697,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -36048,7 +36162,7 @@ - + @@ -37371,7 +37485,7 @@ - + @@ -38007,7 +38121,7 @@ - + @@ -38034,7 +38148,7 @@ - + @@ -38294,10 +38408,10 @@ - + - + @@ -38323,7 +38437,7 @@ - + @@ -38413,7 +38527,7 @@ - + @@ -38433,7 +38547,7 @@ - + @@ -38984,7 +39098,7 @@ - + @@ -39060,7 +39174,7 @@ - + @@ -39358,7 +39472,7 @@ - + @@ -39387,7 +39501,7 @@ - + @@ -39403,7 +39517,7 @@ - + @@ -39816,7 +39930,7 @@ - + @@ -39824,7 +39938,7 @@ - + @@ -40055,7 +40169,7 @@ - + @@ -40303,7 +40417,7 @@ - + @@ -40377,7 +40491,7 @@ - + @@ -40468,7 +40582,7 @@ - + @@ -43056,7 +43170,7 @@ - + @@ -43380,7 +43494,7 @@ - + @@ -43746,11 +43860,21 @@ + + + + + + + + + + @@ -43772,6 +43896,14 @@ + + + + + + + + @@ -45886,6 +46018,16 @@ + + + + + + + + + + @@ -47318,7 +47460,7 @@ - + @@ -48321,7 +48463,7 @@ - + @@ -48346,7 +48488,7 @@ - + @@ -48365,7 +48507,7 @@ - + @@ -74130,6 +74272,7 @@ + @@ -74192,12 +74335,23 @@ + + + + + + + + + + + @@ -74520,6 +74674,17 @@ + + + + + + + + + + + @@ -74528,6 +74693,11 @@ + + + + + @@ -79919,6 +80089,14 @@ + + + + + + + + @@ -79933,6 +80111,14 @@ + + + + + + + + @@ -79961,14 +80147,6 @@ - - - - - - - - @@ -79995,14 +80173,6 @@ - - - - - - - - @@ -89190,7 +89360,74 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -90004,6 +90241,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -90013,6 +90288,10 @@ + + + + @@ -90133,6 +90412,7 @@ + @@ -90167,14 +90447,107 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -90238,7 +90611,7 @@ - + @@ -90282,7 +90655,7 @@ - + @@ -90541,72 +90914,72 @@ - - + + - - + + - - - + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - - + + + + - - - + + + - - + + - - - - + + + + - - + + - - + + - - + + @@ -93091,7 +93464,7 @@ - + @@ -93102,8 +93475,6 @@ - - @@ -94181,6 +94552,11 @@ + + + + + @@ -129820,19 +130196,19 @@ - - - - + + + + - - - + + + @@ -142456,110 +142832,15 @@ - + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -142762,7 +143043,7 @@ - + @@ -142779,7 +143060,7 @@ - + @@ -142870,7 +143151,7 @@ - + @@ -142881,27 +143162,27 @@ - - + + - + - + - + - + @@ -142909,7 +143190,7 @@ - + @@ -142917,14 +143198,14 @@ - + - + @@ -142932,7 +143213,7 @@ - + @@ -142941,7 +143222,7 @@ - + @@ -142950,84 +143231,16 @@ - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -143069,36 +143282,35 @@ - - + - + - + - + - + - + diff --git a/android/abi_gki_aarch64_qcom b/android/abi_gki_aarch64_qcom index bc845325be2a..9668330586d7 100644 --- a/android/abi_gki_aarch64_qcom +++ b/android/abi_gki_aarch64_qcom @@ -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 @@ -407,6 +410,8 @@ devm_extcon_register_notifier devm_free_irq devm_fwnode_get_index_gpiod_from_child + devm_gpiochip_add_data + devm_gpiod_get devm_gpiod_get_index devm_gpiod_get_optional devm_gpio_request @@ -441,6 +446,7 @@ devm_pinctrl_get devm_pinctrl_put devm_pinctrl_register + devm_pinctrl_register_and_init devm_platform_ioremap_resource devm_power_supply_get_by_phandle devm_power_supply_register @@ -567,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 @@ -585,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 @@ -657,12 +663,14 @@ drm_atomic_state_default_release __drm_atomic_state_free drm_atomic_state_init + drm_bridge_add drm_bridge_attach drm_bridge_disable drm_bridge_enable drm_bridge_mode_set drm_bridge_post_disable drm_bridge_pre_enable + drm_bridge_remove drm_class_device_register drm_class_device_unregister drm_clflush_pages @@ -877,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 @@ -938,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 @@ -1014,11 +1022,15 @@ gnss_register_device gpiochip_add_data_with_key gpiochip_add_pin_range + gpiochip_generic_config gpiochip_generic_free gpiochip_generic_request gpiochip_get_data + gpiochip_irqchip_add_key + gpiochip_line_is_irq gpiochip_line_is_valid gpiochip_remove + gpiochip_set_nested_irqchip gpiod_cansleep gpiod_direction_input gpiod_direction_output @@ -1077,21 +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_transfer i2c_transfer_buffer_flags + i2c_verify_client icc_get icc_link_create icc_node_add @@ -1244,7 +1265,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 @@ -1257,6 +1277,7 @@ irq_set_irq_wake irq_set_parent irq_to_desc + irq_work_queue iterate_dir iterate_fd jiffies @@ -1279,11 +1300,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 @@ -1398,8 +1418,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 @@ -1516,8 +1536,8 @@ nf_conntrack_destroy nla_memcpy __nla_parse - nla_put_64bit nla_put + nla_put_64bit __nlmsg_put no_llseek nonseekable_open @@ -1527,8 +1547,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 @@ -1586,11 +1606,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 @@ -1673,17 +1693,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 @@ -1713,7 +1738,6 @@ pci_walk_bus pci_write_config_dword pci_write_config_word - pci_dev_present PDE_DATA __per_cpu_offset perf_trace_buf_alloc @@ -1740,6 +1764,7 @@ pid_task pinconf_generic_dt_node_to_map pinctrl_dev_get_drvdata + pinctrl_enable pinctrl_force_default pinctrl_force_sleep pinctrl_get @@ -2095,10 +2120,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 @@ -2146,6 +2171,7 @@ sg_alloc_table_from_pages sg_copy_from_buffer sg_copy_to_buffer + sget sg_free_table sg_init_one sg_init_table @@ -2161,7 +2187,6 @@ sg_pcopy_from_buffer sg_pcopy_to_buffer sg_scsi_ioctl - sget shmem_file_setup shmem_read_mapping_page_gfp shmem_truncate_range @@ -2370,6 +2395,7 @@ strcmp strcpy strcspn + stream_open strim string_get_size string_unescape @@ -2779,8 +2805,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 @@ -2895,7 +2921,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 diff --git a/drivers/android/binder.c b/drivers/android/binder.c index 9dccb0fe93e1..e6a91eaebe6a 100644 --- a/drivers/android/binder.c +++ b/drivers/android/binder.c @@ -1981,6 +1981,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) @@ -2140,8 +2141,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: @@ -3222,7 +3231,7 @@ err_bad_parent: 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); @@ -3301,7 +3310,9 @@ err_invalid_target_handle: * 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) { @@ -3329,7 +3340,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); } @@ -3523,7 +3534,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; } @@ -4210,7 +4221,7 @@ retry: 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, diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c index b6740ad773ee..7b020e8c8aef 100644 --- a/drivers/hid/hid-core.c +++ b/drivers/hid/hid-core.c @@ -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; diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h index 872a772981ce..d08b13a55068 100644 --- a/drivers/hid/hid-ids.h +++ b/drivers/hid/hid-ids.h @@ -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 diff --git a/drivers/hid/hid-microsoft.c b/drivers/hid/hid-microsoft.c index 8cb1ca1936e4..e449ee9cc04c 100644 --- a/drivers/hid/hid-microsoft.c +++ b/drivers/hid/hid-microsoft.c @@ -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 }, { } diff --git a/drivers/hid/hid-quirks.c b/drivers/hid/hid-quirks.c index 687094327bbd..786c09ebfdc5 100644 --- a/drivers/hid/hid-quirks.c +++ b/drivers/hid/hid-quirks.c @@ -519,6 +519,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) }, diff --git a/include/linux/hid.h b/include/linux/hid.h index 85e6f80335c9..2c2b26ac11f6 100644 --- a/include/linux/hid.h +++ b/include/linux/hid.h @@ -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)