mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-11 23:24:22 -04:00
Merge 1ca91eb817 on remote branch
Change-Id: I12ec90de40066ad84ea782b5365c3483e7c22420
This commit is contained in:
commit
02b289635f
42 changed files with 4054 additions and 1107 deletions
|
|
@ -1 +1 @@
|
|||
LTS_5.4.86_fe9e8630bfaf
|
||||
LTS_5.4.86_8eb841225953
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
-->
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
1846
android/abi_gki_aarch64_sonywalkman
Normal file
1846
android/abi_gki_aarch64_sonywalkman
Normal file
File diff suppressed because it is too large
Load diff
1
arch/arm64/configs/vendor/holi_GKI.config
vendored
1
arch/arm64/configs/vendor/holi_GKI.config
vendored
|
|
@ -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
|
||||
|
|
|
|||
1
arch/arm64/configs/vendor/holi_QGKI.config
vendored
1
arch/arm64/configs/vendor/holi_QGKI.config
vendored
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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, ×tamp_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, ×tamp_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, ×tamp_retired);
|
||||
|
||||
kgsl_readtimestamp(ktimeline->device, context,
|
||||
KGSL_TIMESTAMP_QUEUED, ×tamp_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 = {
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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++) {
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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, ¤t_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;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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) ||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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 |
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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 */
|
||||
|
|
|
|||
|
|
@ -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),
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Reference in a new issue