Merge 1ca91eb817 on remote branch

Change-Id: I12ec90de40066ad84ea782b5365c3483e7c22420
This commit is contained in:
Linux Build Service Account 2021-08-27 00:05:00 -07:00
commit 02b289635f
42 changed files with 4054 additions and 1107 deletions

View file

@ -1 +1 @@
LTS_5.4.86_fe9e8630bfaf
LTS_5.4.86_8eb841225953

View file

@ -760,6 +760,7 @@
<elf-symbol name='cpufreq_update_policy' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0xc37f9c6e'/>
<elf-symbol name='cpuidle_pause_and_lock' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0xf553318d'/>
<elf-symbol name='cpuidle_resume_and_unlock' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0xcabe04de'/>
<elf-symbol name='cpumask_any_but' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x83928ce0'/>
<elf-symbol name='cpumask_next' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x92ad1db9'/>
<elf-symbol name='cpumask_next_and' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x4445ab21'/>
<elf-symbol name='cpumask_next_wrap' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x233eb8eb'/>
@ -1649,6 +1650,8 @@
<elf-symbol name='extcon_register_notifier' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x2893e83f'/>
<elf-symbol name='extcon_set_property' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x7afd901b'/>
<elf-symbol name='extcon_set_property_capability' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0xfa9bd2e'/>
<elf-symbol name='extcon_set_property_sync' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x1fc96198'/>
<elf-symbol name='extcon_set_state' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0xad7074a1'/>
<elf-symbol name='extcon_set_state_sync' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x47aa2099'/>
<elf-symbol name='extcon_unregister_notifier' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x1335a5c1'/>
<elf-symbol name='fasync_helper' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0xbdb98fb3'/>
@ -1705,6 +1708,7 @@
<elf-symbol name='freq_reg_info' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x2651f3a0'/>
<elf-symbol name='fsl8250_handle_irq' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0xccfc0bd8'/>
<elf-symbol name='fsstack_copy_attr_all' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x186fd7fe'/>
<elf-symbol name='ftrace_set_clr_event' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x5f6f6d73'/>
<elf-symbol name='full_name_hash' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0xd6eaaea1'/>
<elf-symbol name='fwnode_connection_find_match' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x9bf696c3'/>
<elf-symbol name='fwnode_device_is_available' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x52dfb848'/>
@ -2615,6 +2619,7 @@
<elf-symbol name='mmc_get_ext_csd' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0xc0f52e40'/>
<elf-symbol name='mmc_gpio_get_cd' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x837e5ed'/>
<elf-symbol name='mmc_gpio_get_ro' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0xec2fd49'/>
<elf-symbol name='mmc_gpio_set_cd_wake' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0xd4703235'/>
<elf-symbol name='mmc_gpiod_request_cd' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x113ee942'/>
<elf-symbol name='mmc_gpiod_request_cd_irq' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x21888bf1'/>
<elf-symbol name='mmc_gpiod_request_ro' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x33dbe717'/>
@ -2647,6 +2652,7 @@
<elf-symbol name='mod_delayed_work_on' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0xc4f47221'/>
<elf-symbol name='mod_node_page_state' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x9fad150f'/>
<elf-symbol name='mod_timer' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x72cd0f7f'/>
<elf-symbol name='mod_timer_pending' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x8148b88e'/>
<elf-symbol name='module_layout' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x1e5b7ab7'/>
<elf-symbol name='module_put' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0xa503ed0d'/>
<elf-symbol name='mount_bdev' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0xb24977d8'/>
@ -2797,6 +2803,7 @@
<elf-symbol name='of_find_node_opts_by_path' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0xb91e827d'/>
<elf-symbol name='of_find_node_with_property' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0xe057bed9'/>
<elf-symbol name='of_find_property' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x3d022de'/>
<elf-symbol name='of_find_spi_device_by_node' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x1ac5072a'/>
<elf-symbol name='of_gen_pool_get' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0xcd714eb'/>
<elf-symbol name='of_genpd_add_provider_onecell' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x838b837e'/>
<elf-symbol name='of_genpd_add_provider_simple' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x4627bcdd'/>
@ -3015,6 +3022,9 @@
<elf-symbol name='perf_event_enable' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x6f63d7f3'/>
<elf-symbol name='perf_event_read_value' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x8b6838af'/>
<elf-symbol name='perf_event_release_kernel' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0xdc777035'/>
<elf-symbol name='perf_pmu_migrate_context' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x8186ea52'/>
<elf-symbol name='perf_pmu_register' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0xa06ada91'/>
<elf-symbol name='perf_pmu_unregister' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x402e22d3'/>
<elf-symbol name='perf_trace_buf_alloc' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0xc4eae733'/>
<elf-symbol name='perf_trace_run_bpf_submit' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0xb821fac8'/>
<elf-symbol name='pfn_valid' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x51e77c97'/>
@ -3649,6 +3659,7 @@
<elf-symbol name='sg_free_table' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x7f5b4fe4'/>
<elf-symbol name='sg_init_one' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0xb320cc0e'/>
<elf-symbol name='sg_init_table' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0xf888ca21'/>
<elf-symbol name='sg_last' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0xc5f7e801'/>
<elf-symbol name='sg_miter_next' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x5d7c4288'/>
<elf-symbol name='sg_miter_skip' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0xb73d55eb'/>
<elf-symbol name='sg_miter_start' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x638e77cb'/>
@ -3753,6 +3764,7 @@
<elf-symbol name='snd_card_disconnect' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x1ec9048'/>
<elf-symbol name='snd_card_free' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0xfd4ce02e'/>
<elf-symbol name='snd_card_new' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0xd70eba2b'/>
<elf-symbol name='snd_card_ref' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0xfca69a67'/>
<elf-symbol name='snd_card_register' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x1992f379'/>
<elf-symbol name='snd_card_rw_proc_new' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0xf7b0c582'/>
<elf-symbol name='snd_component_add' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x9d4a180a'/>
@ -3838,8 +3850,10 @@
<elf-symbol name='snd_soc_card_jack_new' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0xdf28d3f2'/>
<elf-symbol name='snd_soc_component_async_complete' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0xe01a1ea0'/>
<elf-symbol name='snd_soc_component_disable_pin' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0xd0ea5bce'/>
<elf-symbol name='snd_soc_component_enable_pin' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x6864f446'/>
<elf-symbol name='snd_soc_component_exit_regmap' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x2fc8a05'/>
<elf-symbol name='snd_soc_component_force_enable_pin' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x480abc67'/>
<elf-symbol name='snd_soc_component_get_pin_status' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x6de75978'/>
<elf-symbol name='snd_soc_component_init_regmap' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0xa84053c5'/>
<elf-symbol name='snd_soc_component_read' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x14624d'/>
<elf-symbol name='snd_soc_component_read32' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x2f982b6e'/>
@ -3967,13 +3981,13 @@
<elf-symbol name='spi_bus_lock' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x1001acda'/>
<elf-symbol name='spi_bus_unlock' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x4861f1cc'/>
<elf-symbol name='spi_busnum_to_master' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x40920415'/>
<elf-symbol name='spi_set_cs_timing' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0xe80f6172'/>
<elf-symbol name='spi_controller_resume' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x3b6b9b70'/>
<elf-symbol name='spi_controller_suspend' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x9e6ee413'/>
<elf-symbol name='spi_finalize_current_message' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x71c101fd'/>
<elf-symbol name='spi_finalize_current_transfer' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x49f124e2'/>
<elf-symbol name='spi_get_next_queued_message' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x21f556ad'/>
<elf-symbol name='spi_register_controller' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0xbb07ba32'/>
<elf-symbol name='spi_set_cs_timing' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0xe80f6172'/>
<elf-symbol name='spi_setup' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x33edf45a'/>
<elf-symbol name='spi_sync' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x6d8b7b05'/>
<elf-symbol name='spi_sync_locked' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x4ab188af'/>
@ -4118,6 +4132,8 @@
<elf-symbol name='timespec64_to_jiffies' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0xdf93b9d8'/>
<elf-symbol name='touch_buffer' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0xe6ddac7d'/>
<elf-symbol name='touch_softlockup_watchdog' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x6fcb87a1'/>
<elf-symbol name='trace_array_create' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x1326f060'/>
<elf-symbol name='trace_array_destroy' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x124e5006'/>
<elf-symbol name='trace_define_field' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x339751ee'/>
<elf-symbol name='trace_event_buffer_commit' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x61051ca5'/>
<elf-symbol name='trace_event_buffer_reserve' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x6419021e'/>
@ -4210,7 +4226,11 @@
<elf-symbol name='typec_altmode_notify' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x8d3b5c78'/>
<elf-symbol name='typec_altmode_update_active' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x6c691022'/>
<elf-symbol name='typec_altmode_vdm' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x9c15240b'/>
<elf-symbol name='typec_find_port_data_role' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x9049491e'/>
<elf-symbol name='typec_find_port_power_role' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0xeafc1eb8'/>
<elf-symbol name='typec_find_power_role' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x2d1e301d'/>
<elf-symbol name='typec_get_drvdata' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x734a9c4d'/>
<elf-symbol name='typec_match_altmode' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x1953c07'/>
<elf-symbol name='typec_partner_register_altmode' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x5e835147'/>
<elf-symbol name='typec_partner_set_identity' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x493159cc'/>
<elf-symbol name='typec_port_register_altmode' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0xa0991b32'/>
@ -4930,6 +4950,7 @@
<elf-symbol name='spi_bus_type' size='208' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x4ff1556a'/>
<elf-symbol name='static_key_initialized' size='1' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0xbea5ff1e'/>
<elf-symbol name='sys_tz' size='8' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0xfe5d4bb2'/>
<elf-symbol name='system_freezable_power_efficient_wq' size='8' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0xd067d3c5'/>
<elf-symbol name='system_freezable_wq' size='8' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0xd4034828'/>
<elf-symbol name='system_freezing_cnt' size='4' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x7ab88a45'/>
<elf-symbol name='system_highpri_wq' size='8' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0xcd91b127'/>
@ -17791,7 +17812,7 @@
<var-decl name='error_count' type-id='95e97e5e' visibility='default' filepath='include/linux/blkdev.h' line='174' column='1'/>
</data-member>
</union-decl>
<union-decl name='__anonymous_union__18' is-anonymous='yes' visibility='default' filepath='include/linux/blk_types.h' line='186' column='1' id='2a125a28'/>
<union-decl name='__anonymous_union__' is-anonymous='yes' visibility='default' filepath='include/linux/blk_types.h' line='186' column='1' id='2a125a28'/>
<pointer-type-def type-id='002ac4a6' size-in-bits='64' id='cf536864'/>
<array-type-def dimensions='1' type-id='f0981eeb' size-in-bits='128' id='49580a63'>
<subrange length='4' type-id='7ff19f0f' id='16fe7105'/>
@ -20409,7 +20430,7 @@
<var-decl name='pt_frag_refcount' type-id='49178f86' visibility='default' filepath='include/linux/mm_types.h' line='152' column='1'/>
</data-member>
</union-decl>
<union-decl name='__anonymous_union__10' size-in-bits='32' is-anonymous='yes' visibility='default' filepath='arch/arm64/include/asm/uprobes.h' line='25' column='1' id='e021ecb2'>
<union-decl name='__anonymous_union__8' size-in-bits='32' is-anonymous='yes' visibility='default' filepath='arch/arm64/include/asm/uprobes.h' line='25' column='1' id='e021ecb2'>
<data-member access='public'>
<var-decl name='insn' type-id='931565be' visibility='default' filepath='arch/arm64/include/asm/uprobes.h' line='26' column='1'/>
</data-member>
@ -28561,7 +28582,7 @@
<var-decl name='work' type-id='ef9025d0' visibility='default' filepath='mm/slab.h' line='91' column='1'/>
</data-member>
</union-decl>
<union-decl name='__anonymous_union__' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/fsnotify_backend.h' line='298' column='1' id='9114ebb7'>
<union-decl name='__anonymous_union__4' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/fsnotify_backend.h' line='298' column='1' id='9114ebb7'>
<data-member access='public'>
<var-decl name='obj' type-id='c66f5ec5' visibility='default' filepath='include/linux/fsnotify_backend.h' line='300' column='1'/>
</data-member>
@ -30034,7 +30055,7 @@
<var-decl name='val' type-id='e4266c7e' visibility='default' filepath='include/uapi/asm-generic/posix_types.h' line='80' column='1'/>
</data-member>
</class-decl>
<class-decl name='__anonymous_struct__1' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/net/cfg80211.h' line='4820' column='1' id='e1507a22'>
<class-decl name='__anonymous_struct__2' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/net/cfg80211.h' line='4820' column='1' id='e1507a22'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='peer' type-id='91ce1af9' visibility='default' filepath='include/net/cfg80211.h' line='4821' column='1'/>
</data-member>
@ -30244,7 +30265,7 @@
<var-decl name='dev_scratch' type-id='7359adad' visibility='default' filepath='include/linux/skbuff.h' line='704' column='1'/>
</data-member>
</union-decl>
<union-decl name='__anonymous_union__1' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/net/nexthop.h' line='96' column='1' id='21fca59c'>
<union-decl name='__anonymous_union__9' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/net/nexthop.h' line='96' column='1' id='21fca59c'>
<data-member access='public'>
<var-decl name='nh_info' type-id='e55edb2e' visibility='default' filepath='include/net/nexthop.h' line='97' column='1'/>
</data-member>
@ -30953,7 +30974,7 @@
</data-member>
</class-decl>
<class-decl name='xsk_queue' is-struct='yes' visibility='default' is-declaration-only='yes' id='7f424251'/>
<class-decl name='__anonymous_struct__1' size-in-bits='64' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/perf_event.h' line='520' column='1' id='7179013d'>
<class-decl name='__anonymous_struct__' size-in-bits='64' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/perf_event.h' line='520' column='1' id='7179013d'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='cap_bit0' type-id='d3130597' visibility='default' filepath='include/uapi/linux/perf_event.h' line='521' column='1'/>
</data-member>
@ -31970,7 +31991,7 @@
<var-decl name='in6' type-id='f6ed712a' visibility='default' filepath='include/uapi/linux/xfrm.h' line='18' column='1'/>
</data-member>
</union-decl>
<union-decl name='__anonymous_union__9' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/net/cfg80211.h' line='2535' column='1' id='0532d6f6'>
<union-decl name='__anonymous_union__1' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/net/cfg80211.h' line='2535' column='1' id='0532d6f6'>
<data-member access='public'>
<var-decl name='band_pref' type-id='3eaa0294' visibility='default' filepath='include/net/cfg80211.h' line='2536' column='1'/>
</data-member>
@ -32433,7 +32454,7 @@
<var-decl name='xmit' type-id='231269da' visibility='default' filepath='include/net/xfrm.h' line='418' column='1'/>
</data-member>
</class-decl>
<class-decl name='__anonymous_struct__' size-in-bits='96' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/net/cfg80211.h' line='4457' column='1' id='0de9002c'>
<class-decl name='__anonymous_struct__1' size-in-bits='96' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/net/cfg80211.h' line='4457' column='1' id='0de9002c'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='preambles' type-id='19c2251e' visibility='default' filepath='include/net/cfg80211.h' line='4458' column='1'/>
</data-member>
@ -32517,7 +32538,7 @@
<var-decl name='rt_gw6' type-id='f6ed712a' visibility='default' filepath='include/net/route.h' line='64' column='1'/>
</data-member>
</union-decl>
<union-decl name='__anonymous_union__2' size-in-bits='832' is-anonymous='yes' visibility='default' filepath='include/net/nexthop.h' line='56' column='1' id='757a0dbc'>
<union-decl name='__anonymous_union__10' size-in-bits='832' is-anonymous='yes' visibility='default' filepath='include/net/nexthop.h' line='56' column='1' id='757a0dbc'>
<data-member access='public'>
<var-decl name='fib_nhc' type-id='e1f89457' visibility='default' filepath='include/net/nexthop.h' line='57' column='1'/>
</data-member>
@ -67919,6 +67940,12 @@
</union-decl>
<pointer-type-def type-id='103b4c26' size-in-bits='64' id='e07a8e4c'/>
<pointer-type-def type-id='282b2805' size-in-bits='64' id='50842338'/>
<function-decl name='extcon_set_state' mangled-name='extcon_set_state' filepath='drivers/extcon/extcon.c' line='522' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='extcon_set_state'>
<parameter type-id='c0d6fada' name='edev' filepath='drivers/extcon/extcon.c' line='522' column='1'/>
<parameter type-id='f0981eeb' name='id' filepath='drivers/extcon/extcon.c' line='522' column='1'/>
<parameter type-id='b50a4934' name='state' filepath='drivers/extcon/extcon.c' line='522' column='1'/>
<return type-id='95e97e5e'/>
</function-decl>
<function-decl name='extcon_set_state_sync' mangled-name='extcon_set_state_sync' filepath='drivers/extcon/extcon.c' line='577' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='extcon_set_state_sync'>
<parameter type-id='c0d6fada' name='edev' filepath='drivers/extcon/extcon.c' line='577' column='1'/>
<parameter type-id='f0981eeb' name='id' filepath='drivers/extcon/extcon.c' line='577' column='1'/>
@ -67939,6 +67966,13 @@
<parameter type-id='282b2805' name='prop_val' filepath='drivers/extcon/extcon.c' line='696' column='1'/>
<return type-id='95e97e5e'/>
</function-decl>
<function-decl name='extcon_set_property_sync' mangled-name='extcon_set_property_sync' filepath='drivers/extcon/extcon.c' line='759' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='extcon_set_property_sync'>
<parameter type-id='c0d6fada' name='edev' filepath='drivers/extcon/extcon.c' line='759' column='1'/>
<parameter type-id='f0981eeb' name='id' filepath='drivers/extcon/extcon.c' line='759' column='1'/>
<parameter type-id='f0981eeb' name='prop' filepath='drivers/extcon/extcon.c' line='760' column='1'/>
<parameter type-id='282b2805' name='prop_val' filepath='drivers/extcon/extcon.c' line='761' column='1'/>
<return type-id='95e97e5e'/>
</function-decl>
<function-decl name='extcon_set_property_capability' mangled-name='extcon_set_property_capability' filepath='drivers/extcon/extcon.c' line='816' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='extcon_set_property_capability'>
<parameter type-id='c0d6fada' name='edev' filepath='drivers/extcon/extcon.c' line='816' column='1'/>
<parameter type-id='f0981eeb' name='id' filepath='drivers/extcon/extcon.c' line='816' column='1'/>
@ -105576,6 +105610,11 @@
<parameter type-id='dd575c43'/>
<return type-id='48b5725f'/>
</function-decl>
<function-decl name='mmc_gpio_set_cd_wake' mangled-name='mmc_gpio_set_cd_wake' filepath='include/linux/mmc/slot-gpio.h' line='26' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='mmc_gpio_set_cd_wake'>
<parameter type-id='dd575c43'/>
<parameter type-id='c894953d'/>
<return type-id='95e97e5e'/>
</function-decl>
</abi-instr>
<abi-instr address-size='64' path='drivers/mmc/core/crypto.c' language='LANG_C89'>
<class-decl name='mmc_queue_req' size-in-bits='3584' is-struct='yes' visibility='default' filepath='drivers/mmc/core/queue.h' line='64' column='1' id='dfaa0b3f'>
@ -128458,6 +128497,10 @@
<parameter type-id='f22e4524' name='ctlr' filepath='drivers/spi/spi.c' line='2705' column='1'/>
<return type-id='95e97e5e'/>
</function-decl>
<function-decl name='spi_busnum_to_master' mangled-name='spi_busnum_to_master' filepath='drivers/spi/spi.c' line='2741' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='spi_busnum_to_master'>
<parameter type-id='1dc6a898' name='bus_num' filepath='drivers/spi/spi.c' line='2741' column='1'/>
<return type-id='f22e4524'/>
</function-decl>
<function-decl name='spi_set_cs_timing' mangled-name='spi_set_cs_timing' filepath='drivers/spi/spi.c' line='3225' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='spi_set_cs_timing'>
<parameter type-id='e90f4666' name='spi' filepath='drivers/spi/spi.c' line='3225' column='1'/>
<parameter type-id='f9b06939' name='setup' filepath='drivers/spi/spi.c' line='3225' column='1'/>
@ -128465,10 +128508,6 @@
<parameter type-id='f9b06939' name='inactive_dly' filepath='drivers/spi/spi.c' line='3226' column='1'/>
<return type-id='48b5725f'/>
</function-decl>
<function-decl name='spi_busnum_to_master' mangled-name='spi_busnum_to_master' filepath='drivers/spi/spi.c' line='2741' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='spi_busnum_to_master'>
<parameter type-id='1dc6a898' name='bus_num' filepath='drivers/spi/spi.c' line='2741' column='1'/>
<return type-id='f22e4524'/>
</function-decl>
<function-decl name='spi_sync_locked' mangled-name='spi_sync_locked' filepath='drivers/spi/spi.c' line='3619' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='spi_sync_locked'>
<parameter type-id='e90f4666' name='spi' filepath='drivers/spi/spi.c' line='3619' column='1'/>
<parameter type-id='bb7889ed' name='message' filepath='drivers/spi/spi.c' line='3619' column='1'/>
@ -128482,6 +128521,10 @@
<parameter type-id='f22e4524' name='ctlr' filepath='drivers/spi/spi.c' line='3669' column='1'/>
<return type-id='95e97e5e'/>
</function-decl>
<function-decl name='of_find_spi_device_by_node' mangled-name='of_find_spi_device_by_node' filepath='drivers/spi/spi.c' line='3763' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='of_find_spi_device_by_node'>
<parameter type-id='9a537bbe' name='node' filepath='drivers/spi/spi.c' line='3763' column='1'/>
<return type-id='e90f4666'/>
</function-decl>
<function-type size-in-bits='64' id='1c210187'>
<parameter type-id='33dc3b1b'/>
<return type-id='80f4b756'/>
@ -140287,6 +140330,7 @@
<abi-instr address-size='64' path='drivers/usb/typec/bus.c' language='LANG_C89'>
<qualified-type-def type-id='17a13961' const='yes' id='2974aa72'/>
<pointer-type-def type-id='2974aa72' size-in-bits='64' id='9aa82888'/>
<pointer-type-def type-id='02913b69' size-in-bits='64' id='4da04a79'/>
<function-decl name='typec_altmode_notify' mangled-name='typec_altmode_notify' filepath='drivers/usb/typec/bus.c' line='51' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='typec_altmode_notify'>
<parameter type-id='02913b69' name='adev' filepath='drivers/usb/typec/bus.c' line='51' column='1'/>
<parameter type-id='7359adad' name='conf' filepath='drivers/usb/typec/bus.c' line='52' column='1'/>
@ -140309,6 +140353,13 @@
<parameter type-id='02913b69' name='adev' filepath='drivers/usb/typec/bus.c' line='193' column='1'/>
<return type-id='9aa82888'/>
</function-decl>
<function-decl name='typec_match_altmode' mangled-name='typec_match_altmode' filepath='drivers/usb/typec/bus.c' line='270' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='typec_match_altmode'>
<parameter type-id='4da04a79' name='altmodes' filepath='drivers/usb/typec/bus.c' line='270' column='1'/>
<parameter type-id='b59d7dce' name='n' filepath='drivers/usb/typec/bus.c' line='271' column='1'/>
<parameter type-id='1dc6a898' name='svid' filepath='drivers/usb/typec/bus.c' line='271' column='1'/>
<parameter type-id='f9b06939' name='mode' filepath='drivers/usb/typec/bus.c' line='271' column='1'/>
<return type-id='02913b69'/>
</function-decl>
<class-decl name='typec_altmode' size-in-bits='7616' is-struct='yes' visibility='default' filepath='include/linux/usb/typec_altmode.h' line='24' column='1' id='17a13961'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='dev' type-id='66e487eb' visibility='default' filepath='include/linux/usb/typec_altmode.h' line='25' column='1'/>
@ -140715,6 +140766,18 @@
<parameter type-id='44ea1984' name='opmode' filepath='drivers/usb/typec/class.c' line='1368' column='1'/>
<return type-id='48b5725f'/>
</function-decl>
<function-decl name='typec_find_port_power_role' mangled-name='typec_find_port_power_role' filepath='drivers/usb/typec/class.c' line='1401' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='typec_find_port_power_role'>
<parameter type-id='80f4b756' name='name' filepath='drivers/usb/typec/class.c' line='1401' column='1'/>
<return type-id='95e97e5e'/>
</function-decl>
<function-decl name='typec_find_power_role' mangled-name='typec_find_power_role' filepath='drivers/usb/typec/class.c' line='1416' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='typec_find_power_role'>
<parameter type-id='80f4b756' name='name' filepath='drivers/usb/typec/class.c' line='1416' column='1'/>
<return type-id='95e97e5e'/>
</function-decl>
<function-decl name='typec_find_port_data_role' mangled-name='typec_find_port_data_role' filepath='drivers/usb/typec/class.c' line='1430' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='typec_find_port_data_role'>
<parameter type-id='80f4b756' name='name' filepath='drivers/usb/typec/class.c' line='1430' column='1'/>
<return type-id='95e97e5e'/>
</function-decl>
<function-decl name='typec_set_orientation' mangled-name='typec_set_orientation' filepath='drivers/usb/typec/class.c' line='1447' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='typec_set_orientation'>
<parameter type-id='b977ca56' name='port' filepath='drivers/usb/typec/class.c' line='1447' column='1'/>
<parameter type-id='131b0a9c' name='orientation' filepath='drivers/usb/typec/class.c' line='1448' column='1'/>
@ -148310,7 +148373,7 @@
<var-decl name='' type-id='7179013d' visibility='default' filepath='include/uapi/linux/perf_event.h' line='520' column='1'/>
</data-member>
</union-decl>
<class-decl name='__anonymous_struct__1' size-in-bits='64' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/perf_event.h' line='520' column='1' id='7179013d'>
<class-decl name='__anonymous_struct__' size-in-bits='64' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/perf_event.h' line='520' column='1' id='7179013d'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='cap_bit0' type-id='d3130597' visibility='default' filepath='include/uapi/linux/perf_event.h' line='521' column='1'/>
</data-member>
@ -148331,6 +148394,12 @@
</data-member>
</class-decl>
<pointer-type-def type-id='a752caf1' size-in-bits='64' id='4b860c99'/>
<function-decl name='perf_pmu_register' mangled-name='perf_pmu_register' filepath='kernel/events/core.c' line='10080' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='perf_pmu_register'>
<parameter type-id='0906f5b9' name='pmu' filepath='kernel/events/core.c' line='10080' column='1'/>
<parameter type-id='80f4b756' name='name' filepath='kernel/events/core.c' line='10080' column='1'/>
<parameter type-id='95e97e5e' name='type' filepath='kernel/events/core.c' line='10080' column='1'/>
<return type-id='95e97e5e'/>
</function-decl>
<function-decl name='perf_event_disable' mangled-name='perf_event_disable' filepath='kernel/events/core.c' line='2281' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='perf_event_disable'>
<parameter type-id='2bf16f59' name='event' filepath='kernel/events/core.c' line='2281' column='1'/>
<return type-id='48b5725f'/>
@ -148345,6 +148414,16 @@
<parameter type-id='3df9fd28' name='running' filepath='kernel/events/core.c' line='4836' column='1'/>
<return type-id='91ce1af9'/>
</function-decl>
<function-decl name='perf_pmu_unregister' mangled-name='perf_pmu_unregister' filepath='kernel/events/core.c' line='10199' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='perf_pmu_unregister'>
<parameter type-id='0906f5b9' name='pmu' filepath='kernel/events/core.c' line='10199' column='1'/>
<return type-id='48b5725f'/>
</function-decl>
<function-decl name='perf_pmu_migrate_context' mangled-name='perf_pmu_migrate_context' filepath='kernel/events/core.c' line='11470' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='perf_pmu_migrate_context'>
<parameter type-id='0906f5b9' name='pmu' filepath='kernel/events/core.c' line='11470' column='1'/>
<parameter type-id='95e97e5e' name='src_cpu' filepath='kernel/events/core.c' line='11470' column='1'/>
<parameter type-id='95e97e5e' name='dst_cpu' filepath='kernel/events/core.c' line='11470' column='1'/>
<return type-id='48b5725f'/>
</function-decl>
<function-decl name='bus_register' mangled-name='bus_register' filepath='include/linux/device.h' line='163' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='bus_register'>
<parameter type-id='5e2671f8'/>
<return type-id='95e97e5e'/>
@ -148466,7 +148545,7 @@
<var-decl name='simulate' type-id='b50a4934' visibility='default' filepath='arch/arm64/include/asm/uprobes.h' line='30' column='1'/>
</data-member>
</class-decl>
<union-decl name='__anonymous_union__10' size-in-bits='32' is-anonymous='yes' visibility='default' filepath='arch/arm64/include/asm/uprobes.h' line='25' column='1' id='e021ecb2'>
<union-decl name='__anonymous_union__8' size-in-bits='32' is-anonymous='yes' visibility='default' filepath='arch/arm64/include/asm/uprobes.h' line='25' column='1' id='e021ecb2'>
<data-member access='public'>
<var-decl name='insn' type-id='931565be' visibility='default' filepath='arch/arm64/include/asm/uprobes.h' line='26' column='1'/>
</data-member>
@ -148787,6 +148866,13 @@
<return type-id='95e97e5e'/>
</function-decl>
</abi-instr>
<abi-instr address-size='64' path='kernel/irq/cpuhotplug.c' language='LANG_C89'>
<function-decl name='cpumask_any_but' mangled-name='cpumask_any_but' filepath='include/linux/cpumask.h' line='246' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='cpumask_any_but'>
<parameter type-id='5f8a1ac4'/>
<parameter type-id='f0981eeb'/>
<return type-id='95e97e5e'/>
</function-decl>
</abi-instr>
<abi-instr address-size='64' path='kernel/irq/devres.c' language='LANG_C89'>
<function-decl name='__devm_irq_alloc_descs' mangled-name='__devm_irq_alloc_descs' filepath='kernel/irq/devres.c' line='178' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='__devm_irq_alloc_descs'>
<parameter type-id='fa0b179b' name='dev' filepath='kernel/irq/devres.c' line='178' column='1'/>
@ -163003,78 +163089,6 @@
</function-decl>
</abi-instr>
<abi-instr address-size='64' path='kernel/trace/trace.c' language='LANG_C89'>
<function-decl name='__trace_puts' mangled-name='__trace_puts' filepath='kernel/trace/trace.c' line='834' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='__trace_puts'>
<parameter type-id='7359adad' name='ip' filepath='kernel/trace/trace.c' line='834' column='1'/>
<parameter type-id='80f4b756' name='str' filepath='kernel/trace/trace.c' line='834' column='1'/>
<parameter type-id='95e97e5e' name='size' filepath='kernel/trace/trace.c' line='834' column='1'/>
<return type-id='95e97e5e'/>
</function-decl>
<function-decl name='seq_lseek' mangled-name='seq_lseek' filepath='include/linux/seq_file.h' line='111' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='seq_lseek'>
<parameter type-id='77e79a4b'/>
<parameter type-id='1eb56b1e'/>
<parameter type-id='95e97e5e'/>
<return type-id='1eb56b1e'/>
</function-decl>
<function-decl name='match_string' mangled-name='match_string' filepath='include/linux/string.h' line='198' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='match_string'>
<parameter type-id='13956559'/>
<parameter type-id='7359adad'/>
<parameter type-id='80f4b756'/>
<return type-id='95e97e5e'/>
</function-decl>
<function-decl name='kstrtoul_from_user' mangled-name='kstrtoul_from_user' filepath='include/linux/kernel.h' line='434' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='kstrtoul_from_user'>
<parameter type-id='80f4b756'/>
<parameter type-id='7359adad'/>
<parameter type-id='f0981eeb'/>
<parameter type-id='1d2c2b85'/>
<return type-id='95e97e5e'/>
</function-decl>
<function-decl name='seq_release' mangled-name='seq_release' filepath='include/linux/seq_file.h' line='112' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='seq_release'>
<parameter type-id='7e666abe'/>
<parameter type-id='77e79a4b'/>
<return type-id='95e97e5e'/>
</function-decl>
<function-decl name='seq_release_private' mangled-name='seq_release_private' filepath='include/linux/seq_file.h' line='147' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='seq_release_private'>
<parameter type-id='7e666abe'/>
<parameter type-id='77e79a4b'/>
<return type-id='95e97e5e'/>
</function-decl>
</abi-instr>
<abi-instr address-size='64' path='kernel/trace/trace_events.c' language='LANG_C89'>
<function-decl name='trace_event_raw_init' mangled-name='trace_event_raw_init' filepath='kernel/trace/trace_events.c' line='218' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='trace_event_raw_init'>
<parameter type-id='23d6768c' name='call' filepath='kernel/trace/trace_events.c' line='218' column='1'/>
<return type-id='95e97e5e'/>
</function-decl>
<function-decl name='trace_event_reg' mangled-name='trace_event_reg' filepath='kernel/trace/trace_events.c' line='280' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='trace_event_reg'>
<parameter type-id='23d6768c' name='call' filepath='kernel/trace/trace_events.c' line='280' column='1'/>
<parameter type-id='7fa6eeb8' name='type' filepath='kernel/trace/trace_events.c' line='281' column='1'/>
<parameter type-id='eaa32e2f' name='data' filepath='kernel/trace/trace_events.c' line='281' column='1'/>
<return type-id='95e97e5e'/>
</function-decl>
<function-decl name='trace_set_clr_event' mangled-name='trace_set_clr_event' filepath='kernel/trace/trace_events.c' line='844' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='trace_set_clr_event'>
<parameter type-id='80f4b756' name='system' filepath='kernel/trace/trace_events.c' line='844' column='1'/>
<parameter type-id='80f4b756' name='event' filepath='kernel/trace/trace_events.c' line='844' column='1'/>
<parameter type-id='95e97e5e' name='set' filepath='kernel/trace/trace_events.c' line='844' column='1'/>
<return type-id='95e97e5e'/>
</function-decl>
<function-decl name='kfree_const' mangled-name='kfree_const' filepath='include/linux/string.h' line='180' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='kfree_const'>
<parameter type-id='eaa32e2f'/>
<return type-id='48b5725f'/>
</function-decl>
<function-decl name='kstrdup_const' mangled-name='kstrdup_const' filepath='include/linux/string.h' line='183' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='kstrdup_const'>
<parameter type-id='80f4b756'/>
<parameter type-id='f0981eeb'/>
<return type-id='80f4b756'/>
</function-decl>
</abi-instr>
<abi-instr address-size='64' path='kernel/trace/trace_events_filter.c' language='LANG_C89'>
<function-decl name='kmemdup_nul' mangled-name='kmemdup_nul' filepath='include/linux/string.h' line='186' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='kmemdup_nul'>
<parameter type-id='80f4b756'/>
<parameter type-id='7359adad'/>
<parameter type-id='f0981eeb'/>
<return type-id='26a90f95'/>
</function-decl>
</abi-instr>
<abi-instr address-size='64' path='kernel/trace/trace_output.c' language='LANG_C89'>
<class-decl name='prog_entry' is-struct='yes' visibility='default' is-declaration-only='yes' id='da952956'/>
<class-decl name='trace_array_cpu' size-in-bits='1024' is-struct='yes' visibility='default' filepath='kernel/trace/trace.h' line='149' column='1' id='adff6731'>
<data-member access='public' layout-offset-in-bits='0'>
@ -163206,25 +163220,47 @@
<pointer-type-def type-id='3dbb7e50' size-in-bits='64' id='0f294852'/>
<pointer-type-def type-id='c64b743f' size-in-bits='64' id='578c706b'/>
<pointer-type-def type-id='b44140ca' size-in-bits='64' id='29bf40b4'/>
<function-decl name='trace_print_hex_seq' mangled-name='trace_print_hex_seq' filepath='kernel/trace/trace_output.c' line='217' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='trace_print_hex_seq'>
<parameter type-id='fc932690' name='p' filepath='kernel/trace/trace_output.c' line='217' column='1'/>
<parameter type-id='354f7eb9' name='buf' filepath='kernel/trace/trace_output.c' line='217' column='1'/>
<parameter type-id='95e97e5e' name='buf_len' filepath='kernel/trace/trace_output.c' line='217' column='1'/>
<parameter type-id='b50a4934' name='concatenate' filepath='kernel/trace/trace_output.c' line='218' column='1'/>
<return type-id='80f4b756'/>
<function-decl name='__trace_puts' mangled-name='__trace_puts' filepath='kernel/trace/trace.c' line='834' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='__trace_puts'>
<parameter type-id='7359adad' name='ip' filepath='kernel/trace/trace.c' line='834' column='1'/>
<parameter type-id='80f4b756' name='str' filepath='kernel/trace/trace.c' line='834' column='1'/>
<parameter type-id='95e97e5e' name='size' filepath='kernel/trace/trace.c' line='834' column='1'/>
<return type-id='95e97e5e'/>
</function-decl>
<function-decl name='trace_print_array_seq' mangled-name='trace_print_array_seq' filepath='kernel/trace/trace_output.c' line='233' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='trace_print_array_seq'>
<parameter type-id='fc932690' name='p' filepath='kernel/trace/trace_output.c' line='233' column='1'/>
<parameter type-id='eaa32e2f' name='buf' filepath='kernel/trace/trace_output.c' line='233' column='1'/>
<parameter type-id='95e97e5e' name='count' filepath='kernel/trace/trace_output.c' line='233' column='1'/>
<parameter type-id='b59d7dce' name='el_size' filepath='kernel/trace/trace_output.c' line='234' column='1'/>
<return type-id='80f4b756'/>
<function-decl name='seq_lseek' mangled-name='seq_lseek' filepath='include/linux/seq_file.h' line='111' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='seq_lseek'>
<parameter type-id='77e79a4b'/>
<parameter type-id='1eb56b1e'/>
<parameter type-id='95e97e5e'/>
<return type-id='1eb56b1e'/>
</function-decl>
<function-decl name='trace_output_call' mangled-name='trace_output_call' filepath='kernel/trace/trace_output.c' line='311' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='trace_output_call'>
<parameter type-id='18881289' name='iter' filepath='kernel/trace/trace_output.c' line='311' column='1'/>
<parameter type-id='26a90f95' name='name' filepath='kernel/trace/trace_output.c' line='311' column='1'/>
<parameter type-id='26a90f95' name='fmt' filepath='kernel/trace/trace_output.c' line='311' column='1'/>
<parameter is-variadic='yes'/>
<function-decl name='trace_array_create' mangled-name='trace_array_create' filepath='kernel/trace/trace.c' line='8389' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='trace_array_create'>
<parameter type-id='80f4b756' name='name' filepath='kernel/trace/trace.c' line='8389' column='1'/>
<return type-id='898c1076'/>
</function-decl>
<function-decl name='trace_array_destroy' mangled-name='trace_array_destroy' filepath='kernel/trace/trace.c' line='8511' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='trace_array_destroy'>
<parameter type-id='898c1076' name='this_tr' filepath='kernel/trace/trace.c' line='8511' column='1'/>
<return type-id='95e97e5e'/>
</function-decl>
<function-decl name='match_string' mangled-name='match_string' filepath='include/linux/string.h' line='198' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='match_string'>
<parameter type-id='13956559'/>
<parameter type-id='7359adad'/>
<parameter type-id='80f4b756'/>
<return type-id='95e97e5e'/>
</function-decl>
<function-decl name='kstrtoul_from_user' mangled-name='kstrtoul_from_user' filepath='include/linux/kernel.h' line='434' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='kstrtoul_from_user'>
<parameter type-id='80f4b756'/>
<parameter type-id='7359adad'/>
<parameter type-id='f0981eeb'/>
<parameter type-id='1d2c2b85'/>
<return type-id='95e97e5e'/>
</function-decl>
<function-decl name='seq_release' mangled-name='seq_release' filepath='include/linux/seq_file.h' line='112' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='seq_release'>
<parameter type-id='7e666abe'/>
<parameter type-id='77e79a4b'/>
<return type-id='95e97e5e'/>
</function-decl>
<function-decl name='seq_release_private' mangled-name='seq_release_private' filepath='include/linux/seq_file.h' line='147' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='seq_release_private'>
<parameter type-id='7e666abe'/>
<parameter type-id='77e79a4b'/>
<return type-id='95e97e5e'/>
</function-decl>
<function-type size-in-bits='64' id='94dd3300'>
@ -163278,6 +163314,70 @@
<return type-id='48b5725f'/>
</function-type>
</abi-instr>
<abi-instr address-size='64' path='kernel/trace/trace_events.c' language='LANG_C89'>
<function-decl name='trace_event_raw_init' mangled-name='trace_event_raw_init' filepath='kernel/trace/trace_events.c' line='218' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='trace_event_raw_init'>
<parameter type-id='23d6768c' name='call' filepath='kernel/trace/trace_events.c' line='218' column='1'/>
<return type-id='95e97e5e'/>
</function-decl>
<function-decl name='trace_event_reg' mangled-name='trace_event_reg' filepath='kernel/trace/trace_events.c' line='280' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='trace_event_reg'>
<parameter type-id='23d6768c' name='call' filepath='kernel/trace/trace_events.c' line='280' column='1'/>
<parameter type-id='7fa6eeb8' name='type' filepath='kernel/trace/trace_events.c' line='281' column='1'/>
<parameter type-id='eaa32e2f' name='data' filepath='kernel/trace/trace_events.c' line='281' column='1'/>
<return type-id='95e97e5e'/>
</function-decl>
<function-decl name='ftrace_set_clr_event' mangled-name='ftrace_set_clr_event' filepath='kernel/trace/trace_events.c' line='791' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='ftrace_set_clr_event'>
<parameter type-id='898c1076' name='tr' filepath='kernel/trace/trace_events.c' line='791' column='1'/>
<parameter type-id='26a90f95' name='buf' filepath='kernel/trace/trace_events.c' line='791' column='1'/>
<parameter type-id='95e97e5e' name='set' filepath='kernel/trace/trace_events.c' line='791' column='1'/>
<return type-id='95e97e5e'/>
</function-decl>
<function-decl name='trace_set_clr_event' mangled-name='trace_set_clr_event' filepath='kernel/trace/trace_events.c' line='844' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='trace_set_clr_event'>
<parameter type-id='80f4b756' name='system' filepath='kernel/trace/trace_events.c' line='844' column='1'/>
<parameter type-id='80f4b756' name='event' filepath='kernel/trace/trace_events.c' line='844' column='1'/>
<parameter type-id='95e97e5e' name='set' filepath='kernel/trace/trace_events.c' line='844' column='1'/>
<return type-id='95e97e5e'/>
</function-decl>
<function-decl name='kfree_const' mangled-name='kfree_const' filepath='include/linux/string.h' line='180' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='kfree_const'>
<parameter type-id='eaa32e2f'/>
<return type-id='48b5725f'/>
</function-decl>
<function-decl name='kstrdup_const' mangled-name='kstrdup_const' filepath='include/linux/string.h' line='183' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='kstrdup_const'>
<parameter type-id='80f4b756'/>
<parameter type-id='f0981eeb'/>
<return type-id='80f4b756'/>
</function-decl>
</abi-instr>
<abi-instr address-size='64' path='kernel/trace/trace_events_filter.c' language='LANG_C89'>
<function-decl name='kmemdup_nul' mangled-name='kmemdup_nul' filepath='include/linux/string.h' line='186' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='kmemdup_nul'>
<parameter type-id='80f4b756'/>
<parameter type-id='7359adad'/>
<parameter type-id='f0981eeb'/>
<return type-id='26a90f95'/>
</function-decl>
</abi-instr>
<abi-instr address-size='64' path='kernel/trace/trace_output.c' language='LANG_C89'>
<function-decl name='trace_print_hex_seq' mangled-name='trace_print_hex_seq' filepath='kernel/trace/trace_output.c' line='217' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='trace_print_hex_seq'>
<parameter type-id='fc932690' name='p' filepath='kernel/trace/trace_output.c' line='217' column='1'/>
<parameter type-id='354f7eb9' name='buf' filepath='kernel/trace/trace_output.c' line='217' column='1'/>
<parameter type-id='95e97e5e' name='buf_len' filepath='kernel/trace/trace_output.c' line='217' column='1'/>
<parameter type-id='b50a4934' name='concatenate' filepath='kernel/trace/trace_output.c' line='218' column='1'/>
<return type-id='80f4b756'/>
</function-decl>
<function-decl name='trace_print_array_seq' mangled-name='trace_print_array_seq' filepath='kernel/trace/trace_output.c' line='233' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='trace_print_array_seq'>
<parameter type-id='fc932690' name='p' filepath='kernel/trace/trace_output.c' line='233' column='1'/>
<parameter type-id='eaa32e2f' name='buf' filepath='kernel/trace/trace_output.c' line='233' column='1'/>
<parameter type-id='95e97e5e' name='count' filepath='kernel/trace/trace_output.c' line='233' column='1'/>
<parameter type-id='b59d7dce' name='el_size' filepath='kernel/trace/trace_output.c' line='234' column='1'/>
<return type-id='80f4b756'/>
</function-decl>
<function-decl name='trace_output_call' mangled-name='trace_output_call' filepath='kernel/trace/trace_output.c' line='311' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='trace_output_call'>
<parameter type-id='18881289' name='iter' filepath='kernel/trace/trace_output.c' line='311' column='1'/>
<parameter type-id='26a90f95' name='name' filepath='kernel/trace/trace_output.c' line='311' column='1'/>
<parameter type-id='26a90f95' name='fmt' filepath='kernel/trace/trace_output.c' line='311' column='1'/>
<parameter is-variadic='yes'/>
<return type-id='95e97e5e'/>
</function-decl>
</abi-instr>
<abi-instr address-size='64' path='kernel/trace/trace_printk.c' language='LANG_C89'>
<function-decl name='__trace_bprintk' mangled-name='__trace_bprintk' filepath='kernel/trace/trace_printk.c' line='200' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='__trace_bprintk'>
<parameter type-id='7359adad' name='ip' filepath='kernel/trace/trace_printk.c' line='200' column='1'/>
@ -163581,6 +163681,7 @@
<var-decl name='system_unbound_wq' type-id='242e3d19' mangled-name='system_unbound_wq' visibility='default' filepath='kernel/workqueue.c' line='351' column='1' elf-symbol-id='system_unbound_wq'/>
<var-decl name='system_freezable_wq' type-id='242e3d19' mangled-name='system_freezable_wq' visibility='default' filepath='kernel/workqueue.c' line='353' column='1' elf-symbol-id='system_freezable_wq'/>
<var-decl name='system_power_efficient_wq' type-id='242e3d19' mangled-name='system_power_efficient_wq' visibility='default' filepath='kernel/workqueue.c' line='355' column='1' elf-symbol-id='system_power_efficient_wq'/>
<var-decl name='system_freezable_power_efficient_wq' type-id='242e3d19' mangled-name='system_freezable_power_efficient_wq' visibility='default' filepath='kernel/workqueue.c' line='357' column='1' elf-symbol-id='system_freezable_power_efficient_wq'/>
<function-decl name='delayed_work_timer_fn' mangled-name='delayed_work_timer_fn' filepath='kernel/workqueue.c' line='1620' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='delayed_work_timer_fn'>
<parameter type-id='9248e67f' name='t' filepath='kernel/workqueue.c' line='1620' column='1'/>
<return type-id='48b5725f'/>
@ -164375,6 +164476,11 @@
<typedef-decl name='off_t' type-id='8dda407a' filepath='include/linux/types.h' line='21' column='1' id='ad707ada'/>
<typedef-decl name='__kernel_off_t' type-id='6a11bd61' filepath='include/uapi/asm-generic/posix_types.h' line='87' column='1' id='8dda407a'/>
<pointer-type-def type-id='78e3e1d2' size-in-bits='64' id='06f723f0'/>
<function-decl name='sg_last' mangled-name='sg_last' filepath='lib/scatterlist.c' line='101' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sg_last'>
<parameter type-id='bf3ef905' name='sgl' filepath='lib/scatterlist.c' line='101' column='1'/>
<parameter type-id='f0981eeb' name='nents' filepath='lib/scatterlist.c' line='101' column='1'/>
<return type-id='bf3ef905'/>
</function-decl>
<function-decl name='__sg_alloc_table_from_pages' mangled-name='__sg_alloc_table_from_pages' filepath='lib/scatterlist.c' line='389' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='__sg_alloc_table_from_pages'>
<parameter type-id='4adb0e6a' name='sgt' filepath='lib/scatterlist.c' line='389' column='1'/>
<parameter type-id='9f93c9da' name='pages' filepath='lib/scatterlist.c' line='389' column='1'/>
@ -167658,7 +167764,7 @@
<var-decl name='mmp' type-id='0009269e' visibility='default' filepath='include/linux/skbuff.h' line='482' column='1'/>
</data-member>
</class-decl>
<union-decl name='__anonymous_union__2' size-in-bits='128' is-anonymous='yes' visibility='default' filepath='include/linux/skbuff.h' line='465' column='1' id='a27049de'>
<union-decl name='__anonymous_union__15' size-in-bits='128' is-anonymous='yes' visibility='default' filepath='include/linux/skbuff.h' line='465' column='1' id='a27049de'>
<data-member access='public'>
<var-decl name='' type-id='3ee84947' visibility='default' filepath='include/linux/skbuff.h' line='466' column='1'/>
</data-member>
@ -167666,7 +167772,7 @@
<var-decl name='' type-id='0efb3709' visibility='default' filepath='include/linux/skbuff.h' line='470' column='1'/>
</data-member>
</union-decl>
<class-decl name='__anonymous_struct__3' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/linux/skbuff.h' line='466' column='1' id='3ee84947'>
<class-decl name='__anonymous_struct__6' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/linux/skbuff.h' line='466' column='1' id='3ee84947'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='desc' type-id='7359adad' visibility='default' filepath='include/linux/skbuff.h' line='467' column='1'/>
</data-member>
@ -167674,7 +167780,7 @@
<var-decl name='ctx' type-id='eaa32e2f' visibility='default' filepath='include/linux/skbuff.h' line='468' column='1'/>
</data-member>
</class-decl>
<class-decl name='__anonymous_struct__4' size-in-bits='96' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/linux/skbuff.h' line='470' column='1' id='0efb3709'>
<class-decl name='__anonymous_struct__7' size-in-bits='96' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/linux/skbuff.h' line='470' column='1' id='0efb3709'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='id' type-id='19c2251e' visibility='default' filepath='include/linux/skbuff.h' line='471' column='1'/>
</data-member>
@ -174030,7 +174136,7 @@
<var-decl name='max_flows' type-id='19c2251e' visibility='default' filepath='include/net/cfg80211.h' line='1458' column='1'/>
</data-member>
</class-decl>
<class-decl name='__anonymous_struct__2' size-in-bits='288' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/net/cfg80211.h' line='1010' column='1' id='5b11c736'>
<class-decl name='__anonymous_struct__3' size-in-bits='288' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/net/cfg80211.h' line='1010' column='1' id='5b11c736'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='legacy' type-id='19c2251e' visibility='default' filepath='include/net/cfg80211.h' line='1011' column='1'/>
</data-member>
@ -175913,6 +176019,11 @@
<parameter type-id='0817f042'/>
<return type-id='7359adad'/>
</function-decl>
<function-decl name='mod_timer_pending' mangled-name='mod_timer_pending' filepath='include/linux/timer.h' line='177' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='mod_timer_pending'>
<parameter type-id='9248e67f'/>
<parameter type-id='7359adad'/>
<return type-id='95e97e5e'/>
</function-decl>
<function-decl name='sysfs_notify' mangled-name='sysfs_notify' filepath='include/linux/sysfs.h' line='304' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sysfs_notify'>
<parameter type-id='d30bdc51'/>
<parameter type-id='80f4b756'/>
@ -178796,7 +178907,7 @@
<var-decl name='ftm' type-id='0de9002c' visibility='default' filepath='include/net/cfg80211.h' line='4467' column='1'/>
</data-member>
</class-decl>
<class-decl name='__anonymous_struct__' size-in-bits='96' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/net/cfg80211.h' line='4457' column='1' id='0de9002c'>
<class-decl name='__anonymous_struct__1' size-in-bits='96' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/net/cfg80211.h' line='4457' column='1' id='0de9002c'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='preambles' type-id='19c2251e' visibility='default' filepath='include/net/cfg80211.h' line='4458' column='1'/>
</data-member>
@ -178825,7 +178936,7 @@
<var-decl name='request_civicloc' type-id='f9b06939' visibility='default' filepath='include/net/cfg80211.h' line='4466' column='1'/>
</data-member>
</class-decl>
<class-decl name='__anonymous_struct__1' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/net/cfg80211.h' line='4820' column='1' id='e1507a22'>
<class-decl name='__anonymous_struct__2' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/net/cfg80211.h' line='4820' column='1' id='e1507a22'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='peer' type-id='91ce1af9' visibility='default' filepath='include/net/cfg80211.h' line='4821' column='1'/>
</data-member>
@ -179417,7 +179528,7 @@
<var-decl name='control' type-id='b7cdf389' visibility='default' filepath='include/net/cfg80211.h' line='1015' column='1'/>
</data-member>
</class-decl>
<class-decl name='__anonymous_struct__2' size-in-bits='288' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/net/cfg80211.h' line='1010' column='1' id='5b11c736'>
<class-decl name='__anonymous_struct__3' size-in-bits='288' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/net/cfg80211.h' line='1010' column='1' id='5b11c736'>
<data-member access='public' layout-offset-in-bits='0'>
<var-decl name='legacy' type-id='19c2251e' visibility='default' filepath='include/net/cfg80211.h' line='1011' column='1'/>
</data-member>
@ -180377,7 +180488,7 @@
<enumerator name='__NL80211_BSS_SELECT_ATTR_AFTER_LAST' value='4'/>
<enumerator name='NL80211_BSS_SELECT_ATTR_MAX' value='3'/>
</enum-decl>
<union-decl name='__anonymous_union__9' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/net/cfg80211.h' line='2535' column='1' id='0532d6f6'>
<union-decl name='__anonymous_union__1' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/net/cfg80211.h' line='2535' column='1' id='0532d6f6'>
<data-member access='public'>
<var-decl name='band_pref' type-id='3eaa0294' visibility='default' filepath='include/net/cfg80211.h' line='2536' column='1'/>
</data-member>
@ -185999,12 +186110,28 @@
<return type-id='95e97e5e'/>
</function-type>
</abi-instr>
<abi-instr address-size='64' path='sound/last.c' language='LANG_C89'>
<function-decl name='snd_card_ref' mangled-name='snd_card_ref' filepath='include/sound/core.h' line='239' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='snd_card_ref'>
<parameter type-id='95e97e5e'/>
<return type-id='52704eb7'/>
</function-decl>
</abi-instr>
<abi-instr address-size='64' path='sound/soc/soc-component.c' language='LANG_C89'>
<function-decl name='snd_soc_component_enable_pin' mangled-name='snd_soc_component_enable_pin' filepath='sound/soc/soc-component.c' line='80' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='snd_soc_component_enable_pin'>
<parameter type-id='807b7702' name='component' filepath='sound/soc/soc-component.c' line='80' column='1'/>
<parameter type-id='80f4b756' name='pin' filepath='sound/soc/soc-component.c' line='81' column='1'/>
<return type-id='95e97e5e'/>
</function-decl>
<function-decl name='snd_soc_component_disable_pin' mangled-name='snd_soc_component_disable_pin' filepath='sound/soc/soc-component.c' line='124' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='snd_soc_component_disable_pin'>
<parameter type-id='807b7702' name='component' filepath='sound/soc/soc-component.c' line='124' column='1'/>
<parameter type-id='80f4b756' name='pin' filepath='sound/soc/soc-component.c' line='125' column='1'/>
<return type-id='95e97e5e'/>
</function-decl>
<function-decl name='snd_soc_component_get_pin_status' mangled-name='snd_soc_component_get_pin_status' filepath='sound/soc/soc-component.c' line='212' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='snd_soc_component_get_pin_status'>
<parameter type-id='807b7702' name='component' filepath='sound/soc/soc-component.c' line='212' column='1'/>
<parameter type-id='80f4b756' name='pin' filepath='sound/soc/soc-component.c' line='213' column='1'/>
<return type-id='95e97e5e'/>
</function-decl>
<function-decl name='snd_soc_component_force_enable_pin' mangled-name='snd_soc_component_force_enable_pin' filepath='sound/soc/soc-component.c' line='234' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='snd_soc_component_force_enable_pin'>
<parameter type-id='807b7702' name='component' filepath='sound/soc/soc-component.c' line='234' column='1'/>
<parameter type-id='80f4b756' name='pin' filepath='sound/soc/soc-component.c' line='235' column='1'/>
@ -191058,6 +191185,6 @@
</abi-corpus-group>
<!--
libabigail: abidw: 2.0.0-67dcde31-soong
libabigail: abidw: 2.0.0-6bca1bdb-soong
built with: clang: Android (7284624, based on r416183b) clang version 12.0.5 (https://android.googlesource.com/toolchain/llvm-project c935d99d7cf2016289302412d708641d52d2f7ee)
-->

View file

@ -1634,6 +1634,7 @@
of_find_node_opts_by_path
of_find_node_with_property
of_find_property
of_find_spi_device_by_node
of_fwnode_ops
of_genpd_add_provider_onecell
of_genpd_add_provider_simple
@ -2170,6 +2171,7 @@
smpboot_unregister_percpu_thread
snd_card_free
snd_card_new
snd_card_ref
snd_card_register
snd_compr_stop_error
snd_ctl_add
@ -2214,7 +2216,9 @@
snd_soc_card_get_kcontrol
snd_soc_component_async_complete
snd_soc_component_disable_pin
snd_soc_component_enable_pin
snd_soc_component_force_enable_pin
snd_soc_component_get_pin_status
snd_soc_component_init_regmap
snd_soc_component_read
snd_soc_component_read32

View file

@ -939,6 +939,7 @@
fsl8250_handle_irq
fs_kobj
fsstack_copy_attr_all
ftrace_set_clr_event
full_name_hash
fwnode_connection_find_match
fwnode_get_parent
@ -1082,6 +1083,8 @@
i2c_register_driver
i2c_smbus_read_byte
i2c_smbus_write_byte
i2c_smbus_read_byte_data
i2c_smbus_write_byte_data
__i2c_smbus_xfer
i2c_smbus_xfer
__i2c_transfer
@ -2440,6 +2443,8 @@
timer_unstable_counter_workaround
timespec64_to_jiffies
_totalram_pages
trace_array_create
trace_array_destroy
__trace_bprintk
trace_define_field
trace_event_buffer_commit

File diff suppressed because it is too large Load diff

View file

@ -240,3 +240,4 @@ CONFIG_SM_GPUCC_BLAIR=m
CONFIG_SM_DISPCC_BLAIR=m
CONFIG_SM_DEBUGCC_BLAIR=m
CONFIG_QCOM_CX_IPEAK=m
CONFIG_LEDS_AW2016=m

View file

@ -197,3 +197,4 @@ CONFIG_SYN_COOKIES=y
CONFIG_PANIC_TIMEOUT=5
CONFIG_CRYPTO_SHA1_ARM64_CE=y
CONFIG_QTI_CX_IPEAK_COOLING_DEVICE=y
CONFIG_TLB_CONF_HANDLER=y

View file

@ -17,6 +17,7 @@ android/abi_gki_aarch64_oneplus
android/abi_gki_aarch64_oplus
android/abi_gki_aarch64_qcom
android/abi_gki_aarch64_sony
android/abi_gki_aarch64_sonywalkman
android/abi_gki_aarch64_sunxi
android/abi_gki_aarch64_unisoc
android/abi_gki_aarch64_vivo

View file

@ -645,6 +645,8 @@ struct fastrpc_file {
struct completion work;
/* Flag to indicate ram dump collection status*/
bool is_ramdump_pend;
/* Flag to indicate dynamic process creation status*/
bool in_process_create;
};
static struct fastrpc_apps gfa;
@ -3658,6 +3660,15 @@ static int fastrpc_init_create_dynamic_process(struct fastrpc_file *fl,
int siglen;
} inbuf;
spin_lock(&fl->hlock);
if (fl->in_process_create) {
err = -EALREADY;
ADSPRPC_ERR("Already in create dynamic process\n");
spin_unlock(&fl->hlock);
return err;
}
fl->in_process_create = true;
spin_unlock(&fl->hlock);
inbuf.pgid = fl->tgid;
inbuf.namelen = strlen(current->comm) + 1;
inbuf.filelen = init->filelen;
@ -3824,6 +3835,9 @@ bail:
locked = 0;
}
}
spin_lock(&fl->hlock);
fl->in_process_create = false;
spin_unlock(&fl->hlock);
return err;
}
@ -5187,6 +5201,7 @@ skip_dump_wait:
spin_lock(&fl->apps->hlock);
hlist_del_init(&fl->hn);
fl->is_ramdump_pend = false;
fl->in_process_create = false;
spin_unlock(&fl->apps->hlock);
kfree(fl->debug_buf);
kfree(fl->gidlist.gids);
@ -5594,6 +5609,7 @@ static int fastrpc_device_open(struct inode *inode, struct file *filp)
fl->qos_request = 0;
fl->dsp_proc_init = 0;
fl->is_ramdump_pend = false;
fl->in_process_create = false;
init_completion(&fl->work);
fl->file_close = FASTRPC_PROCESS_DEFAULT_STATE;
filp->private_data = fl;

View file

@ -359,7 +359,7 @@ static int _freq_tbl_determine_rate(struct clk_hw *hw, const struct freq_tbl *f,
rate = clk_hw_get_rate(p);
}
req->best_parent_hw = p;
req->best_parent_rate = rate;
req->best_parent_rate = clk_hw_round_rate(p, rate);
req->rate = f->freq;
if (f->src_freq != FIXED_FREQ_SRC) {

View file

@ -1,6 +1,6 @@
// SPDX-License-Identifier: GPL-2.0-only
/*
* Copyright (c) 2020, The Linux Foundation. All rights reserved.
* Copyright (c) 2020-2021, The Linux Foundation. All rights reserved.
*/
#include <linux/clk.h>
@ -1099,7 +1099,7 @@ static struct clk_rcg2 gcc_sdcc1_apps_clk_src = {
.name = "gcc_sdcc1_apps_clk_src",
.parent_data = gcc_parent_data_7,
.num_parents = 6,
.ops = &clk_rcg2_ops,
.ops = &clk_rcg2_floor_ops,
},
.clkr.vdd_data = {
.vdd_class = &vdd_cx,
@ -1128,7 +1128,7 @@ static struct clk_rcg2 gcc_sdcc1_ice_core_clk_src = {
.name = "gcc_sdcc1_ice_core_clk_src",
.parent_data = gcc_parent_data_1,
.num_parents = 5,
.ops = &clk_rcg2_ops,
.ops = &clk_rcg2_floor_ops,
},
.clkr.vdd_data = {
.vdd_class = &vdd_cx,
@ -1161,7 +1161,7 @@ static struct clk_rcg2 gcc_sdcc2_apps_clk_src = {
.name = "gcc_sdcc2_apps_clk_src",
.parent_data = gcc_parent_data_8,
.num_parents = 7,
.ops = &clk_rcg2_ops,
.ops = &clk_rcg2_floor_ops,
},
.clkr.vdd_data = {
.vdd_class = &vdd_cx,
@ -1192,7 +1192,7 @@ static struct clk_rcg2 gcc_sdcc4_apps_clk_src = {
.name = "gcc_sdcc4_apps_clk_src",
.parent_data = gcc_parent_data_1,
.num_parents = 5,
.ops = &clk_rcg2_ops,
.ops = &clk_rcg2_floor_ops,
},
.clkr.vdd_data = {
.vdd_class = &vdd_cx,

View file

@ -254,6 +254,11 @@ a6xx_vbif_snapshot_registers[] = {
ARRAY_SIZE(a6xx_vbif_ver_20xxxxxx_registers)/2},
};
static const unsigned int a6xx_cx_misc_registers[] = {
/* CX_MISC */
0, 0, 10, 14, 20, 24, 0x30, 0x49,
};
/*
* Set of registers to dump for A6XX on snapshot.
* Registers in pairs - first value is the start offset, second
@ -1701,6 +1706,48 @@ static size_t a6xx_snapshot_gmu_wrapper_registers(struct kgsl_device *device,
return (count * 8) + sizeof(*header);
}
/* Snapshot cx misc registers */
static size_t a6xx_snapshot_cx_misc_registers(
struct kgsl_device *device, u8 *buf, size_t remain, void *priv)
{
struct kgsl_snapshot_regs *header = (struct kgsl_snapshot_regs *)buf;
struct kgsl_snapshot_registers *regs = priv;
unsigned int *data = (unsigned int *)(buf + sizeof(*header));
int count = 0, j, k;
struct adreno_device *adreno_dev = ADRENO_DEVICE(device);
/* Figure out how many registers we are going to dump */
for (j = 0; j < regs->count; j++) {
int start = regs->regs[j * 2];
int end = regs->regs[j * 2 + 1];
count += (end - start + 1);
}
if (remain < (count * 8) + sizeof(*header)) {
SNAPSHOT_ERR_NOMEM(device, "CX MISC REGS");
return 0;
}
for (j = 0; j < regs->count; j++) {
unsigned int start = regs->regs[j * 2];
unsigned int end = regs->regs[j * 2 + 1];
for (k = start; k <= end; k++) {
unsigned int val;
adreno_cx_misc_regread(adreno_dev, k, &val);
*data++ = k;
*data++ = val;
}
}
header->count = count;
/* Return the size of the section */
return (count * 8) + sizeof(*header);
}
/* Snapshot the preemption related buffers */
static size_t snapshot_preemption_record(struct kgsl_device *device,
@ -1745,6 +1792,7 @@ void a6xx_snapshot(struct adreno_device *adreno_dev,
bool sptprac_on = true;
unsigned int i, roq_size;
u32 hi, lo;
struct kgsl_snapshot_registers r;
/*
* Dump debugbus data here to capture it for both
@ -1757,8 +1805,6 @@ void a6xx_snapshot(struct adreno_device *adreno_dev,
/* RSCC registers are on cx */
if (adreno_is_a650_family(adreno_dev)) {
struct kgsl_snapshot_registers r;
r.regs = a650_isense_registers;
r.count = ARRAY_SIZE(a650_isense_registers) / 2;
@ -1767,8 +1813,6 @@ void a6xx_snapshot(struct adreno_device *adreno_dev,
}
if (adreno_is_a619_holi(adreno_dev)) {
struct kgsl_snapshot_registers r;
r.regs = a6xx_gmu_wrapper_registers;
r.count = ARRAY_SIZE(a6xx_gmu_wrapper_registers) / 2;
@ -1780,6 +1824,12 @@ void a6xx_snapshot(struct adreno_device *adreno_dev,
ARRAY_SIZE(a6xx_gmu_wrapper_registers) / 2);
}
r.regs = a6xx_cx_misc_registers;
r.count = ARRAY_SIZE(a6xx_cx_misc_registers) / 2;
kgsl_snapshot_add_section(device, KGSL_SNAPSHOT_SECTION_REGS,
snapshot, a6xx_snapshot_cx_misc_registers, &r);
if (gpudev->sptprac_is_on)
sptprac_on = gpudev->sptprac_is_on(adreno_dev);

View file

@ -3,6 +3,7 @@
* Copyright (c) 2008-2021, The Linux Foundation. All rights reserved.
*/
#include <uapi/linux/msm_ion.h>
#include <uapi/linux/sched/types.h>
#include <linux/ctype.h>
#include <linux/debugfs.h>
@ -247,6 +248,13 @@ static void _deferred_put(struct work_struct *work)
kgsl_mem_entry_put(entry);
}
/* Use a worker to put the refcount on mem entry */
void kgsl_mem_entry_put_deferred(struct kgsl_mem_entry *entry)
{
INIT_WORK(&entry->work, _deferred_put);
queue_work(kgsl_driver.mem_workqueue, &entry->work);
}
static struct kgsl_mem_entry *kgsl_mem_entry_create(void)
{
struct kgsl_mem_entry *entry = kzalloc(sizeof(*entry), GFP_KERNEL);
@ -760,8 +768,7 @@ void kgsl_context_detach(struct kgsl_context *context)
/* Remove the event group from the list */
kgsl_del_event_group(device, &context->events);
kgsl_sync_timeline_put(context->ktimeline);
kgsl_sync_timeline_detach(context->ktimeline);
kgsl_context_put(context);
}
@ -780,6 +787,8 @@ kgsl_context_destroy(struct kref *kref)
*/
BUG_ON(!kgsl_context_detached(context));
kgsl_sync_timeline_put(context->ktimeline);
write_lock(&device->context_lock);
if (context->id != KGSL_CONTEXT_INVALID) {
@ -803,7 +812,6 @@ kgsl_context_destroy(struct kref *kref)
context->id = KGSL_CONTEXT_INVALID;
}
write_unlock(&device->context_lock);
kgsl_sync_timeline_destroy(context);
kgsl_process_private_put(context->proc_priv);
device->ftbl->drawctxt_destroy(context);
@ -2335,8 +2343,7 @@ static bool gpuobj_free_fence_func(void *priv)
entry->memdesc.gpuaddr, entry->memdesc.size,
entry->memdesc.flags);
INIT_WORK(&entry->work, _deferred_put);
queue_work(kgsl_driver.mem_workqueue, &entry->work);
kgsl_mem_entry_put_deferred(entry);
return true;
}
@ -3008,6 +3015,29 @@ static int kgsl_setup_dma_buf(struct kgsl_device *device,
entry->priv_data = meta;
entry->memdesc.sgt = sg_table;
if (entry->memdesc.priv & KGSL_MEMDESC_SECURE) {
unsigned long dma_buf_flags;
ret = dma_buf_get_flags(dmabuf, &dma_buf_flags);
if (ret) {
dev_info(device->dev,
"Unable to get dma buf flags, err = %d. Skipped access check\n",
ret);
ret = 0;
goto skip_access_check;
}
/*
* Secure buffer is not accessible to CP_PIXEL, there is no point
* in importing this buffer.
*/
if (!(dma_buf_flags & ION_FLAG_CP_PIXEL)) {
ret = -EPERM;
goto out;
}
}
skip_access_check:
/* Calculate the size of the memdesc from the sglist */
for (s = entry->memdesc.sgt->sgl; s != NULL; s = sg_next(s)) {
int priv = (entry->memdesc.priv & KGSL_MEMDESC_SECURE) ? 1 : 0;

View file

@ -267,11 +267,6 @@ struct kgsl_mem_entry {
int pending_free;
char metadata[KGSL_GPUOBJ_ALLOC_METADATA_MAX + 1];
struct work_struct work;
/**
* @mapped: The number of bytes in this entry that are mapped to
* userspace
*/
u64 mapped;
/**
* @map_count: Count how many vmas this object is mapped in - used for
* debugfs accounting
@ -566,6 +561,13 @@ kgsl_mem_entry_put(struct kgsl_mem_entry *entry)
kref_put(&entry->refcount, kgsl_mem_entry_destroy);
}
/**
* kgsl_mem_entry_put_deferred() - use a worker to put the refcount
* on mem entry from a sysfs handler or debugfs handler.
* @entry - The memory entry
*/
void kgsl_mem_entry_put_deferred(struct kgsl_mem_entry *entry);
/*
* kgsl_addr_range_overlap() - Checks if 2 ranges overlap
* @gpuaddr1: Start of first address range

View file

@ -136,7 +136,18 @@ imported_mem_show(struct kgsl_process_private *priv,
}
}
kgsl_mem_entry_put(entry);
/*
* If refcount on mem entry is the last refcount, we will
* call kgsl_mem_entry_destroy and detach it from process
* list. When there is no refcount on the process private,
* we will call kgsl_destroy_process_private to do cleanup.
* During cleanup, we will try to remove the same sysfs
* node which is in use by the current thread and this
* situation will end up in a deadloack.
* To avoid this situation, use a worker to put the refcount
* on mem entry.
*/
kgsl_mem_entry_put_deferred(entry);
spin_lock(&priv->mem_lock);
}
spin_unlock(&priv->mem_lock);
@ -227,12 +238,6 @@ static ssize_t memtype_sysfs_show(struct kobject *kobj,
u64 size = 0;
int id = 0;
/*
* sysfs_remove_file waits for reads to complete before the node is
* deleted and process private is freed only once kobj is released.
* This implies that priv will not be freed until this function
* completes, and no further locking is needed.
*/
priv = container_of(kobj, struct kgsl_process_private, kobj_memtype);
memtype = container_of(attr, struct kgsl_memtype, attr);
@ -253,7 +258,7 @@ static ssize_t memtype_sysfs_show(struct kobject *kobj,
if (type == memtype->type)
size += memdesc->size;
kgsl_mem_entry_put(entry);
kgsl_mem_entry_put_deferred(entry);
spin_lock(&priv->mem_lock);
}
spin_unlock(&priv->mem_lock);

View file

@ -1,6 +1,6 @@
// SPDX-License-Identifier: GPL-2.0-only
/*
* Copyright (c) 2012-2019, The Linux Foundation. All rights reserved.
* Copyright (c) 2012-2019, 2021, The Linux Foundation. All rights reserved.
*/
#include <linux/file.h>
@ -249,27 +249,41 @@ static void kgsl_sync_timeline_value_str(struct dma_fence *fence,
{
struct kgsl_sync_fence *kfence = (struct kgsl_sync_fence *)fence;
struct kgsl_sync_timeline *ktimeline = kfence->parent;
struct kgsl_context *context = NULL;
unsigned long flags;
int ret = 0;
unsigned int timestamp_retired = 0;
unsigned int timestamp_queued = 0;
unsigned int timestamp_retired;
unsigned int timestamp_queued;
if (!kref_get_unless_zero(&ktimeline->kref))
return;
if (!ktimeline->device)
goto put_timeline;
/*
* ktimeline->device might be NULL here but kgsl_readtimestamp()
* will handle that correctly
*/
kgsl_readtimestamp(ktimeline->device, ktimeline->context,
KGSL_TIMESTAMP_RETIRED, &timestamp_retired);
spin_lock_irqsave(&ktimeline->lock, flags);
ret = _kgsl_context_get(ktimeline->context);
context = ret ? ktimeline->context : NULL;
spin_unlock_irqrestore(&ktimeline->lock, flags);
kgsl_readtimestamp(ktimeline->device, ktimeline->context,
KGSL_TIMESTAMP_QUEUED, &timestamp_queued);
/* Get the last signaled timestamp if the context is not valid */
timestamp_queued = ktimeline->last_timestamp;
timestamp_retired = timestamp_queued;
if (context) {
kgsl_readtimestamp(ktimeline->device, context,
KGSL_TIMESTAMP_RETIRED, &timestamp_retired);
kgsl_readtimestamp(ktimeline->device, context,
KGSL_TIMESTAMP_QUEUED, &timestamp_queued);
kgsl_context_put(context);
}
snprintf(str, size, "%u queued:%u retired:%u",
ktimeline->last_timestamp,
timestamp_queued, timestamp_retired);
put_timeline:
kgsl_sync_timeline_put(ktimeline);
}
@ -298,7 +312,7 @@ int kgsl_sync_timeline_create(struct kgsl_context *context)
{
struct kgsl_sync_timeline *ktimeline;
/* Put context when timeline is released */
/* Put context at detach time */
if (!_kgsl_context_get(context))
return -ENOENT;
@ -320,6 +334,11 @@ int kgsl_sync_timeline_create(struct kgsl_context *context)
INIT_LIST_HEAD(&ktimeline->child_list_head);
spin_lock_init(&ktimeline->lock);
ktimeline->device = context->device;
/*
* The context pointer is valid till detach time, where we put the
* refcount on the context
*/
ktimeline->context = context;
context->ktimeline = ktimeline;
@ -352,27 +371,30 @@ static void kgsl_sync_timeline_signal(struct kgsl_sync_timeline *ktimeline,
kgsl_sync_timeline_put(ktimeline);
}
void kgsl_sync_timeline_destroy(struct kgsl_context *context)
void kgsl_sync_timeline_detach(struct kgsl_sync_timeline *ktimeline)
{
kfree(context->ktimeline);
unsigned long flags;
struct kgsl_context *context = ktimeline->context;
/* Set context pointer to NULL and drop our refcount on the context */
spin_lock_irqsave(&ktimeline->lock, flags);
ktimeline->context = NULL;
spin_unlock_irqrestore(&ktimeline->lock, flags);
kgsl_context_put(context);
}
static void kgsl_sync_timeline_release(struct kref *kref)
static void kgsl_sync_timeline_destroy(struct kref *kref)
{
struct kgsl_sync_timeline *ktimeline =
container_of(kref, struct kgsl_sync_timeline, kref);
/*
* Only put the context refcount here. The context destroy function
* will call kgsl_sync_timeline_destroy() to kfree it
*/
kgsl_context_put(ktimeline->context);
kfree(ktimeline);
}
void kgsl_sync_timeline_put(struct kgsl_sync_timeline *ktimeline)
{
if (ktimeline)
kref_put(&ktimeline->kref, kgsl_sync_timeline_release);
kref_put(&ktimeline->kref, kgsl_sync_timeline_destroy);
}
static const struct dma_fence_ops kgsl_sync_fence_ops = {

View file

@ -1,6 +1,6 @@
/* SPDX-License-Identifier: GPL-2.0-only */
/*
* Copyright (c) 2012-2014,2018-2019 The Linux Foundation. All rights reserved.
* Copyright (c) 2012-2014,2018-2019, 2021, The Linux Foundation. All rights reserved.
*/
#ifndef __KGSL_SYNC_H
#define __KGSL_SYNC_H
@ -9,7 +9,8 @@
/**
* struct kgsl_sync_timeline - A sync timeline associated with a kgsl context
* @kref: Refcount to keep the struct alive until all its fences are released
* @kref: Refcount to keep the struct alive until all its fences are signaled,
and as long as the context exists
* @name: String to describe this timeline
* @fence_context: Used by the fence driver to identify fences belonging to
* this context
@ -80,7 +81,7 @@ int kgsl_add_fence_event(struct kgsl_device *device,
int kgsl_sync_timeline_create(struct kgsl_context *context);
void kgsl_sync_timeline_destroy(struct kgsl_context *context);
void kgsl_sync_timeline_detach(struct kgsl_sync_timeline *ktimeline);
void kgsl_sync_timeline_put(struct kgsl_sync_timeline *ktimeline);
@ -118,7 +119,7 @@ static inline int kgsl_sync_timeline_create(struct kgsl_context *context)
return 0;
}
static inline void kgsl_sync_timeline_destroy(struct kgsl_context *context)
static inline void kgsl_sync_timeline_detach(struct kgsl_sync_timeline *ktimeline)
{
}

View file

@ -237,6 +237,9 @@ static int tmc_enable_etf_sink_perf(struct coresight_device *csdev, void *data)
struct perf_output_handle *handle = data;
struct cs_buffers *buf = etm_perf_sink_config(handle);
if (!buf)
return -EINVAL;
spin_lock_irqsave(&drvdata->spinlock, flags);
do {
ret = -EINVAL;

View file

@ -168,8 +168,15 @@ static void tmc_pages_free(struct tmc_pages *tmc_pages,
__free_page(tmc_pages->pages[i]);
}
kfree(tmc_pages->pages);
kfree(tmc_pages->daddrs);
if (is_vmalloc_addr(tmc_pages->pages))
vfree(tmc_pages->pages);
else
kfree(tmc_pages->pages);
if (is_vmalloc_addr(tmc_pages->daddrs))
vfree(tmc_pages->daddrs);
else
kfree(tmc_pages->daddrs);
tmc_pages->pages = NULL;
tmc_pages->daddrs = NULL;
tmc_pages->nr_pages = 0;
@ -195,14 +202,24 @@ static int tmc_pages_alloc(struct tmc_pages *tmc_pages,
nr_pages = tmc_pages->nr_pages;
tmc_pages->daddrs = kcalloc(nr_pages, sizeof(*tmc_pages->daddrs),
GFP_KERNEL);
if (!tmc_pages->daddrs)
return -ENOMEM;
if (!tmc_pages->daddrs) {
tmc_pages->daddrs = vmalloc(sizeof(*tmc_pages->daddrs) * nr_pages);
if (!tmc_pages->daddrs)
return -ENOMEM;
}
tmc_pages->pages = kcalloc(nr_pages, sizeof(*tmc_pages->pages),
GFP_KERNEL);
if (!tmc_pages->pages) {
kfree(tmc_pages->daddrs);
tmc_pages->daddrs = NULL;
return -ENOMEM;
tmc_pages->pages = vmalloc(sizeof(*tmc_pages->pages) * nr_pages);
if (!tmc_pages->pages) {
if (is_vmalloc_addr(tmc_pages->daddrs))
vfree(tmc_pages->daddrs);
else
kfree(tmc_pages->daddrs);
tmc_pages->daddrs = NULL;
return -ENOMEM;
}
}
for (i = 0; i < nr_pages; i++) {

View file

@ -43,6 +43,7 @@
#define FIFO_REAL_TIME_FILL_STATUS_MASK_V1 GENMASK(6, 0)
/* STATUS_DATA_MSB in V2 when MOD_STATUS_SEL is 5 and MOD_STATUS_XT.SEL is 1 */
#define FIFO_REAL_TIME_FILL_STATUS_MSB_MASK_V2 GENMASK(1, 0)
#define FIFO_REAL_TIME_FILL_STATUS_MSB_MASK_V3 GENMASK(2, 0)
#define FIFO_EMPTY_FLAG_BIT_V2 BIT(6)
#define FIFO_FULL_FLAG_BIT_V2 BIT(5)
@ -1684,7 +1685,7 @@ static int haptics_update_fifo_sample_v2(struct haptics_chip *chip,
static int haptics_get_fifo_fill_status(struct haptics_chip *chip, u32 *fill)
{
int rc;
u8 val[2];
u8 val[2], fill_status_mask;
bool empty = false, full = false;
if (chip->ptn_revision == HAP_PTN_V1) {
@ -1718,8 +1719,10 @@ static int haptics_get_fifo_fill_status(struct haptics_chip *chip, u32 *fill)
if (rc < 0)
return rc;
*fill = ((val[0] & FIFO_REAL_TIME_FILL_STATUS_MSB_MASK_V2)
<< 8) | val[1];
fill_status_mask = (chip->cfg_revision == HAP_CFG_V2) ?
FIFO_REAL_TIME_FILL_STATUS_MSB_MASK_V2 :
FIFO_REAL_TIME_FILL_STATUS_MSB_MASK_V3;
*fill = ((val[0] & fill_status_mask) << 8) | val[1];
empty = !!(val[0] & FIFO_EMPTY_FLAG_BIT_V2);
full = !!(val[0] & FIFO_FULL_FLAG_BIT_V2);
}

View file

@ -315,11 +315,13 @@ void rtc6226_scan(struct work_struct *work)
u8 factor;
int retval = 0;
int i, rssi;
unsigned long time;
FMDBG("%s enter\n", __func__);
radio = container_of(work, struct rtc6226_device, work_scan.work);
mutex_lock(&radio->lock);
retval = rtc6226_get_freq(radio, &current_freq_khz);
if (retval < 0) {
FMDERR("%s fail to get freq\n", __func__);
@ -333,10 +335,14 @@ void rtc6226_scan(struct work_struct *work)
if (retval < 0)
goto seek_tune_fail;
/* wait for tune to complete. */
if (!wait_for_completion_timeout(&radio->completion,
msecs_to_jiffies(TUNE_TIMEOUT_MSEC))) {
mutex_unlock(&radio->lock);
time = wait_for_completion_timeout(&radio->completion,
msecs_to_jiffies(TUNE_TIMEOUT_MSEC));
mutex_lock(&radio->lock);
if (!time) {
FMDERR("In %s, didn't receive STC for tune\n", __func__);
rtc6226_q_event(radio, RTC6226_EVT_ERROR);
mutex_unlock(&radio->lock);
return;
}
@ -351,6 +357,7 @@ void rtc6226_scan(struct work_struct *work)
} else if (radio->mode != FM_RECV) {
FMDERR("%s: FM is not in proper state\n", __func__);
rtc6226_q_event(radio, RTC6226_EVT_ERROR);
mutex_unlock(&radio->lock);
return;
}
@ -360,8 +367,11 @@ void rtc6226_scan(struct work_struct *work)
goto seek_tune_fail;
}
/* wait for seek to complete */
if (!wait_for_completion_timeout(&radio->completion,
msecs_to_jiffies(SEEK_TIMEOUT_MSEC))) {
mutex_unlock(&radio->lock);
time = wait_for_completion_timeout(&radio->completion,
msecs_to_jiffies(SEEK_TIMEOUT_MSEC));
mutex_lock(&radio->lock);
if (!time) {
FMDERR("%s:timeout didn't receive STC for seek\n",
__func__);
rtc6226_get_all_registers(radio);
@ -370,6 +380,7 @@ void rtc6226_scan(struct work_struct *work)
radio->registers[i]);
/* FM is not correct state or scan is cancelled */
rtc6226_q_event(radio, RTC6226_EVT_ERROR);
mutex_unlock(&radio->lock);
return;
} else
FMDERR("%s: received STC for seek\n", __func__);
@ -406,6 +417,7 @@ void rtc6226_scan(struct work_struct *work)
} else if (radio->mode != FM_RECV) {
FMDERR("%s: FM is not in proper state\n", __func__);
rtc6226_q_event(radio, RTC6226_EVT_ERROR);
mutex_unlock(&radio->lock);
return;
}
FMDBG("%s update search list %d\n", __func__, next_freq_khz);
@ -420,7 +432,6 @@ void rtc6226_scan(struct work_struct *work)
&& rssi >= radio->rssi_th) {
rtc6226_update_search_list(radio, next_freq_khz);
}
FMDBG("%s : STATUS=0x%4.4hx\n", __func__,
radio->registers[STATUS]);
if (radio->registers[STATUS] & STATUS_SF ||
@ -452,10 +463,14 @@ void rtc6226_scan(struct work_struct *work)
FMDERR("%s seek fail %d\n", __func__, retval);
goto seek_tune_fail;
}
if (!wait_for_completion_timeout(&radio->completion,
msecs_to_jiffies(SEEK_TIMEOUT_MSEC))) {
mutex_unlock(&radio->lock);
time = wait_for_completion_timeout(&radio->completion,
msecs_to_jiffies(SEEK_TIMEOUT_MSEC));
mutex_lock(&radio->lock);
if (!time) {
FMDERR("timeout didn't receive STC for seek\n");
rtc6226_q_event(radio, RTC6226_EVT_ERROR);
mutex_unlock(&radio->lock);
return;
} else {
FMDERR("%s: received STC for seek\n", __func__);
@ -510,8 +525,11 @@ seek_cancelled:
FMDERR("%s: Tune to orig freq failed with error %d\n",
__func__, retval);
else {
if (!wait_for_completion_timeout(&radio->completion,
msecs_to_jiffies(TUNE_TIMEOUT_MSEC)))
mutex_unlock(&radio->lock);
time = wait_for_completion_timeout(&radio->completion,
msecs_to_jiffies(TUNE_TIMEOUT_MSEC));
mutex_lock(&radio->lock);
if (!time)
FMDERR("%s: didn't receive STD for tune\n", __func__);
else
FMDERR("%s: received STD for tune\n", __func__);
@ -522,6 +540,7 @@ seek_cancelled:
rtc6226_q_event(radio, RTC6226_EVT_TUNE_SUCC);
radio->seek_tune_status = NO_SEEK_TUNE_PENDING;
FMDERR("%s seek cancelled %d\n", __func__, retval);
mutex_unlock(&radio->lock);
return;
}
@ -531,14 +550,12 @@ int rtc6226_cancel_seek(struct rtc6226_device *radio)
int retval = 0;
FMDBG("%s enter\n", __func__);
mutex_lock(&radio->lock);
/* stop seeking */
radio->registers[SEEKCFG1] &= ~SEEKCFG1_CSR0_SEEK;
retval = rtc6226_set_register(radio, SEEKCFG1);
complete(&radio->completion);
mutex_unlock(&radio->lock);
radio->is_search_cancelled = true;
if (radio->g_search_mode == SEEK)
rtc6226_q_event(radio, RTC6226_EVT_SEEK_COMPLETE);
@ -553,10 +570,28 @@ void rtc6226_search(struct rtc6226_device *radio, bool on)
current_freq_khz = radio->tuned_freq_khz;
FMDBG("%s rtc6226_power_up1: DeviceID=0x%4.4hx ChipID=0x%4.4hx\n",
__func__,
radio->registers[DEVICEID], radio->registers[CHIPID]);
FMDBG("%s rtc6226_power_up2: Reg2=0x%4.4hx Reg3=0x%4.4hx\n", __func__,
radio->registers[MPXCFG], radio->registers[CHANNEL]);
FMDBG("%s rtc6226_power_up3: Reg4=0x%4.4hx Reg5=0x%4.4hx\n", __func__,
radio->registers[SYSCFG], radio->registers[SEEKCFG1]);
FMDBG("%s rtc6226_power_up4: Reg6=0x%4.4hx Reg7=0x%4.4hx\n", __func__,
radio->registers[POWERCFG], radio->registers[PADCFG]);
FMDBG("%s rtc6226_power_up5: Reg8=0x%4.4hx Reg9=0x%4.4hx\n", __func__,
radio->registers[8], radio->registers[9]);
FMDBG("%s rtc6226_power_up6: regA=0x%4.4hx RegB=0x%4.4hx\n", __func__,
radio->registers[10], radio->registers[11]);
FMDBG("%s rtc6226_power_up7: regC=0x%4.4hx RegD=0x%4.4hx\n", __func__,
radio->registers[12], radio->registers[13]);
FMDBG("%s rtc6226_power_up8: regE=0x%4.4hx RegF=0x%4.4hx\n", __func__,
radio->registers[14], radio->registers[15]);
if (on) {
FMDBG("%s: Queuing the work onto scan work q\n", __func__);
queue_delayed_work(radio->wqueue_scan, &radio->work_scan,
msecs_to_jiffies(10));
msecs_to_jiffies(10));
} else {
rtc6226_cancel_seek(radio);
}
@ -691,12 +726,10 @@ static void rtc6226_get_rds(struct rtc6226_device *radio)
{
int retval = 0;
mutex_lock(&radio->lock);
retval = rtc6226_get_all_registers(radio);
if (retval < 0) {
FMDERR("%s read fail%d\n", __func__, retval);
mutex_unlock(&radio->lock);
return;
}
radio->block[0] = radio->registers[BA_DATA];
@ -708,7 +741,6 @@ static void rtc6226_get_rds(struct rtc6226_device *radio)
radio->bler[1] = (radio->registers[RSSI] & RSSI_RDS_BB_ERRS) >> 12;
radio->bler[2] = (radio->registers[RSSI] & RSSI_RDS_BC_ERRS) >> 10;
radio->bler[3] = (radio->registers[RSSI] & RSSI_RDS_BD_ERRS) >> 8;
mutex_unlock(&radio->lock);
}
static void rtc6226_pi_check(struct rtc6226_device *radio, u16 current_pi)
@ -1308,7 +1340,7 @@ void rtc6226_rds_handler(struct work_struct *worker)
}
FMDBG("%s enter\n", __func__);
mutex_lock(&radio->lock);
rtc6226_get_rds(radio);
if (radio->bler[0] < CORRECTED_THREE_TO_FIVE)
@ -1319,6 +1351,7 @@ void rtc6226_rds_handler(struct work_struct *worker)
FMDBG("%s grp_type = %d\n", __func__, grp_type);
} else {
/* invalid data case */
mutex_unlock(&radio->lock);
return;
}
if (grp_type & 0x01)
@ -1378,6 +1411,8 @@ void rtc6226_rds_handler(struct work_struct *worker)
rtc6226_rt_plus(radio);
else if (radio->ert_carrier && (grp_type == radio->ert_carrier))
rtc6226_buff_ert(radio);
mutex_unlock(&radio->lock);
}
/*
@ -1400,7 +1435,6 @@ int rtc6226_rds_on(struct rtc6226_device *radio)
int rtc6226_reset_rds_data(struct rtc6226_device *radio)
{
mutex_lock(&radio->lock);
radio->pi = 0;
/* reset PS bufferes */
memset(radio->ps_display, 0, sizeof(radio->ps_display));
@ -1415,7 +1449,6 @@ int rtc6226_reset_rds_data(struct rtc6226_device *radio)
radio->wr_index = 0;
radio->rd_index = 0;
memset(radio->buffer, 0, radio->buf_size);
mutex_unlock(&radio->lock);
return 0;
}
@ -1441,12 +1474,10 @@ int rtc6226_power_down(struct rtc6226_device *radio)
FMDBG("%s enter\n", __func__);
mutex_lock(&radio->lock);
/* stop radio */
retval = rtc6226_stop(radio);
//rtc6226_disable_irq(radio);
mutex_unlock(&radio->lock);
FMDBG("%s exit %d\n", __func__, retval);
return retval;
@ -1456,8 +1487,6 @@ int rtc6226_power_up(struct rtc6226_device *radio)
{
int retval = 0;
mutex_lock(&radio->lock);
FMDBG("%s enter\n", __func__);
/* start radio */
@ -1531,7 +1560,6 @@ int rtc6226_power_up(struct rtc6226_device *radio)
done:
FMDBG("%s exit %d\n", __func__, retval);
mutex_unlock(&radio->lock);
return retval;
}
@ -1822,6 +1850,7 @@ int rtc6226_vidioc_s_ctrl(struct file *file, void *priv,
FMDBG("%s enter, ctrl->id: %x, value:%d\n", __func__,
ctrl->id, ctrl->value);
mutex_lock(&radio->lock);
switch (ctrl->id) {
case V4L2_CID_PRIVATE_RTC6226_STATE:
if (ctrl->value == FM_RECV) {
@ -2082,6 +2111,7 @@ int rtc6226_vidioc_s_ctrl(struct file *file, void *priv,
end:
FMDBG("%s exit id: %x , ret: %d\n", __func__, ctrl->id, retval);
mutex_unlock(&radio->lock);
return retval;
}
@ -2112,7 +2142,7 @@ static int rtc6226_vidioc_g_tuner(struct file *file, void *priv,
int retval = 0;
FMDBG("%s enter\n", __func__);
mutex_lock(&radio->lock);
if (tuner->index != 0) {
retval = -EINVAL;
goto done;
@ -2160,7 +2190,7 @@ static int rtc6226_vidioc_g_tuner(struct file *file, void *priv,
done:
FMDBG("%s exit %d\n", __func__, retval);
mutex_unlock(&radio->lock);
return retval;
}
@ -2177,7 +2207,7 @@ static int rtc6226_vidioc_s_tuner(struct file *file, void *priv,
u16 top_freq;
FMDBG("%s entry\n", __func__);
mutex_lock(&radio->lock);
if (tuner->index != 0) {
FMDBG("%s index :%d\n", __func__, tuner->index);
goto done;
@ -2222,6 +2252,7 @@ static int rtc6226_vidioc_s_tuner(struct file *file, void *priv,
radio->recv_conf.band_low_limit = bottom_freq;
done:
FMDBG("%s exit %d\n", __func__, retval);
mutex_unlock(&radio->lock);
return retval;
}
@ -2237,7 +2268,7 @@ static int rtc6226_vidioc_g_frequency(struct file *file, void *priv,
unsigned int frq;
FMDBG("%s enter freq %d\n", __func__, freq->frequency);
mutex_lock(&radio->lock);
freq->type = V4L2_TUNER_RADIO;
retval = rtc6226_get_freq(radio, &frq);
freq->frequency = frq * TUNE_PARAM;
@ -2246,7 +2277,7 @@ static int rtc6226_vidioc_g_frequency(struct file *file, void *priv,
if (retval < 0)
FMDERR(" %s get frequency failed with %d\n", __func__, retval);
mutex_unlock(&radio->lock);
return retval;
}
@ -2270,13 +2301,14 @@ static int rtc6226_vidioc_s_frequency(struct file *file, void *priv,
return -EINVAL;
f = (freq->frequency)/TUNE_PARAM;
mutex_lock(&radio->lock);
radio->seek_tune_status = TUNE_PENDING;
retval = rtc6226_set_freq(radio, f);
if (retval < 0)
FMDERR("%s set frequency failed with %d\n", __func__, retval);
else
radio->tuned_freq_khz = f;
mutex_unlock(&radio->lock);
return retval;
}
@ -2295,6 +2327,7 @@ static int rtc6226_vidioc_s_hw_freq_seek(struct file *file, void *priv,
if (file->f_flags & O_NONBLOCK)
return -EWOULDBLOCK;
mutex_lock(&radio->lock);
radio->is_search_cancelled = false;
/* Disable the rds before seek */
@ -2328,6 +2361,7 @@ static int rtc6226_vidioc_s_hw_freq_seek(struct file *file, void *priv,
__func__, radio->g_search_mode);
}
FMDBG("%s exit %d\n", __func__, retval);
mutex_unlock(&radio->lock);
return retval;
}

View file

@ -229,7 +229,7 @@ static void rtc6226_i2c_interrupt_handler(struct rtc6226_device *radio)
unsigned short current_chan;
FMDBG("%s enter\n", __func__);
mutex_lock(&radio->lock);
/* check Seek/Tune Complete */
retval = rtc6226_get_register(radio, STATUS);
if (retval < 0) {
@ -267,11 +267,13 @@ static void rtc6226_i2c_interrupt_handler(struct rtc6226_device *radio)
FMDBG("posting RICHWAVE_EVT_TUNE_SUCC event\n");
rtc6226_q_event(radio, RTC6226_EVT_TUNE_SUCC);
radio->seek_tune_status = NO_SEEK_TUNE_PENDING;
} else if (radio->seek_tune_status == TUNE_PENDING) {
} else if ((radio->seek_tune_status == TUNE_PENDING) ||
(radio->g_search_mode != SCAN)) {
FMDBG("posting RICHWAVE_EVT_TUNE_SUCC event\n");
rtc6226_q_event(radio, RTC6226_EVT_TUNE_SUCC);
radio->seek_tune_status = NO_SEEK_TUNE_PENDING;
} else if (radio->seek_tune_status == SCAN_PENDING) {
} else if ((radio->seek_tune_status == SCAN_PENDING) ||
(radio->g_search_mode == SCAN)) {
/* when scan is pending and STC int is set, signal
* so that scan can proceed
*/
@ -279,7 +281,8 @@ static void rtc6226_i2c_interrupt_handler(struct rtc6226_device *radio)
complete(&radio->completion);
}
FMDBG("%s Seek/Tune done\n", __func__);
} else {
} else if ((radio->seek_tune_status != TUNE_PENDING) &&
(radio->seek_tune_status != SCAN_PENDING)) {
/* Check RDS data after tune/seek interrupt finished
* Update RDS registers
*/
@ -302,6 +305,7 @@ static void rtc6226_i2c_interrupt_handler(struct rtc6226_device *radio)
}
}
end:
mutex_unlock(&radio->lock);
FMDBG("%s exit :%d\n", __func__, retval);
}
@ -543,7 +547,7 @@ int rtc6226_fops_open(struct file *file)
struct rtc6226_device *radio = video_drvdata(file);
int retval;
FMDBG("%s enter user num = %d\n", __func__, radio->users);
FMDBG("%s enter user num = %d\n", __func__, atomic_read(&radio->users));
if (atomic_inc_return(&radio->users) != 1) {
FMDERR("Device already in use. Try again later\n");
atomic_dec(&radio->users);
@ -586,6 +590,7 @@ int rtc6226_fops_release(struct file *file)
int retval = 0;
FMDBG("%s : Exit\n", __func__);
mutex_lock(&radio->lock);
if (radio->mode != FM_OFF) {
rtc6226_power_down(radio);
radio->mode = FM_OFF;
@ -595,6 +600,7 @@ int rtc6226_fops_release(struct file *file)
retval = rtc6226_fm_power_cfg(radio, TURNING_OFF);
if (retval < 0)
FMDERR("%s: failed to apply voltage\n", __func__);
mutex_unlock(&radio->lock);
return retval;
}

View file

@ -939,7 +939,7 @@ static int msm_init_cm_dll(struct sdhci_host *host,
mclk_freq = ROUND(dll_clock * cycle_cnt, TCXO_FREQ);
if (dll_clock < 192000000)
if (dll_clock < 100000000)
pr_err("%s: %s: Non standard clk freq =%u\n",
mmc_hostname(mmc), __func__, dll_clock);
@ -2721,8 +2721,8 @@ static void sdhci_msm_registers_restore(struct sdhci_host *host)
host->ioaddr + msm_offset->core_pwrctl_mask);
if (cq_host)
cqhci_writel(cq_host, msm_host->cqe_regs.cqe_vendor_cfg1,
CQHCI_VENDOR_CFG1);
cqhci_writel(cq_host, msm_host->cqe_regs.cqe_vendor_cfg1 &
~CMDQ_SEND_STATUS_TRIGGER, CQHCI_VENDOR_CFG1);
if (((ios.timing == MMC_TIMING_MMC_HS400) ||
(ios.timing == MMC_TIMING_MMC_HS200) ||

View file

@ -3207,13 +3207,9 @@ static int cnss_probe(struct platform_device *plat_dev)
if (ret)
goto deinit_event_work;
ret = cnss_dms_init(plat_priv);
if (ret)
goto deinit_qmi;
ret = cnss_debugfs_create(plat_priv);
if (ret)
goto deinit_dms;
goto deinit_qmi;
ret = cnss_misc_init(plat_priv);
if (ret)
@ -3241,6 +3237,10 @@ retry:
}
}
ret = cnss_dms_init(plat_priv);
if (ret)
goto deinit_bus;
cnss_register_coex_service(plat_priv);
cnss_register_ims_service(plat_priv);
@ -3252,6 +3252,9 @@ retry:
return 0;
deinit_bus:
if (!test_bit(SKIP_DEVICE_BOOT, &plat_priv->ctrl_params.quirks))
cnss_bus_deinit(plat_priv);
power_off:
if (!test_bit(SKIP_DEVICE_BOOT, &plat_priv->ctrl_params.quirks))
cnss_power_off_device(plat_priv);
@ -3259,8 +3262,6 @@ deinit_misc:
cnss_misc_deinit(plat_priv);
destroy_debugfs:
cnss_debugfs_destroy(plat_priv);
deinit_dms:
cnss_dms_deinit(plat_priv);
deinit_qmi:
cnss_qmi_deinit(plat_priv);
deinit_event_work:
@ -3287,10 +3288,10 @@ static int cnss_remove(struct platform_device *plat_dev)
cnss_genl_exit();
cnss_unregister_ims_service(plat_priv);
cnss_unregister_coex_service(plat_priv);
cnss_dms_deinit(plat_priv);
cnss_bus_deinit(plat_priv);
cnss_misc_deinit(plat_priv);
cnss_debugfs_destroy(plat_priv);
cnss_dms_deinit(plat_priv);
cnss_qmi_deinit(plat_priv);
cnss_event_work_deinit(plat_priv);
cnss_remove_sysfs(plat_priv);

View file

@ -1107,6 +1107,9 @@ int cnss_suspend_pci_link(struct cnss_pci_data *pci_priv)
cnss_pr_err("Failed to set D3Hot, err = %d\n", ret);
}
/* Always do PCIe L2 suspend during power off/PCIe link recovery */
pci_priv->drv_connected_last = 0;
ret = cnss_set_pci_link(pci_priv, PCI_LINK_DOWN);
if (ret)
goto out;
@ -1184,8 +1187,6 @@ int cnss_pci_recover_link_down(struct cnss_pci_data *pci_priv)
*/
msleep(WAKE_EVENT_TIMEOUT);
/* Always do PCIe L2 suspend/resume during link down recovery */
pci_priv->drv_connected_last = 0;
ret = cnss_suspend_pci_link(pci_priv);
if (ret)
cnss_pr_err("Failed to suspend PCI link, err = %d\n", ret);
@ -1737,20 +1738,20 @@ static int cnss_pci_set_mhi_state(struct cnss_pci_data *pci_priv,
break;
case CNSS_MHI_SUSPEND:
mutex_lock(&pci_priv->mhi_ctrl->pm_mutex);
retry:
if (pci_priv->drv_connected_last) {
ret = mhi_pm_fast_suspend(pci_priv->mhi_ctrl, true);
} else {
ret = mhi_pm_suspend(pci_priv->mhi_ctrl);
/* in some corner case, when cnss try to suspend,
* there is still packets pending in mhi layer,
* so retry suspend to save roll back effort.
*/
while (ret == -EBUSY && retry < MHI_SUSPEND_RETRY_CNT) {
usleep_range(5000, 6000);
retry++;
cnss_pr_err("mhi is busy, retry #%u", retry);
ret = mhi_pm_suspend(pci_priv->mhi_ctrl);
}
}
/* in some corner case, when cnss try to suspend,
* there is still packets pending in mhi layer,
* so retry suspend to save roll back effort.
*/
if (ret == -EBUSY && retry++ < MHI_SUSPEND_RETRY_CNT) {
usleep_range(5000, 6000);
cnss_pr_err("mhi is busy, retry #%u", retry);
goto retry;
}
mutex_unlock(&pci_priv->mhi_ctrl->pm_mutex);
break;
@ -3023,6 +3024,8 @@ static void cnss_pci_event_cb(struct msm_pcie_notify *notify)
struct pci_dev *pci_dev;
struct cnss_pci_data *pci_priv;
struct device *dev;
struct cnss_plat_data *plat_priv = NULL;
int ret = 0;
if (!notify)
return;
@ -3037,6 +3040,23 @@ static void cnss_pci_event_cb(struct msm_pcie_notify *notify)
dev = &pci_priv->pci_dev->dev;
switch (notify->event) {
case MSM_PCIE_EVENT_LINK_RECOVER:
cnss_pr_dbg("PCI link recover callback\n");
plat_priv = pci_priv->plat_priv;
if (!plat_priv) {
cnss_pr_err("plat_priv is NULL\n");
return;
}
plat_priv->ctrl_params.quirks |= BIT(LINK_DOWN_SELF_RECOVERY);
ret = msm_pcie_pm_control(MSM_PCIE_HANDLE_LINKDOWN,
pci_dev->bus->number, pci_dev, NULL,
PM_OPTIONS_DEFAULT);
if (ret)
cnss_pci_handle_linkdown(pci_priv);
break;
case MSM_PCIE_EVENT_LINKDOWN:
cnss_pr_dbg("PCI link down event callback\n");
cnss_pci_handle_linkdown(pci_priv);
@ -3080,8 +3100,9 @@ static int cnss_reg_pci_event(struct cnss_pci_data *pci_priv)
struct msm_pcie_register_event *pci_event;
pci_event = &pci_priv->msm_pci_event;
pci_event->events = MSM_PCIE_EVENT_LINKDOWN |
MSM_PCIE_EVENT_WAKEUP;
pci_event->events = MSM_PCIE_EVENT_LINK_RECOVER |
MSM_PCIE_EVENT_LINKDOWN |
MSM_PCIE_EVENT_WAKEUP;
if (cnss_pci_is_drv_supported(pci_priv))
pci_event->events = pci_event->events |

View file

@ -3414,6 +3414,86 @@ struct qmi_elem_info wlfw_host_cap_req_msg_v01_ei[] = {
wlfw_host_cap_req_msg_v01,
feature_list),
},
{
.data_type = QMI_OPT_FLAG,
.elem_len = 1,
.elem_size = sizeof(u8),
.array_type = NO_ARRAY,
.tlv_type = 0x28,
.offset = offsetof(struct
wlfw_host_cap_req_msg_v01,
num_wlan_clients_valid),
},
{
.data_type = QMI_UNSIGNED_2_BYTE,
.elem_len = 1,
.elem_size = sizeof(u16),
.array_type = NO_ARRAY,
.tlv_type = 0x28,
.offset = offsetof(struct
wlfw_host_cap_req_msg_v01,
num_wlan_clients),
},
{
.data_type = QMI_OPT_FLAG,
.elem_len = 1,
.elem_size = sizeof(u8),
.array_type = NO_ARRAY,
.tlv_type = 0x29,
.offset = offsetof(struct
wlfw_host_cap_req_msg_v01,
num_wlan_vaps_valid),
},
{
.data_type = QMI_UNSIGNED_1_BYTE,
.elem_len = 1,
.elem_size = sizeof(u8),
.array_type = NO_ARRAY,
.tlv_type = 0x29,
.offset = offsetof(struct
wlfw_host_cap_req_msg_v01,
num_wlan_vaps),
},
{
.data_type = QMI_OPT_FLAG,
.elem_len = 1,
.elem_size = sizeof(u8),
.array_type = NO_ARRAY,
.tlv_type = 0x2A,
.offset = offsetof(struct
wlfw_host_cap_req_msg_v01,
wake_msi_addr_valid),
},
{
.data_type = QMI_UNSIGNED_4_BYTE,
.elem_len = 1,
.elem_size = sizeof(u32),
.array_type = NO_ARRAY,
.tlv_type = 0x2A,
.offset = offsetof(struct
wlfw_host_cap_req_msg_v01,
wake_msi_addr),
},
{
.data_type = QMI_OPT_FLAG,
.elem_len = 1,
.elem_size = sizeof(u8),
.array_type = NO_ARRAY,
.tlv_type = 0x2B,
.offset = offsetof(struct
wlfw_host_cap_req_msg_v01,
wlan_enable_delay_valid),
},
{
.data_type = QMI_UNSIGNED_4_BYTE,
.elem_len = 1,
.elem_size = sizeof(u32),
.array_type = NO_ARRAY,
.tlv_type = 0x2B,
.offset = offsetof(struct
wlfw_host_cap_req_msg_v01,
wlan_enable_delay),
},
{
.data_type = QMI_EOTI,
.array_type = NO_ARRAY,

View file

@ -9,117 +9,117 @@
#define WLFW_SERVICE_ID_V01 0x45
#define WLFW_SERVICE_VERS_V01 0x01
#define QMI_WLFW_IND_REGISTER_REQ_V01 0x0020
#define QMI_WLFW_IND_REGISTER_RESP_V01 0x0020
#define QMI_WLFW_FW_READY_IND_V01 0x0021
#define QMI_WLFW_WLAN_MODE_REQ_V01 0x0022
#define QMI_WLFW_WLAN_MODE_RESP_V01 0x0022
#define QMI_WLFW_WLAN_CFG_REQ_V01 0x0023
#define QMI_WLFW_WLAN_CFG_RESP_V01 0x0023
#define QMI_WLFW_CAP_REQ_V01 0x0024
#define QMI_WLFW_CAP_RESP_V01 0x0024
#define QMI_WLFW_BDF_DOWNLOAD_REQ_V01 0x0025
#define QMI_WLFW_BDF_DOWNLOAD_RESP_V01 0x0025
#define QMI_WLFW_CAL_REPORT_REQ_V01 0x0026
#define QMI_WLFW_CAL_REPORT_RESP_V01 0x0026
#define QMI_WLFW_CAL_DOWNLOAD_REQ_V01 0x0027
#define QMI_WLFW_CAL_DOWNLOAD_RESP_V01 0x0027
#define QMI_WLFW_INITIATE_CAL_DOWNLOAD_IND_V01 0x0028
#define QMI_WLFW_CAL_UPDATE_REQ_V01 0x0029
#define QMI_WLFW_CAL_UPDATE_RESP_V01 0x0029
#define QMI_WLFW_INITIATE_CAL_UPDATE_IND_V01 0x002A
#define QMI_WLFW_MSA_READY_IND_V01 0x002B
#define QMI_WLFW_PIN_CONNECT_RESULT_IND_V01 0x002C
#define QMI_WLFW_MSA_INFO_REQ_V01 0x002D
#define QMI_WLFW_MSA_INFO_RESP_V01 0x002D
#define QMI_WLFW_MSA_READY_REQ_V01 0x002E
#define QMI_WLFW_MSA_READY_RESP_V01 0x002E
#define QMI_WLFW_INI_REQ_V01 0x002F
#define QMI_WLFW_INI_RESP_V01 0x002F
#define QMI_WLFW_ATHDIAG_READ_REQ_V01 0x0030
#define QMI_WLFW_ATHDIAG_READ_RESP_V01 0x0030
#define QMI_WLFW_ATHDIAG_WRITE_REQ_V01 0x0031
#define QMI_WLFW_ATHDIAG_WRITE_RESP_V01 0x0031
#define QMI_WLFW_VBATT_REQ_V01 0x0032
#define QMI_WLFW_VBATT_RESP_V01 0x0032
#define QMI_WLFW_MAC_ADDR_REQ_V01 0x0033
#define QMI_WLFW_MAC_ADDR_RESP_V01 0x0033
#define QMI_WLFW_HOST_CAP_REQ_V01 0x0034
#define QMI_WLFW_HOST_CAP_RESP_V01 0x0034
#define QMI_WLFW_REQUEST_MEM_IND_V01 0x0035
#define QMI_WLFW_RESPOND_MEM_REQ_V01 0x0036
#define QMI_WLFW_RESPOND_MEM_RESP_V01 0x0036
#define QMI_WLFW_FW_MEM_READY_IND_V01 0x0037
#define QMI_WLFW_FW_INIT_DONE_IND_V01 0x0038
#define QMI_WLFW_REJUVENATE_IND_V01 0x0039
#define QMI_WLFW_REJUVENATE_ACK_REQ_V01 0x003A
#define QMI_WLFW_REJUVENATE_ACK_RESP_V01 0x003A
#define QMI_WLFW_DYNAMIC_FEATURE_MASK_REQ_V01 0x003B
#define QMI_WLFW_DYNAMIC_FEATURE_MASK_RESP_V01 0x003B
#define QMI_WLFW_M3_INFO_REQ_V01 0x003C
#define QMI_WLFW_M3_INFO_RESP_V01 0x003C
#define QMI_WLFW_XO_CAL_IND_V01 0x003D
#define QMI_WLFW_CAL_DONE_IND_V01 0x003E
#define QMI_WLFW_QDSS_TRACE_REQ_MEM_IND_V01 0x003F
#define QMI_WLFW_QDSS_TRACE_MEM_INFO_REQ_V01 0x0040
#define QMI_WLFW_QDSS_TRACE_MEM_INFO_RESP_V01 0x0040
#define QMI_WLFW_QDSS_TRACE_SAVE_IND_V01 0x0041
#define QMI_WLFW_QDSS_TRACE_DATA_REQ_V01 0x0042
#define QMI_WLFW_QDSS_TRACE_DATA_RESP_V01 0x0042
#define QMI_WLFW_SHUTDOWN_REQ_V01 0x0043
#define QMI_WLFW_SHUTDOWN_RESP_V01 0x0043
#define QMI_WLFW_QDSS_TRACE_CONFIG_DOWNLOAD_REQ_V01 0x0044
#define QMI_WLFW_QDSS_TRACE_CONFIG_DOWNLOAD_RESP_V01 0x0044
#define QMI_WLFW_QDSS_TRACE_MODE_REQ_V01 0x0045
#define QMI_WLFW_QDSS_TRACE_MODE_RESP_V01 0x0045
#define QMI_WLFW_QDSS_TRACE_FREE_IND_V01 0x0046
#define QMI_WLFW_ANTENNA_SWITCH_REQ_V01 0x0047
#define QMI_WLFW_ANTENNA_SWITCH_RESP_V01 0x0047
#define QMI_WLFW_ANTENNA_GRANT_REQ_V01 0x0048
#define QMI_WLFW_ANTENNA_GRANT_RESP_V01 0x0048
#define QMI_WLFW_WFC_CALL_STATUS_REQ_V01 0x0049
#define QMI_WLFW_WFC_CALL_STATUS_RESP_V01 0x0049
#define QMI_WLFW_GET_INFO_REQ_V01 0x004A
#define QMI_WLFW_GET_INFO_RESP_V01 0x004A
#define QMI_WLFW_RESPOND_GET_INFO_IND_V01 0x004B
#define QMI_WLFW_DEVICE_INFO_REQ_V01 0x004C
#define QMI_WLFW_DEVICE_INFO_RESP_V01 0x004C
#define QMI_WLFW_M3_DUMP_UPLOAD_REQ_IND_V01 0x004D
#define QMI_WLFW_M3_DUMP_UPLOAD_DONE_REQ_V01 0x004E
#define QMI_WLFW_M3_DUMP_UPLOAD_DONE_RESP_V01 0x004E
#define QMI_WLFW_SOC_WAKE_REQ_V01 0x004F
#define QMI_WLFW_SOC_WAKE_RESP_V01 0x004F
#define QMI_WLFW_POWER_SAVE_REQ_V01 0x0050
#define QMI_WLFW_POWER_SAVE_RESP_V01 0x0050
#define QMI_WLFW_WFC_CALL_TWT_CONFIG_IND_V01 0x0051
#define QMI_WLFW_QDSS_MEM_READY_IND_V01 0x0052
#define QMI_WLFW_CAP_REQ_V01 0x0024
#define QMI_WLFW_CAL_REPORT_REQ_V01 0x0026
#define QMI_WLFW_M3_INFO_RESP_V01 0x003C
#define QMI_WLFW_CAL_REPORT_RESP_V01 0x0026
#define QMI_WLFW_MAC_ADDR_RESP_V01 0x0033
#define QMI_WLFW_DYNAMIC_FEATURE_MASK_RESP_V01 0x003B
#define QMI_WLFW_IND_REGISTER_REQ_V01 0x0020
#define QMI_WLFW_DYNAMIC_FEATURE_MASK_REQ_V01 0x003B
#define QMI_WLFW_QDSS_TRACE_MODE_RESP_V01 0x0045
#define QMI_WLFW_FW_READY_IND_V01 0x0021
#define QMI_WLFW_QDSS_TRACE_MEM_INFO_RESP_V01 0x0040
#define QMI_WLFW_CAL_UPDATE_REQ_V01 0x0029
#define QMI_WLFW_REQUEST_MEM_IND_V01 0x0035
#define QMI_WLFW_QDSS_TRACE_DATA_RESP_V01 0x0042
#define QMI_WLFW_RESPOND_MEM_RESP_V01 0x0036
#define QMI_WLFW_VBATT_RESP_V01 0x0032
#define QMI_WLFW_QDSS_TRACE_MODE_REQ_V01 0x0045
#define QMI_WLFW_CAL_DOWNLOAD_REQ_V01 0x0027
#define QMI_WLFW_IND_REGISTER_RESP_V01 0x0020
#define QMI_WLFW_CAL_UPDATE_RESP_V01 0x0029
#define QMI_WLFW_M3_INFO_REQ_V01 0x003C
#define QMI_WLFW_PCIE_GEN_SWITCH_REQ_V01 0x0053
#define QMI_WLFW_ANTENNA_GRANT_RESP_V01 0x0048
#define QMI_WLFW_INITIATE_CAL_UPDATE_IND_V01 0x002A
#define QMI_WLFW_RESPOND_MEM_REQ_V01 0x0036
#define QMI_WLFW_HOST_CAP_RESP_V01 0x0034
#define QMI_WLFW_MSA_READY_IND_V01 0x002B
#define QMI_WLFW_WLAN_MODE_REQ_V01 0x0022
#define QMI_WLFW_WLAN_CFG_RESP_V01 0x0023
#define QMI_WLFW_REJUVENATE_IND_V01 0x0039
#define QMI_WLFW_ATHDIAG_WRITE_REQ_V01 0x0031
#define QMI_WLFW_SOC_WAKE_REQ_V01 0x004F
#define QMI_WLFW_PIN_CONNECT_RESULT_IND_V01 0x002C
#define QMI_WLFW_M3_DUMP_UPLOAD_DONE_RESP_V01 0x004E
#define QMI_WLFW_QDSS_TRACE_SAVE_IND_V01 0x0041
#define QMI_WLFW_BDF_DOWNLOAD_RESP_V01 0x0025
#define QMI_WLFW_REJUVENATE_ACK_RESP_V01 0x003A
#define QMI_WLFW_MSA_INFO_RESP_V01 0x002D
#define QMI_WLFW_SHUTDOWN_REQ_V01 0x0043
#define QMI_WLFW_VBATT_REQ_V01 0x0032
#define QMI_WLFW_MAC_ADDR_REQ_V01 0x0033
#define QMI_WLFW_WLAN_CFG_REQ_V01 0x0023
#define QMI_WLFW_ANTENNA_GRANT_REQ_V01 0x0048
#define QMI_WLFW_BDF_DOWNLOAD_REQ_V01 0x0025
#define QMI_WLFW_FW_MEM_READY_IND_V01 0x0037
#define QMI_WLFW_RESPOND_GET_INFO_IND_V01 0x004B
#define QMI_WLFW_QDSS_TRACE_DATA_REQ_V01 0x0042
#define QMI_WLFW_CAL_DOWNLOAD_RESP_V01 0x0027
#define QMI_WLFW_INI_RESP_V01 0x002F
#define QMI_WLFW_QDSS_TRACE_MEM_INFO_REQ_V01 0x0040
#define QMI_WLFW_ANTENNA_SWITCH_REQ_V01 0x0047
#define QMI_WLFW_QDSS_TRACE_REQ_MEM_IND_V01 0x003F
#define QMI_WLFW_INITIATE_CAL_DOWNLOAD_IND_V01 0x0028
#define QMI_WLFW_ATHDIAG_WRITE_RESP_V01 0x0031
#define QMI_WLFW_QDSS_TRACE_CONFIG_DOWNLOAD_RESP_V01 0x0044
#define QMI_WLFW_SOC_WAKE_RESP_V01 0x004F
#define QMI_WLFW_GET_INFO_RESP_V01 0x004A
#define QMI_WLFW_PCIE_GEN_SWITCH_RESP_V01 0x0053
#define QMI_WLFW_INI_REQ_V01 0x002F
#define QMI_WLFW_M3_DUMP_UPLOAD_SEGMENTS_REQ_IND_V01 0x0054
#define QMI_WLFW_MSA_READY_REQ_V01 0x002E
#define QMI_WLFW_M3_DUMP_UPLOAD_DONE_REQ_V01 0x004E
#define QMI_WLFW_CAP_RESP_V01 0x0024
#define QMI_WLFW_REJUVENATE_ACK_REQ_V01 0x003A
#define QMI_WLFW_ATHDIAG_READ_RESP_V01 0x0030
#define QMI_WLFW_ANTENNA_SWITCH_RESP_V01 0x0047
#define QMI_WLFW_DEVICE_INFO_REQ_V01 0x004C
#define QMI_WLFW_MSA_INFO_REQ_V01 0x002D
#define QMI_WLFW_HOST_CAP_REQ_V01 0x0034
#define QMI_WLFW_QDSS_TRACE_CONFIG_DOWNLOAD_REQ_V01 0x0044
#define QMI_WLFW_GET_INFO_REQ_V01 0x004A
#define QMI_WLFW_CAL_DONE_IND_V01 0x003E
#define QMI_WLFW_M3_DUMP_UPLOAD_REQ_IND_V01 0x004D
#define QMI_WLFW_WFC_CALL_STATUS_RESP_V01 0x0049
#define QMI_WLFW_FW_INIT_DONE_IND_V01 0x0038
#define QMI_WLFW_POWER_SAVE_REQ_V01 0x0050
#define QMI_WLFW_XO_CAL_IND_V01 0x003D
#define QMI_WLFW_SHUTDOWN_RESP_V01 0x0043
#define QMI_WLFW_ATHDIAG_READ_REQ_V01 0x0030
#define QMI_WLFW_WFC_CALL_TWT_CONFIG_IND_V01 0x0051
#define QMI_WLFW_WLAN_MODE_RESP_V01 0x0022
#define QMI_WLFW_WFC_CALL_STATUS_REQ_V01 0x0049
#define QMI_WLFW_DEVICE_INFO_RESP_V01 0x004C
#define QMI_WLFW_MSA_READY_RESP_V01 0x002E
#define QMI_WLFW_QDSS_TRACE_FREE_IND_V01 0x0046
#define QMI_WLFW_QDSS_MEM_READY_IND_V01 0x0052
#define QMI_WLFW_MAX_NUM_CE_V01 12
#define QMI_WLFW_MAX_NUM_SVC_V01 24
#define QMI_WLFW_MAX_DATA_SIZE_V01 6144
#define QMI_WLFW_MAX_NUM_CAL_V01 5
#define QMI_WLFW_MAX_STR_LEN_V01 16
#define QMI_WLFW_MAX_NUM_SHADOW_REG_V01 24
#define QMI_WLFW_MAX_NUM_SHADOW_REG_V2_V01 36
#define QMI_WLFW_MAX_NUM_MEMORY_REGIONS_V01 2
#define QMI_WLFW_MAX_NUM_MEM_CFG_V01 2
#define QMI_WLFW_MAX_NUM_MEM_SEG_V01 52
#define QMI_WLFW_MAX_TIMESTAMP_LEN_V01 32
#define QMI_WLFW_MAC_ADDR_SIZE_V01 6
#define QMI_WLFW_MAX_BUILD_ID_LEN_V01 128
#define QMI_WLFW_FUNCTION_NAME_LEN_V01 128
#define QMI_WLFW_MAX_ATHDIAG_DATA_SIZE_V01 6144
#define QMI_WLFW_MAX_NUM_GPIO_V01 32
#define QMI_WLFW_MAX_WFC_CALL_STATUS_DATA_SIZE_V01 256
#define QMI_WLFW_MAX_PLATFORM_NAME_LEN_V01 64
#define QMI_WLFW_MAX_HOST_DDR_RANGE_SIZE_V01 3
#define QMI_WLFW_MAX_M3_SEGMENTS_SIZE_V01 10
#define QMI_WLFW_MAX_NUM_SHADOW_REG_V01 24
#define QMI_WLFW_MAX_BUILD_ID_LEN_V01 128
#define QMI_WLFW_MAX_DEV_MEM_NUM_V01 4
#define QMI_WLFW_MAX_NUM_MLO_CHIPS_V01 3
#define QMI_WLFW_MAX_NUM_MLO_LINKS_PER_CHIP_V01 2
#define QMI_WLFW_MAX_NUM_SVC_V01 24
#define QMI_WLFW_MAX_NUM_MEMORY_REGIONS_V01 2
#define QMI_WLFW_MAC_ADDR_SIZE_V01 6
#define QMI_WLFW_MAX_NUM_MEM_CFG_V01 2
#define QMI_WLFW_MAX_NUM_MEM_SEG_V01 52
#define QMI_WLFW_MAX_WFC_CALL_STATUS_DATA_SIZE_V01 256
#define QMI_WLFW_MAX_DATA_SIZE_V01 6144
#define QMI_WLFW_FUNCTION_NAME_LEN_V01 128
#define QMI_WLFW_MAX_NUM_CE_V01 12
#define QMI_WLFW_MAX_TIMESTAMP_LEN_V01 32
#define QMI_WLFW_MAX_M3_SEGMENTS_SIZE_V01 10
#define QMI_WLFW_MAX_STR_LEN_V01 16
#define QMI_WLFW_MAX_NUM_SHADOW_REG_V2_V01 36
#define QMI_WLFW_MAX_ATHDIAG_DATA_SIZE_V01 6144
#define QMI_WLFW_MAX_NUM_GPIO_V01 32
#define QMI_WLFW_MAX_NUM_MLO_CHIPS_V01 3
enum wlfw_driver_mode_enum_v01 {
WLFW_DRIVER_MODE_ENUM_MIN_VAL_V01 = INT_MIN,
@ -165,6 +165,7 @@ enum wlfw_mem_type_enum_v01 {
QMI_WLFW_MEM_QDSS_V01 = 6,
QMI_WLFW_MEM_HANG_DATA_V01 = 7,
QMI_WLFW_MLO_GLOBAL_MEM_V01 = 8,
QMI_WLFW_PAGEABLE_MEM_V01 = 9,
WLFW_MEM_TYPE_ENUM_MAX_VAL_V01 = INT_MAX,
};
@ -795,9 +796,17 @@ struct wlfw_host_cap_req_msg_v01 {
struct wlfw_host_mlo_chip_info_s_v01 mlo_chip_info[QMI_WLFW_MAX_NUM_MLO_CHIPS_V01];
u8 feature_list_valid;
u64 feature_list;
u8 num_wlan_clients_valid;
u16 num_wlan_clients;
u8 num_wlan_vaps_valid;
u8 num_wlan_vaps;
u8 wake_msi_addr_valid;
u32 wake_msi_addr;
u8 wlan_enable_delay_valid;
u32 wlan_enable_delay;
};
#define WLFW_HOST_CAP_REQ_MSG_V01_MAX_MSG_LEN 373
#define WLFW_HOST_CAP_REQ_MSG_V01_MAX_MSG_LEN 396
extern struct qmi_elem_info wlfw_host_cap_req_msg_v01_ei[];
struct wlfw_host_cap_resp_msg_v01 {

View file

@ -1395,7 +1395,7 @@ static void msm_pcie_write_reg(void __iomem *base, u32 offset, u32 value)
static void msm_pcie_write_reg_field(void __iomem *base, u32 offset,
const u32 mask, u32 val)
{
u32 shift = find_first_bit((void *)&mask, 32);
u32 shift = __ffs(mask);
u32 tmp = readl_relaxed(base + offset);
tmp &= ~mask; /* clear written bits */

View file

@ -1286,7 +1286,7 @@ static const char * const qup5_groups[] = {
"gpio24", "gpio25", "gpio26", "gpio27",
};
static const char * const qup6_groups[] = {
"gpio28", "gpio29", "gpio30", "gpio31",
"gpio28", "gpio29", "gpio30", "gpio31", "gpio6",
};
static const char * const qup7_groups[] = {
"gpio32", "gpio33", "gpio34", "gpio35",
@ -1609,7 +1609,7 @@ static const struct msm_pingroup lahaina_groups[] = {
[3] = PINGROUP(3, qup13, qup_l5, NA, NA, NA, NA, NA, NA, NA, 0, -1),
[4] = PINGROUP(4, qup0, NA, NA, NA, NA, NA, NA, NA, NA, 0, -1),
[5] = PINGROUP(5, qup0, NA, NA, NA, NA, NA, NA, NA, NA, 0, -1),
[6] = PINGROUP(6, qup0, qup_l4, NA, NA, NA, NA, NA, NA, NA, 0, -1),
[6] = PINGROUP(6, qup0, qup6, NA, NA, NA, NA, NA, NA, NA, 0, -1),
[7] = PINGROUP(7, qup0, qup_l5, NA, NA, NA, NA, NA, NA, NA, 0xCB000, 0),
[8] = PINGROUP(8, qup1, NA, NA, NA, NA, NA, NA, NA, NA, 0, -1),
[9] = PINGROUP(9, qup1, NA, NA, NA, NA, NA, NA, NA, NA, 0, -1),

View file

@ -3352,9 +3352,12 @@ static void icnss_wpss_load(struct work_struct *wpss_load_work)
{
struct icnss_priv *priv = icnss_get_plat_priv();
icnss_pr_dbg("Start WPSS Boot\n");
priv->subsys = subsystem_get("wpss");
if (IS_ERR_OR_NULL(priv->subsys))
icnss_pr_err("Failed to load wpss subsys");
icnss_pr_err("Failed to load wpss subsys, ret: %d",
PTR_ERR(priv->subsys));
}
static inline void icnss_wpss_unload(struct icnss_priv *priv)
@ -3390,11 +3393,33 @@ static ssize_t wpss_boot_store(struct device *dev,
return count;
}
static ssize_t wlan_en_delay_store(struct device *dev,
struct device_attribute *attr,
const char *buf, size_t count)
{
struct icnss_priv *priv = dev_get_drvdata(dev);
uint32_t wlan_en_delay = 0;
if (priv->device_id != WCN6750_DEVICE_ID)
return count;
if (sscanf(buf, "%du", &wlan_en_delay) != 1) {
icnss_pr_err("Failed to read wlan_en_delay");
return -EINVAL;
}
icnss_pr_dbg("WLAN_EN delay: %dms", wlan_en_delay);
priv->wlan_en_delay_ms = wlan_en_delay;
return count;
}
static DEVICE_ATTR_WO(qdss_tr_start);
static DEVICE_ATTR_WO(qdss_tr_stop);
static DEVICE_ATTR_WO(qdss_conf_download);
static DEVICE_ATTR_WO(hw_trc_override);
static DEVICE_ATTR_WO(wpss_boot);
static DEVICE_ATTR_WO(wlan_en_delay);
static struct attribute *icnss_attrs[] = {
&dev_attr_qdss_tr_start.attr,
@ -3402,6 +3427,7 @@ static struct attribute *icnss_attrs[] = {
&dev_attr_qdss_conf_download.attr,
&dev_attr_hw_trc_override.attr,
&dev_attr_wpss_boot.attr,
&dev_attr_wlan_en_delay.attr,
NULL,
};

View file

@ -454,6 +454,7 @@ struct icnss_priv {
u32 hw_trc_override;
struct icnss_dms_data dms;
u8 use_nv_mac;
u32 wlan_en_delay_ms;
};
struct icnss_reg_info {

View file

@ -656,7 +656,9 @@ int wlfw_cap_send_sync_msg(struct icnss_priv *priv)
goto out;
}
ret = qmi_txn_wait(&txn, priv->ctrl_params.qmi_timeout);
ret = qmi_txn_wait(&txn,
priv->ctrl_params.qmi_timeout +
msecs_to_jiffies(priv->wlan_en_delay_ms));
if (ret < 0) {
icnss_qmi_fatal_err("Capability resp wait failed with ret %d\n",
ret);
@ -1409,7 +1411,9 @@ int wlfw_wlan_mode_send_sync_msg(struct icnss_priv *priv,
goto out;
}
ret = qmi_txn_wait(&txn, priv->ctrl_params.qmi_timeout);
ret = qmi_txn_wait(&txn,
priv->ctrl_params.qmi_timeout +
msecs_to_jiffies(priv->wlan_en_delay_ms));
if (ret < 0) {
icnss_qmi_fatal_err("Mode resp wait failed with ret %d\n", ret);
goto out;
@ -3132,6 +3136,13 @@ int wlfw_host_cap_send_sync(struct icnss_priv *priv)
req->host_build_type_valid = 1;
req->host_build_type = icnss_get_host_build_type();
if (priv->wlan_en_delay_ms >= 100) {
icnss_pr_dbg("Setting WLAN_EN delay: %d ms\n",
priv->wlan_en_delay_ms);
req->wlan_enable_delay_valid = 1;
req->wlan_enable_delay = priv->wlan_en_delay_ms;
}
ret = qmi_txn_init(&priv->qmi, &txn,
wlfw_host_cap_resp_msg_v01_ei, resp);
if (ret < 0) {

View file

@ -1197,6 +1197,7 @@ int pil_boot(struct pil_desc *desc)
if (desc->shutdown_fail)
pil_err(desc, "Subsystem shutdown failed previously!\n");
desc->clear_fw_region = true;
/* Reinitialize for new image */
pil_release_mmap(desc);
@ -1250,6 +1251,8 @@ int pil_boot(struct pil_desc *desc)
if (desc->ops->init_image)
ret = desc->ops->init_image(desc, fw->data, fw->size);
if (ret) {
/* S2 mapping not yet done */
desc->clear_fw_region = false;
pil_err(desc, "Initializing image failed(rc:%d)\n", ret);
goto err_boot;
}
@ -1259,6 +1262,8 @@ int pil_boot(struct pil_desc *desc)
ret = desc->ops->mem_setup(desc, priv->region_start,
priv->region_end - priv->region_start);
if (ret) {
/* S2 mapping is failed */
desc->clear_fw_region = false;
pil_err(desc, "Memory setup error(rc:%d)\n", ret);
goto err_deinit_image;
}

View file

@ -1,6 +1,6 @@
/* SPDX-License-Identifier: GPL-2.0-only */
/*
* Copyright (c) 2019 The Linux Foundation. All rights reserved.
* Copyright (c) 2019, 2021 The Linux Foundation. All rights reserved.
*/
#undef TRACE_SYSTEM
@ -59,29 +59,29 @@ TRACE_EVENT(hyp_assign_batch_start,
TP_STRUCT__entry(
__field(int, info_nelems)
__field(u64, batch_size)
__dynamic_array(phys_addr_t, addrs, info_nelems)
__dynamic_array(u64, addrs, info_nelems)
__dynamic_array(u64, sizes, info_nelems)
),
TP_fast_assign(
unsigned int i;
phys_addr_t *addr_arr_ptr = __get_dynamic_array(addrs);
u64 *addr_arr_ptr = __get_dynamic_array(addrs);
u64 *sizes_arr_ptr = __get_dynamic_array(sizes);
__entry->info_nelems = info_nelems;
__entry->batch_size = 0;
for (i = 0; i < info_nelems; i++) {
addr_arr_ptr[i] = info[i].mem_addr;
sizes_arr_ptr[i] = info[i].mem_size;
__entry->batch_size += info[i].mem_size;
addr_arr_ptr[i] = le64_to_cpu(info[i].mem_addr);
sizes_arr_ptr[i] = le64_to_cpu(info[i].mem_size);
__entry->batch_size += le64_to_cpu(info[i].mem_size);
}
),
TP_printk("num entries: %d batch size: %llu phys addrs: %s sizes: %s",
__entry->info_nelems, __entry->batch_size,
__print_array(__get_dynamic_array(addrs),
__entry->info_nelems, sizeof(phys_addr_t)),
__entry->info_nelems, sizeof(u64)),
__print_array(__get_dynamic_array(sizes),
__entry->info_nelems, sizeof(u64))
)

View file

@ -1,6 +1,6 @@
// SPDX-License-Identifier: GPL-2.0-only
/*
* Copyright (c) 2017-2020, The Linux Foundation. All rights reserved.
* Copyright (c) 2017-2021, The Linux Foundation. All rights reserved.
*/
#include <asm/arch_timer.h>
@ -371,28 +371,23 @@ static int tsens_dbg_log_bus_id_data(struct tsens_device *data,
offset += TSENS_DEBUG_OFFSET_ROW;
}
loop = 0;
while (loop < TSENS_DEBUG_LOOP_COUNT) {
offset = TSENS_DEBUG_OFFSET_ROW *
TSENS_DEBUG_STATUS_REG_START;
TSENS_DUMP(tmdev, "Start of TSENS TM dump %d\n",
loop);
/* Limited dump of the registers for the temperature */
for (i = 0; i < TSENS_DEBUG_LOOP_COUNT; i++) {
r1 = readl_relaxed(controller_id_addr + offset);
r2 = readl_relaxed(controller_id_addr +
(offset + TSENS_DEBUG_OFFSET_WORD1));
r3 = readl_relaxed(controller_id_addr +
(offset + TSENS_DEBUG_OFFSET_WORD2));
r4 = readl_relaxed(controller_id_addr +
(offset + TSENS_DEBUG_OFFSET_WORD3));
offset = TSENS_DEBUG_OFFSET_ROW *
TSENS_DEBUG_STATUS_REG_START;
TSENS_DUMP(tmdev, "%s", "Start of TSENS TM dump\n");
/* Limited dump of the registers for the temperature */
for (i = 0; i < TSENS_DEBUG_LOOP_COUNT; i++) {
r1 = readl_relaxed(controller_id_addr + offset);
r2 = readl_relaxed(controller_id_addr +
(offset + TSENS_DEBUG_OFFSET_WORD1));
r3 = readl_relaxed(controller_id_addr +
(offset + TSENS_DEBUG_OFFSET_WORD2));
r4 = readl_relaxed(controller_id_addr +
(offset + TSENS_DEBUG_OFFSET_WORD3));
TSENS_DUMP(tmdev,
"ctrl:%d:0x%08x 0x%08x 0x%08x 0x%08x 0x%08x\n",
cntrl_id, offset, r1, r2, r3, r4);
offset += TSENS_DEBUG_OFFSET_ROW;
}
loop++;
offset += TSENS_DEBUG_OFFSET_ROW;
}
return 0;

View file

@ -1,6 +1,6 @@
// SPDX-License-Identifier: GPL-2.0-only
/*
* Copyright (c) 2012-2020, The Linux Foundation. All rights reserved.
* Copyright (c) 2012-2021, The Linux Foundation. All rights reserved.
*/
#include <linux/module.h>
@ -51,7 +51,7 @@
#define TSENS_TM_0C_THR_OFFSET 12
#define TSENS_TM_CODE_SIGN_BIT 0x800
#define TSENS_TM_SCALE_DECI_MILLIDEG 100
#define TSENS_DEBUG_WDOG_TRIGGER_COUNT 5
#define TSENS_DEBUG_WDOG_TRIGGER_COUNT 100
#define TSENS_TM_WATCHDOG_LOG(n) ((n) + 0x13c)
#define TSENS_TM_WATCHDOG_LOG_v23(n) ((n) + 0x170)
#define TSENS_EN BIT(0)
@ -515,7 +515,7 @@ fail:
static irqreturn_t tsens_tm_critical_irq_thread(int irq, void *data)
{
struct tsens_device *tm = data;
unsigned int i, status, wd_log, wd_mask;
unsigned int i, status, wd_log, wd_mask, wd_status;
unsigned long flags;
void __iomem *sensor_status_addr, *sensor_int_mask_addr;
void __iomem *sensor_critical_addr;
@ -532,6 +532,8 @@ static irqreturn_t tsens_tm_critical_irq_thread(int irq, void *data)
wd_log_addr = TSENS_TM_WATCHDOG_LOG_v23(tm->tsens_tm_addr);
else
wd_log_addr = TSENS_TM_WATCHDOG_LOG(tm->tsens_tm_addr);
wd_status = readl_relaxed(wd_critical_addr);
TSENS_DBG(tm, "Critical irq status:%d\n", wd_status);
if (tm->ctrl_data->wd_bark) {
wd_mask = readl_relaxed(wd_critical_addr);

View file

@ -106,7 +106,7 @@
#define STALE_TIMEOUT (16)
#define STALE_COUNT (DEFAULT_BITS_PER_CHAR * STALE_TIMEOUT)
#define SEC_TO_USEC (1000000)
#define SYSTEM_DELAY (500)
#define STALE_DELAY (10000) //10msec
#define DEFAULT_BITS_PER_CHAR (10)
#define GENI_UART_NR_PORTS (6)
#define GENI_UART_CONS_PORTS (1)
@ -1559,7 +1559,6 @@ static int stop_rx_sequencer(struct uart_port *uport)
struct msm_geni_serial_port *port = GET_DEV_PORT(uport);
unsigned long flags = 0;
bool is_rx_active;
unsigned int stale_delay;
u32 dma_rx_status, s_irq_status;
int usage_count;
@ -1576,15 +1575,12 @@ static int stop_rx_sequencer(struct uart_port *uport)
if (!uart_console(uport)) {
/*
* Wait for the stale timeout to happen if there
* is any data pending in the rx fifo.
* Have a safety factor of 2 to include the interrupt
* and system latencies, add 500usec delay for interrupt
* latency or system delay.
* Wait for the stale timeout around 10msec to happen
* if there is any data pending in the rx fifo.
* This will help to handle incoming rx data in stop_rx_sequencer
* for interrupt latency or system delay cases.
*/
stale_delay = (STALE_COUNT * SEC_TO_USEC) / port->cur_baud;
stale_delay = (2 * stale_delay) + SYSTEM_DELAY;
udelay(stale_delay);
udelay(STALE_DELAY);
dma_rx_status = geni_read_reg_nolog(uport->membase,
SE_DMA_RX_IRQ_STAT);

View file

@ -63,6 +63,7 @@ extern unsigned int sysctl_walt_rtg_cfs_boost_prio;
extern unsigned int sysctl_walt_low_latency_task_threshold;
extern unsigned int sysctl_sched_sync_hint_enable;
extern unsigned int sysctl_walt_cpu_high_irqload;
extern unsigned int sysctl_sched_asym_cap_sibling_freq_match_en;
extern int
walt_proc_group_thresholds_handler(struct ctl_table *table, int write,

View file

@ -2618,13 +2618,17 @@ struct ipa_ioc_gsb_info {
#define IPA_PCIE0_EP_ID 21
#define IPA_PCIE1_EP_ID 22
#define IPA_ETH0_EP_ID 31
#define IPA_ETH1_EP_ID 32
enum ipa_peripheral_ep_type {
IPA_DATA_EP_TYP_RESERVED = 0,
IPA_DATA_EP_TYP_HSIC = 1,
IPA_DATA_EP_TYP_HSUSB = 2,
IPA_DATA_EP_TYP_PCIE = 3,
IPA_DATA_EP_TYP_EMBEDDED = 4,
IPA_DATA_EP_TYP_BAM_DMUX,
IPA_DATA_EP_TYP_BAM_DMUX = 5,
IPA_DATA_EP_TYP_ETH,
};
struct ipa_ep_pair_info {
@ -3206,6 +3210,7 @@ enum ipacm_hw_index_counter_virtual_type {
* @pdn_cfg_type: type of the pdn config applied.
* @enable: enable/disable pdn config type.
* @u.collison_cfg.pdn_ip_addr: pdn_ip_address used in collision config.
* @u.collison_cfg.vlan_id; VLAN ID of the client.
* @u.passthrough_cfg.pdn_ip_addr: pdn_ip_address used in passthrough config.
* @u.passthrough_cfg.device_type: Device type of the client.
* @u.passthrough_cfg.vlan_id: VLAN ID of the client.
@ -3221,6 +3226,7 @@ struct ipa_ioc_pdn_config {
union {
struct ipa_pdn_ip_collision_cfg {
__u32 pdn_ip_addr;
__u16 vlan_id;
} collison_cfg;
struct ipa_pdn_ip_passthrough_cfg {

View file

@ -119,6 +119,9 @@ unsigned int sysctl_sched_walt_rotate_big_tasks;
unsigned int walt_rotation_enabled;
__read_mostly unsigned int sysctl_sched_asym_cap_sibling_freq_match_pct = 100;
__read_mostly unsigned int sysctl_sched_asym_cap_sibling_freq_match_en;
static cpumask_t asym_freq_match_cpus = CPU_MASK_NONE;
__read_mostly unsigned int sched_ravg_hist_size = 5;
static __read_mostly unsigned int sched_io_is_busy = 1;
@ -645,23 +648,31 @@ __cpu_util_freq_walt(int cpu, struct walt_cpu_load *walt_load)
unsigned long
cpu_util_freq_walt(int cpu, struct walt_cpu_load *walt_load)
{
struct walt_cpu_load wl_other = {0};
unsigned long util = 0, util_other = 0;
static unsigned long util_other;
static struct walt_cpu_load wl_other;
unsigned long util = 0;
unsigned long capacity = capacity_orig_of(cpu);
int i, mpct = sysctl_sched_asym_cap_sibling_freq_match_pct;
int mpct = sysctl_sched_asym_cap_sibling_freq_match_pct;
int max_cap_cpu;
if (!cpumask_test_cpu(cpu, &asym_cap_sibling_cpus))
if (!cpumask_test_cpu(cpu, &asym_cap_sibling_cpus) &&
!(sysctl_sched_asym_cap_sibling_freq_match_en &&
cpumask_test_cpu(cpu, &asym_freq_match_cpus)))
return __cpu_util_freq_walt(cpu, walt_load);
for_each_cpu(i, &asym_cap_sibling_cpus) {
if (i == cpu)
util = __cpu_util_freq_walt(cpu, walt_load);
else
util_other = __cpu_util_freq_walt(i, &wl_other);
}
/* FIXME: Prime always last cpu */
max_cap_cpu = cpumask_last(&asym_freq_match_cpus);
util = __cpu_util_freq_walt(cpu, walt_load);
if (cpu == cpumask_last(&asym_cap_sibling_cpus))
if (cpu != max_cap_cpu) {
if (cpumask_first(&asym_freq_match_cpus) == cpu)
util_other =
__cpu_util_freq_walt(max_cap_cpu, &wl_other);
else
goto out;
} else {
mpct = 100;
}
util = ADJUSTED_ASYM_CAP_CPU_UTIL(util, util_other, mpct);
@ -669,6 +680,18 @@ cpu_util_freq_walt(int cpu, struct walt_cpu_load *walt_load)
mpct);
walt_load->pl = ADJUSTED_ASYM_CAP_CPU_UTIL(walt_load->pl, wl_other.pl,
mpct);
out:
if (cpu != max_cap_cpu) {
if (util > util_other) {
util_other = util;
wl_other.nl = walt_load->nl;
}
if (wl_other.pl < walt_load->pl)
wl_other.pl = walt_load->pl;
} else {
util_other = 0;
memset(&wl_other, 0, sizeof(wl_other));
}
return (util >= capacity) ? capacity : util;
}
@ -2616,6 +2639,14 @@ void walt_update_cluster_topology(void)
&asym_cap_sibling_cpus, &cluster->cpus);
}
if (num_sched_clusters > 2) {
for_each_sched_cluster(cluster) {
if (!is_min_capacity_cluster(cluster))
cpumask_or(&asym_freq_match_cpus,
&asym_freq_match_cpus, &cluster->cpus);
}
}
if (cpumask_weight(&asym_cap_sibling_cpus) == 1)
cpumask_clear(&asym_cap_sibling_cpus);
@ -3426,6 +3457,13 @@ void walt_irq_work(struct irq_work *irq_work)
int level = 0;
u64 cur_jiffies_ts;
unsigned long flags;
struct cpumask freq_match_cpus;
if (sysctl_sched_asym_cap_sibling_freq_match_en &&
!cpumask_empty(&asym_freq_match_cpus))
cpumask_copy(&freq_match_cpus, &asym_freq_match_cpus);
else
cpumask_copy(&freq_match_cpus, &asym_cap_sibling_cpus);
/* Am I the window rollover work or the migration work? */
if (irq_work == &walt_migration_irq_work)
@ -3457,7 +3495,7 @@ void walt_irq_work(struct irq_work *irq_work)
rq->wrq.grp_time.prev_runnable_sum;
}
if (is_migration && rq->wrq.notif_pending &&
cpumask_test_cpu(cpu, &asym_cap_sibling_cpus)) {
cpumask_test_cpu(cpu, &freq_match_cpus)) {
is_asym_migration = true;
rq->wrq.notif_pending = false;
}
@ -3472,11 +3510,11 @@ void walt_irq_work(struct irq_work *irq_work)
}
if (total_grp_load) {
if (cpumask_weight(&asym_cap_sibling_cpus)) {
if (cpumask_weight(&freq_match_cpus)) {
u64 big_grp_load =
total_grp_load - min_cluster_grp_load;
for_each_cpu(cpu, &asym_cap_sibling_cpus)
for_each_cpu(cpu, &freq_match_cpus)
cpu_cluster(cpu)->aggr_grp_load = big_grp_load;
}
rtgb_active = is_rtgb_active();
@ -3508,7 +3546,7 @@ void walt_irq_work(struct irq_work *irq_work)
}
if (is_asym_migration && cpumask_test_cpu(cpu,
&asym_cap_sibling_cpus))
&freq_match_cpus))
flag |= SCHED_CPUFREQ_INTERCLUSTER_MIG;
if (i == num_cpus)

View file

@ -461,6 +461,15 @@ static struct ctl_table kern_table[] = {
.extra1 = SYSCTL_ONE,
.extra2 = &one_hundred,
},
{
.procname = "sched_asym_cap_sibling_freq_match_enable",
.data = &sysctl_sched_asym_cap_sibling_freq_match_en,
.maxlen = sizeof(unsigned int),
.mode = 0644,
.proc_handler = proc_dointvec_minmax,
.extra1 = SYSCTL_ZERO,
.extra2 = SYSCTL_ONE,
},
{
.procname = "sched_coloc_downmigrate_ns",
.data = &sysctl_sched_coloc_downmigrate_ns,