Merge android11-5.4.61+ (54e6ca5
) into msm-5.4
* refs/heads/tmp-54e6ca5: ANDROID: ABI: Update allowed list for EXYNOS ANDROID: GKI: add abi_gki_aarch64_oneplus ANDROID: GKI: prevent removal of monitored symbols ANDROID: ABI: Update allowed list for QCOM ANDROID: ABI: Update allowed list for EXYNOS ANDROID: GKI: add abi_gki_aarch64_galaxy UPSTREAM: module: Correctly truncate sysfs sections output Revert "ANDROID: Revert "module: Do not expose section addresses to non-CAP_SYSLOG"" Revert "ANDROID: Revert "module: Refactor section attr into bin attribute"" Revert "ANDROID: vendor_hooks: Add vendor hooks for key combination" Revert "ANDROID: fix i386 build break" ANDROID: fix i386 build break ANDROID: vendor_hooks: Add vendor hooks for key combination ANDROID: ABI: Update allowed list for QCOM FROMLIST: power: supply: core: property to control reverse charge FROMLIST: power: supply: core: add wireless signal strength property FROMLIST: power: supply: core: add wireless charger adapter type property FROMLIST: power: supply: core: add quick charge type property Conflicts: android/abi_gki_aarch64_qcom Change-Id: I97977300f5ba7dfb546835a94637b25b551edcbf Signed-off-by: Blagovest Kolenichev <bkolenichev@codeaurora.org>
This commit is contained in:
commit
3e8eac8366
@ -709,3 +709,88 @@ Description:
|
||||
|
||||
Access: Read
|
||||
Valid values: 1-31
|
||||
|
||||
What: /sys/class/power_supply/<supply_name>/quick_charge_type
|
||||
Date: Jul 2020
|
||||
Contact: Fei Jiang <jiangfei1@xiaomi.com>
|
||||
Description:
|
||||
Reports the kind of quick charge type based on different adapter power.
|
||||
Different quick charge type represent different charging power.
|
||||
QUICK_CHARGE_NORMAL : Charging Power <= 10W
|
||||
QUICK_CHARGE_FAST : 10W < Charging Power <= 20W
|
||||
QUICK_CHARGE_FLASH : 20W < Charging Power <= 30W
|
||||
QUICK_CHARGE_TURBE : 30W < Charging Power <= 50W
|
||||
QUICK_CHARGE_SUPER : Charging Power > 50W
|
||||
|
||||
Access: Read-Only
|
||||
Valid values:
|
||||
0: QUICK_CHARGE_NORMAL,
|
||||
1: QUICK_CHARGE_FAST,
|
||||
2: QUICK_CHARGE_FLASH,
|
||||
3: QUICK_CHARGE_TURBE,
|
||||
4: QUICK_CHARGE_SUPER.
|
||||
|
||||
===== Wireless Charger Properties =====
|
||||
What: /sys/class/power_supply/<supply_name>/tx_adapter
|
||||
Date: Jul 2020
|
||||
Contact: Fei Jiang <jiangfei1@xiaomi.com>
|
||||
Description:
|
||||
Reports the type of wireless adapter connection is currently active for
|
||||
the supply, for example it can show if ADAPTER_PD capable source
|
||||
is attached. Expect common wireless adapter type, also increase by
|
||||
some vendor private adapter type(ex. ADAPTER_PD_40W).
|
||||
|
||||
Access: Read-Only
|
||||
Valid values:
|
||||
0: ADAPTER_NONE,
|
||||
1: ADAPTER_SDP,
|
||||
2: ADAPTER_DCP,
|
||||
3: ADAPTER_CDP,
|
||||
4: ADAPTER_OCP,
|
||||
5: ADAPTER_QC2,
|
||||
6: ADAPTER_QC3,
|
||||
7: ADAPTER_PD,
|
||||
8: ADAPTER_AUTH_FAILED,
|
||||
9: ADAPTER_PRIVATE_QC3,
|
||||
10: ADAPTER_PRIVATE_PD,
|
||||
11: ADAPTER_CAR_POWER,
|
||||
12: ADAPTER_PRIVATE_PD_40W,
|
||||
13: ADAPTER_VOICE_BOX,
|
||||
14: ADAPTER_PRIVATE_PD_50W.
|
||||
|
||||
What: /sys/class/power_supply/<supply_name>/signal_strength
|
||||
Date: Jul 2020
|
||||
Contact: Fei Jiang <jiangfei1@xiaomi.com>
|
||||
Description:
|
||||
In PING phase, RX transmits a signal strength packet as the
|
||||
first communication packet to instruct the base to keep power
|
||||
signal on.The value reports wireless signal strength and show
|
||||
degree of coupling.
|
||||
|
||||
The Qi Wireless Power Transfer System is published by the
|
||||
Wireless Power Consortium.The ping phase is the necessary stage
|
||||
for matching transmitter and receiver. In this phase,the Power
|
||||
Transmitter executes a Digital Ping, and listens for a response.
|
||||
If the Power Transmitter discovers a Power Receiver, the Power
|
||||
Transmitter may extend the Digital Ping,i.e. maintain the Power
|
||||
Signal at the level of the Digital Ping. This causes the system
|
||||
to proceed to the identification & configuration phase. If the
|
||||
Power Transmitter does not extend the Digital Ping, the system
|
||||
shall revert to the selection phase.
|
||||
|
||||
Access: Read-Only
|
||||
Valid values: 0 - 100
|
||||
|
||||
What: /sys/class/power_supply/<supply_name>/reverse_chg_mode
|
||||
Date: Jul 2020
|
||||
Contact: Fei Jiang <jiangfei1@xiaomi.com>
|
||||
Description:
|
||||
Some devices support wireless reverse charge function which
|
||||
charge other devices.The property provider interface to
|
||||
enable/disable wireless reverse charge.If enabled, start TX
|
||||
mode and detect RX. Disabled when timeout or manual setting.
|
||||
|
||||
Access: Read, Write
|
||||
Valid values:
|
||||
- 1: enabled
|
||||
- 0: disabled
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -147,11 +147,14 @@
|
||||
cpufreq_register_driver
|
||||
cpufreq_register_notifier
|
||||
cpufreq_table_index_unsorted
|
||||
cpufreq_unregister_notifier
|
||||
__cpuhp_setup_state
|
||||
__cpuhp_setup_state_cpuslocked
|
||||
cpuhp_tasks_frozen
|
||||
cpu_hwcap_keys
|
||||
cpu_hwcaps
|
||||
cpuidle_pause_and_lock
|
||||
cpuidle_resume_and_unlock
|
||||
cpumask_next
|
||||
cpumask_next_and
|
||||
cpu_number
|
||||
@ -306,6 +309,7 @@
|
||||
dma_async_tx_descriptor_init
|
||||
dma_buf_attach
|
||||
dma_buf_begin_cpu_access
|
||||
dma_buf_begin_cpu_access_partial
|
||||
dma_buf_detach
|
||||
dma_buf_end_cpu_access
|
||||
dma_buf_end_cpu_access_partial
|
||||
@ -752,6 +756,7 @@
|
||||
netif_carrier_on
|
||||
netif_napi_add
|
||||
netif_receive_skb
|
||||
netif_receive_skb_list
|
||||
netif_rx
|
||||
netif_tx_wake_queue
|
||||
no_llseek
|
||||
@ -1310,6 +1315,12 @@
|
||||
tasklet_init
|
||||
tasklet_kill
|
||||
__tasklet_schedule
|
||||
tcp_register_congestion_control
|
||||
tcp_reno_cong_avoid
|
||||
tcp_reno_ssthresh
|
||||
tcp_reno_undo_cwnd
|
||||
tcp_slow_start
|
||||
tcp_unregister_congestion_control
|
||||
thermal_cooling_device_unregister
|
||||
thermal_of_cooling_device_register
|
||||
thermal_zone_device_update
|
||||
@ -1328,6 +1339,7 @@
|
||||
trace_event_reg
|
||||
trace_handle_return
|
||||
trace_output_call
|
||||
__tracepoint_android_vh_ipi_stop
|
||||
__tracepoint_android_vh_is_fpsimd_save
|
||||
__tracepoint_device_pm_callback_end
|
||||
__tracepoint_device_pm_callback_start
|
||||
|
2644
android/abi_gki_aarch64_galaxy
Normal file
2644
android/abi_gki_aarch64_galaxy
Normal file
File diff suppressed because it is too large
Load Diff
982
android/abi_gki_aarch64_oneplus
Normal file
982
android/abi_gki_aarch64_oneplus
Normal file
@ -0,0 +1,982 @@
|
||||
[abi_whitelist]
|
||||
# commonly used symbols
|
||||
add_timer
|
||||
alloc_chrdev_region
|
||||
__alloc_pages_nodemask
|
||||
__alloc_skb
|
||||
alloc_workqueue
|
||||
__arch_copy_from_user
|
||||
__arch_copy_to_user
|
||||
arm64_const_caps_ready
|
||||
atomic_notifier_call_chain
|
||||
atomic_notifier_chain_register
|
||||
atomic_notifier_chain_unregister
|
||||
__bitmap_clear
|
||||
bitmap_find_next_zero_area_off
|
||||
__bitmap_set
|
||||
blocking_notifier_call_chain
|
||||
blocking_notifier_chain_register
|
||||
blocking_notifier_chain_unregister
|
||||
bpf_trace_run1
|
||||
bpf_trace_run2
|
||||
bpf_trace_run3
|
||||
bpf_trace_run4
|
||||
bpf_trace_run5
|
||||
bpf_trace_run6
|
||||
bpf_trace_run7
|
||||
bus_find_device
|
||||
bus_for_each_dev
|
||||
bus_register
|
||||
bus_unregister
|
||||
cancel_delayed_work
|
||||
cancel_delayed_work_sync
|
||||
cancel_work_sync
|
||||
cdev_add
|
||||
cdev_alloc
|
||||
cdev_del
|
||||
cdev_init
|
||||
__check_object_size
|
||||
__class_create
|
||||
class_destroy
|
||||
__class_register
|
||||
class_unregister
|
||||
clk_bulk_disable
|
||||
clk_bulk_enable
|
||||
clk_bulk_prepare
|
||||
clk_bulk_put_all
|
||||
clk_bulk_unprepare
|
||||
clk_disable
|
||||
clk_enable
|
||||
clk_fixed_factor_ops
|
||||
clk_get
|
||||
__clk_get_hw
|
||||
clk_get_rate
|
||||
clk_hw_get_name
|
||||
clk_hw_get_num_parents
|
||||
clk_hw_get_rate
|
||||
clk_hw_is_prepared
|
||||
__clk_is_enabled
|
||||
__clk_mux_determine_rate_closest
|
||||
clk_prepare
|
||||
clk_put
|
||||
clk_round_rate
|
||||
clk_set_parent
|
||||
clk_set_rate
|
||||
clk_unprepare
|
||||
compat_alloc_user_space
|
||||
complete
|
||||
complete_all
|
||||
completion_done
|
||||
component_add
|
||||
component_bind_all
|
||||
component_del
|
||||
component_master_add_with_match
|
||||
component_master_del
|
||||
component_match_add_release
|
||||
component_unbind_all
|
||||
config_ep_by_speed
|
||||
config_group_init_type_name
|
||||
__const_udelay
|
||||
consume_skb
|
||||
contig_page_data
|
||||
_copy_from_iter_full
|
||||
cpu_hwcap_keys
|
||||
cpu_hwcaps
|
||||
cpumask_next
|
||||
cpu_number
|
||||
__cpu_online_mask
|
||||
__cpu_possible_mask
|
||||
__cpu_present_mask
|
||||
crc32_le
|
||||
_ctype
|
||||
delayed_work_timer_fn
|
||||
del_timer
|
||||
del_timer_sync
|
||||
destroy_workqueue
|
||||
dev_driver_string
|
||||
_dev_err
|
||||
devfreq_add_governor
|
||||
devfreq_remove_governor
|
||||
dev_fwnode
|
||||
dev_get_regmap
|
||||
device_add
|
||||
device_create
|
||||
device_create_bin_file
|
||||
device_create_file
|
||||
device_del
|
||||
device_destroy
|
||||
device_for_each_child
|
||||
device_get_next_child_node
|
||||
device_initialize
|
||||
device_init_wakeup
|
||||
device_match_fwnode
|
||||
device_property_present
|
||||
device_property_read_string
|
||||
device_property_read_u32_array
|
||||
device_register
|
||||
device_remove_file
|
||||
device_unregister
|
||||
_dev_info
|
||||
__dev_kfree_skb_any
|
||||
devm_add_action
|
||||
devm_clk_bulk_get_all
|
||||
devm_clk_get
|
||||
devm_clk_hw_register
|
||||
devm_clk_put
|
||||
devm_clk_register
|
||||
devm_extcon_dev_allocate
|
||||
devm_extcon_dev_register
|
||||
devm_free_irq
|
||||
devm_gpiod_get_optional
|
||||
devm_gpio_request_one
|
||||
devm_input_allocate_device
|
||||
devm_ioremap
|
||||
devm_ioremap_nocache
|
||||
devm_ioremap_resource
|
||||
devm_iounmap
|
||||
devm_kasprintf
|
||||
devm_kfree
|
||||
devm_kmalloc
|
||||
devm_kmemdup
|
||||
devm_kstrdup
|
||||
devm_led_classdev_register_ext
|
||||
devm_nvmem_cell_get
|
||||
devm_nvmem_device_get
|
||||
devm_nvmem_register
|
||||
devm_of_clk_add_hw_provider
|
||||
devm_of_platform_populate
|
||||
devm_of_pwm_get
|
||||
devm_phy_get
|
||||
devm_pinctrl_get
|
||||
devm_pinctrl_put
|
||||
devm_pinctrl_register
|
||||
__devm_regmap_init
|
||||
__devm_regmap_init_i2c
|
||||
__devm_regmap_init_mmio_clk
|
||||
devm_regulator_bulk_get
|
||||
devm_regulator_get
|
||||
devm_regulator_get_optional
|
||||
devm_regulator_put
|
||||
devm_regulator_register
|
||||
devm_request_any_context_irq
|
||||
devm_request_threaded_irq
|
||||
devm_reset_control_array_get
|
||||
__devm_reset_control_get
|
||||
devm_reset_controller_register
|
||||
devm_thermal_zone_of_sensor_register
|
||||
devm_usb_get_phy_by_phandle
|
||||
_dev_notice
|
||||
dev_pm_opp_add
|
||||
dev_pm_opp_find_freq_ceil
|
||||
dev_pm_opp_get_opp_count
|
||||
dev_pm_opp_get_voltage
|
||||
dev_pm_qos_add_request
|
||||
dev_pm_qos_remove_request
|
||||
dev_pm_qos_update_request
|
||||
devres_add
|
||||
devres_alloc_node
|
||||
devres_free
|
||||
devres_release
|
||||
dev_set_name
|
||||
_dev_warn
|
||||
disable_irq
|
||||
disable_irq_nosync
|
||||
dma_alloc_attrs
|
||||
dma_buf_attach
|
||||
dma_buf_begin_cpu_access
|
||||
dma_buf_begin_cpu_access_partial
|
||||
dma_buf_detach
|
||||
dma_buf_end_cpu_access
|
||||
dma_buf_end_cpu_access_partial
|
||||
dma_buf_fd
|
||||
dma_buf_get
|
||||
dma_buf_get_flags
|
||||
dma_buf_kmap
|
||||
dma_buf_kunmap
|
||||
dma_buf_map_attachment
|
||||
dma_buf_put
|
||||
dma_buf_unmap_attachment
|
||||
dma_buf_vmap
|
||||
dma_buf_vunmap
|
||||
dma_direct_map_page
|
||||
dma_direct_map_resource
|
||||
dma_direct_map_sg
|
||||
dma_direct_sync_sg_for_cpu
|
||||
dma_direct_sync_sg_for_device
|
||||
dma_direct_sync_single_for_cpu
|
||||
dma_direct_sync_single_for_device
|
||||
dma_direct_unmap_page
|
||||
dma_direct_unmap_sg
|
||||
dma_fence_add_callback
|
||||
dma_fence_array_ops
|
||||
dma_fence_context_alloc
|
||||
dma_fence_default_wait
|
||||
dma_fence_init
|
||||
dma_fence_release
|
||||
dma_fence_remove_callback
|
||||
dma_fence_signal
|
||||
dma_fence_signal_locked
|
||||
dma_fence_wait_timeout
|
||||
dma_free_attrs
|
||||
dma_get_sgtable_attrs
|
||||
dma_mmap_attrs
|
||||
dma_release_channel
|
||||
dma_request_slave_channel
|
||||
dma_set_coherent_mask
|
||||
dma_set_mask
|
||||
do_exit
|
||||
down_read
|
||||
down_write
|
||||
drain_workqueue
|
||||
driver_register
|
||||
driver_unregister
|
||||
drm_panel_notifier_register
|
||||
drm_panel_notifier_unregister
|
||||
enable_irq
|
||||
event_triggers_call
|
||||
extcon_get_edev_by_phandle
|
||||
extcon_get_state
|
||||
extcon_register_notifier
|
||||
extcon_set_state_sync
|
||||
fd_install
|
||||
find_last_bit
|
||||
find_next_bit
|
||||
find_next_zero_bit
|
||||
find_vma
|
||||
finish_wait
|
||||
firmware_request_nowarn
|
||||
flush_delayed_work
|
||||
flush_work
|
||||
flush_workqueue
|
||||
fput
|
||||
free_irq
|
||||
free_netdev
|
||||
__free_pages
|
||||
freezing_slow_path
|
||||
fwnode_property_present
|
||||
generic_handle_irq
|
||||
genl_register_family
|
||||
genl_unregister_family
|
||||
gen_pool_add_owner
|
||||
gen_pool_alloc_algo_owner
|
||||
gen_pool_create
|
||||
gen_pool_destroy
|
||||
gen_pool_free_owner
|
||||
get_cpu_device
|
||||
get_device
|
||||
get_random_bytes
|
||||
get_unused_fd_flags
|
||||
gpiochip_add_data_with_key
|
||||
gpiochip_add_pin_range
|
||||
gpiochip_generic_free
|
||||
gpiochip_generic_request
|
||||
gpiochip_get_data
|
||||
gpiochip_remove
|
||||
gpiod_direction_input
|
||||
gpiod_direction_output
|
||||
gpiod_direction_output_raw
|
||||
gpiod_get_raw_value
|
||||
gpiod_get_raw_value_cansleep
|
||||
gpiod_get_value
|
||||
gpiod_get_value_cansleep
|
||||
gpiod_set_debounce
|
||||
gpiod_set_raw_value
|
||||
gpiod_set_raw_value_cansleep
|
||||
gpiod_set_value
|
||||
gpiod_set_value_cansleep
|
||||
gpiod_to_irq
|
||||
gpio_free
|
||||
gpio_request
|
||||
gpio_to_desc
|
||||
handle_edge_irq
|
||||
handle_level_irq
|
||||
handle_nested_irq
|
||||
handle_simple_irq
|
||||
hex_dump_to_buffer
|
||||
hrtimer_cancel
|
||||
hrtimer_init
|
||||
hrtimer_start_range_ns
|
||||
hrtimer_try_to_cancel
|
||||
i2c_del_driver
|
||||
i2c_register_driver
|
||||
i2c_transfer
|
||||
i2c_transfer_buffer_flags
|
||||
icc_get
|
||||
icc_link_create
|
||||
icc_node_add
|
||||
icc_node_create
|
||||
icc_node_del
|
||||
icc_node_destroy
|
||||
icc_provider_add
|
||||
icc_provider_del
|
||||
icc_put
|
||||
icc_set_bw
|
||||
icc_set_tag
|
||||
ida_alloc_range
|
||||
ida_free
|
||||
idr_alloc
|
||||
idr_alloc_cyclic
|
||||
idr_destroy
|
||||
idr_find
|
||||
idr_get_next
|
||||
idr_preload
|
||||
idr_remove
|
||||
init_net
|
||||
__init_rwsem
|
||||
init_timer_key
|
||||
init_wait_entry
|
||||
__init_waitqueue_head
|
||||
input_allocate_device
|
||||
input_close_device
|
||||
input_event
|
||||
input_free_device
|
||||
input_mt_init_slots
|
||||
input_mt_report_slot_state
|
||||
input_open_device
|
||||
input_register_device
|
||||
input_register_handle
|
||||
input_register_handler
|
||||
input_set_abs_params
|
||||
input_set_capability
|
||||
input_unregister_device
|
||||
input_unregister_handle
|
||||
input_unregister_handler
|
||||
invalidate_mapping_pages
|
||||
iomem_resource
|
||||
iommu_attach_device
|
||||
iommu_detach_device
|
||||
iommu_dma_enable_best_fit_algo
|
||||
iommu_domain_alloc
|
||||
iommu_domain_free
|
||||
iommu_domain_get_attr
|
||||
iommu_domain_set_attr
|
||||
iommu_get_domain_for_dev
|
||||
iommu_map
|
||||
iommu_map_sg
|
||||
iommu_present
|
||||
iommu_set_fault_handler
|
||||
iommu_unmap
|
||||
ion_alloc
|
||||
__ioremap
|
||||
iounmap
|
||||
irq_chip_disable_parent
|
||||
irq_chip_enable_parent
|
||||
irq_chip_eoi_parent
|
||||
irq_chip_mask_parent
|
||||
irq_chip_set_affinity_parent
|
||||
irq_chip_set_parent_state
|
||||
irq_chip_set_type_parent
|
||||
irq_chip_set_vcpu_affinity_parent
|
||||
irq_chip_set_wake_parent
|
||||
irq_chip_unmask_parent
|
||||
irq_dispose_mapping
|
||||
__irq_domain_add
|
||||
irq_domain_free_irqs_common
|
||||
irq_domain_get_irq_data
|
||||
irq_domain_remove
|
||||
irq_domain_set_info
|
||||
irq_domain_xlate_twocell
|
||||
irq_find_mapping
|
||||
irq_find_matching_fwspec
|
||||
irq_get_irq_data
|
||||
irq_modify_status
|
||||
irq_of_parse_and_map
|
||||
irq_set_affinity_hint
|
||||
irq_set_chained_handler_and_data
|
||||
irq_set_chip_and_handler_name
|
||||
irq_set_chip_data
|
||||
irq_set_irq_type
|
||||
irq_set_irq_wake
|
||||
irq_to_desc
|
||||
jiffies
|
||||
jiffies_to_msecs
|
||||
jiffies_to_usecs
|
||||
kasprintf
|
||||
kernel_connect
|
||||
kernel_getsockname
|
||||
kernel_kobj
|
||||
kernel_recvmsg
|
||||
kernel_sendmsg
|
||||
__kfifo_in
|
||||
kfree
|
||||
kfree_skb
|
||||
kimage_vaddr
|
||||
kimage_voffset
|
||||
__kmalloc
|
||||
kmalloc_caches
|
||||
kmalloc_order_trace
|
||||
kmem_cache_alloc
|
||||
kmem_cache_alloc_trace
|
||||
kmem_cache_create
|
||||
kmem_cache_destroy
|
||||
kmem_cache_free
|
||||
kmemdup
|
||||
kobject_create_and_add
|
||||
kobject_del
|
||||
kobject_init_and_add
|
||||
kobject_put
|
||||
kobject_uevent_env
|
||||
krealloc
|
||||
kstrdup
|
||||
kstrndup
|
||||
kstrtobool
|
||||
kstrtoint
|
||||
kstrtoll
|
||||
kstrtou8
|
||||
kstrtouint
|
||||
kstrtoull
|
||||
kthread_create_on_node
|
||||
kthread_flush_worker
|
||||
__kthread_init_worker
|
||||
kthread_queue_work
|
||||
kthread_should_stop
|
||||
kthread_stop
|
||||
kthread_worker_fn
|
||||
ktime_get
|
||||
ktime_get_mono_fast_ns
|
||||
ktime_get_real_ts64
|
||||
ktime_get_with_offset
|
||||
kvfree
|
||||
kvmalloc_node
|
||||
kzfree
|
||||
led_classdev_unregister
|
||||
__list_add_valid
|
||||
__list_del_entry_valid
|
||||
list_sort
|
||||
mbox_client_txdone
|
||||
mbox_controller_register
|
||||
mbox_controller_unregister
|
||||
mbox_free_channel
|
||||
mbox_request_channel
|
||||
mbox_send_message
|
||||
media_device_cleanup
|
||||
media_device_init
|
||||
__media_device_register
|
||||
media_device_unregister
|
||||
media_entity_pads_init
|
||||
memchr
|
||||
memcmp
|
||||
memcpy
|
||||
__memcpy_fromio
|
||||
__memcpy_toio
|
||||
memdup_user
|
||||
memmove
|
||||
memset
|
||||
__memset_io
|
||||
misc_deregister
|
||||
misc_register
|
||||
mod_delayed_work_on
|
||||
mod_node_page_state
|
||||
mod_timer
|
||||
module_layout
|
||||
module_put
|
||||
__msecs_to_jiffies
|
||||
msleep
|
||||
msleep_interruptible
|
||||
__mutex_init
|
||||
mutex_is_locked
|
||||
mutex_lock
|
||||
mutex_lock_interruptible
|
||||
mutex_trylock
|
||||
mutex_unlock
|
||||
__netdev_alloc_skb
|
||||
netif_receive_skb
|
||||
netif_rx_ni
|
||||
netif_tx_wake_queue
|
||||
no_llseek
|
||||
nr_cpu_ids
|
||||
ns_to_timespec
|
||||
nvmem_cell_get
|
||||
nvmem_cell_put
|
||||
nvmem_cell_read
|
||||
nvmem_cell_write
|
||||
nvmem_device_read
|
||||
nvmem_device_write
|
||||
of_address_to_resource
|
||||
of_alias_get_id
|
||||
of_clk_add_provider
|
||||
of_clk_src_onecell_get
|
||||
of_count_phandle_with_args
|
||||
of_device_get_match_data
|
||||
of_device_is_available
|
||||
of_device_is_compatible
|
||||
of_dma_configure
|
||||
of_drm_find_panel
|
||||
of_find_compatible_node
|
||||
of_find_device_by_node
|
||||
of_find_node_by_name
|
||||
of_find_node_opts_by_path
|
||||
of_find_node_with_property
|
||||
of_find_property
|
||||
of_fwnode_ops
|
||||
of_genpd_del_provider
|
||||
of_get_address
|
||||
of_get_child_by_name
|
||||
of_get_cpu_node
|
||||
of_get_named_gpio_flags
|
||||
of_get_next_available_child
|
||||
of_get_next_child
|
||||
of_get_parent
|
||||
of_get_property
|
||||
of_get_regulator_init_data
|
||||
of_graph_get_remote_node
|
||||
of_icc_get
|
||||
of_icc_xlate_onecell
|
||||
of_iomap
|
||||
of_irq_find_parent
|
||||
of_irq_get
|
||||
of_irq_get_byname
|
||||
of_match_device
|
||||
of_match_node
|
||||
of_modalias_node
|
||||
of_parse_phandle
|
||||
of_parse_phandle_with_args
|
||||
of_platform_depopulate
|
||||
of_platform_populate
|
||||
of_property_count_elems_of_size
|
||||
of_property_match_string
|
||||
of_property_read_string
|
||||
of_property_read_string_helper
|
||||
of_property_read_u32_index
|
||||
of_property_read_u64
|
||||
of_property_read_variable_u32_array
|
||||
of_property_read_variable_u8_array
|
||||
of_prop_next_string
|
||||
of_prop_next_u32
|
||||
of_reserved_mem_device_init_by_idx
|
||||
of_reserved_mem_device_release
|
||||
of_reserved_mem_lookup
|
||||
panic
|
||||
panic_notifier_list
|
||||
param_get_int
|
||||
param_ops_bool
|
||||
param_ops_charp
|
||||
param_ops_int
|
||||
param_ops_string
|
||||
param_ops_uint
|
||||
pci_alloc_irq_vectors_affinity
|
||||
pci_bus_type
|
||||
pci_clear_master
|
||||
pci_disable_device
|
||||
pcie_capability_read_word
|
||||
pci_enable_device
|
||||
pci_find_pcie_root_port
|
||||
pci_free_irq_vectors
|
||||
pci_irq_vector
|
||||
pci_load_and_free_saved_state
|
||||
pci_read_config_dword
|
||||
__pci_register_driver
|
||||
pci_release_region
|
||||
pci_request_region
|
||||
pci_restore_state
|
||||
pci_save_state
|
||||
pci_set_master
|
||||
pci_set_power_state
|
||||
pci_store_saved_state
|
||||
pci_unregister_driver
|
||||
perf_trace_buf_alloc
|
||||
perf_trace_run_bpf_submit
|
||||
pfn_valid
|
||||
phy_exit
|
||||
phy_init
|
||||
phy_power_off
|
||||
phy_power_on
|
||||
phy_set_mode_ext
|
||||
physvirt_offset
|
||||
pinconf_generic_dt_node_to_map
|
||||
pinctrl_dev_get_drvdata
|
||||
pinctrl_get
|
||||
pinctrl_lookup_state
|
||||
pinctrl_pm_select_default_state
|
||||
pinctrl_pm_select_sleep_state
|
||||
pinctrl_put
|
||||
pinctrl_select_state
|
||||
pinctrl_utils_free_map
|
||||
platform_bus_type
|
||||
platform_device_add
|
||||
platform_device_add_data
|
||||
platform_device_add_properties
|
||||
platform_device_add_resources
|
||||
platform_device_alloc
|
||||
platform_device_put
|
||||
platform_device_register_full
|
||||
platform_device_unregister
|
||||
__platform_driver_register
|
||||
platform_driver_unregister
|
||||
platform_get_irq
|
||||
platform_get_irq_byname
|
||||
platform_get_resource
|
||||
platform_get_resource_byname
|
||||
platform_irq_count
|
||||
pm_clk_add
|
||||
pm_clk_create
|
||||
pm_clk_destroy
|
||||
pm_clk_resume
|
||||
pm_clk_suspend
|
||||
pm_generic_resume
|
||||
pm_generic_suspend
|
||||
pm_genpd_init
|
||||
pm_power_off
|
||||
pm_qos_add_request
|
||||
pm_qos_remove_request
|
||||
pm_qos_request_active
|
||||
pm_qos_update_request
|
||||
__pm_relax
|
||||
pm_relax
|
||||
pm_runtime_allow
|
||||
__pm_runtime_disable
|
||||
pm_runtime_enable
|
||||
pm_runtime_forbid
|
||||
pm_runtime_force_resume
|
||||
pm_runtime_force_suspend
|
||||
__pm_runtime_idle
|
||||
pm_runtime_no_callbacks
|
||||
__pm_runtime_resume
|
||||
pm_runtime_set_autosuspend_delay
|
||||
__pm_runtime_set_status
|
||||
__pm_runtime_suspend
|
||||
__pm_runtime_use_autosuspend
|
||||
__pm_stay_awake
|
||||
pm_stay_awake
|
||||
pm_wakeup_dev_event
|
||||
pm_wakeup_ws_event
|
||||
power_supply_get_by_name
|
||||
power_supply_put
|
||||
power_supply_set_property
|
||||
preempt_schedule
|
||||
preempt_schedule_notrace
|
||||
prepare_to_wait_event
|
||||
print_hex_dump
|
||||
printk
|
||||
proc_create
|
||||
__pskb_pull_tail
|
||||
put_device
|
||||
__put_task_struct
|
||||
put_unused_fd
|
||||
pwm_apply_state
|
||||
qcom_smem_state_get
|
||||
qcom_smem_state_register
|
||||
qcom_smem_state_unregister
|
||||
qcom_smem_state_update_bits
|
||||
queue_delayed_work_on
|
||||
queue_work_on
|
||||
radix_tree_insert
|
||||
radix_tree_lookup
|
||||
___ratelimit
|
||||
_raw_read_lock
|
||||
_raw_read_lock_bh
|
||||
_raw_read_lock_irqsave
|
||||
_raw_read_unlock
|
||||
_raw_read_unlock_bh
|
||||
_raw_read_unlock_irqrestore
|
||||
_raw_spin_lock
|
||||
_raw_spin_lock_bh
|
||||
_raw_spin_lock_irq
|
||||
_raw_spin_lock_irqsave
|
||||
_raw_spin_unlock
|
||||
_raw_spin_unlock_bh
|
||||
_raw_spin_unlock_irq
|
||||
_raw_spin_unlock_irqrestore
|
||||
_raw_write_lock_bh
|
||||
_raw_write_lock_irq
|
||||
_raw_write_lock_irqsave
|
||||
_raw_write_unlock_bh
|
||||
_raw_write_unlock_irq
|
||||
_raw_write_unlock_irqrestore
|
||||
rb_erase
|
||||
rb_first
|
||||
rb_insert_color
|
||||
rb_next
|
||||
__rcu_read_lock
|
||||
__rcu_read_unlock
|
||||
rdev_get_drvdata
|
||||
refcount_dec_and_test_checked
|
||||
refcount_dec_checked
|
||||
refcount_inc_checked
|
||||
refcount_inc_not_zero_checked
|
||||
__refrigerator
|
||||
regcache_mark_dirty
|
||||
regcache_sync
|
||||
regcache_sync_region
|
||||
__register_chrdev
|
||||
register_netdev
|
||||
register_pm_notifier
|
||||
register_restart_handler
|
||||
__register_rpmsg_driver
|
||||
regmap_bulk_read
|
||||
regmap_bulk_write
|
||||
__regmap_init
|
||||
regmap_read
|
||||
regmap_update_bits_base
|
||||
regmap_write
|
||||
regulator_count_voltages
|
||||
regulator_disable
|
||||
regulator_enable
|
||||
regulator_get
|
||||
regulator_is_enabled
|
||||
regulator_lock
|
||||
regulator_put
|
||||
regulator_set_load
|
||||
regulator_set_mode
|
||||
regulator_set_voltage
|
||||
regulator_unlock
|
||||
release_firmware
|
||||
remap_pfn_range
|
||||
request_firmware
|
||||
request_firmware_nowait
|
||||
request_threaded_irq
|
||||
reset_control_assert
|
||||
reset_control_deassert
|
||||
rpmsg_poll
|
||||
rpmsg_send
|
||||
rpmsg_trysend
|
||||
sched_clock
|
||||
sched_setscheduler
|
||||
schedule
|
||||
schedule_timeout
|
||||
schedule_timeout_uninterruptible
|
||||
scnprintf
|
||||
scsi_normalize_sense
|
||||
seq_printf
|
||||
seq_puts
|
||||
set_normalized_timespec64
|
||||
set_page_dirty_lock
|
||||
sg_alloc_table
|
||||
sg_free_table
|
||||
sg_init_table
|
||||
sg_next
|
||||
__sg_page_iter_next
|
||||
__sg_page_iter_start
|
||||
simple_read_from_buffer
|
||||
skb_clone
|
||||
skb_copy_expand
|
||||
skb_dequeue
|
||||
skb_pull
|
||||
skb_push
|
||||
skb_put
|
||||
skb_queue_purge
|
||||
skb_queue_tail
|
||||
skb_trim
|
||||
sk_free
|
||||
snd_info_create_card_entry
|
||||
snd_info_create_module_entry
|
||||
snd_info_free_entry
|
||||
snd_info_register
|
||||
snd_soc_add_component_controls
|
||||
snd_soc_component_init_regmap
|
||||
snd_soc_component_read32
|
||||
snd_soc_component_update_bits
|
||||
snd_soc_component_write
|
||||
snd_soc_dapm_add_routes
|
||||
snd_soc_dapm_get_enum_double
|
||||
snd_soc_dapm_get_volsw
|
||||
snd_soc_dapm_ignore_suspend
|
||||
snd_soc_dapm_kcontrol_widget
|
||||
snd_soc_dapm_mixer_update_power
|
||||
snd_soc_dapm_mux_update_power
|
||||
snd_soc_dapm_new_controls
|
||||
snd_soc_dapm_new_widgets
|
||||
snd_soc_dapm_put_enum_double
|
||||
snd_soc_dapm_put_volsw
|
||||
snd_soc_dapm_sync
|
||||
snd_soc_get_volsw
|
||||
snd_soc_info_enum_double
|
||||
snd_soc_info_multi_ext
|
||||
snd_soc_info_volsw
|
||||
snd_soc_lookup_component
|
||||
snd_soc_put_volsw
|
||||
snd_soc_register_component
|
||||
snd_soc_rtdcom_lookup
|
||||
snd_soc_unregister_component
|
||||
snprintf
|
||||
sock_create_kern
|
||||
sock_release
|
||||
sort
|
||||
spmi_controller_add
|
||||
spmi_controller_alloc
|
||||
spmi_controller_remove
|
||||
sprintf
|
||||
srcu_init_notifier_head
|
||||
srcu_notifier_call_chain
|
||||
srcu_notifier_chain_register
|
||||
srcu_notifier_chain_unregister
|
||||
sscanf
|
||||
__stack_chk_fail
|
||||
__stack_chk_guard
|
||||
strcasecmp
|
||||
strchr
|
||||
strcmp
|
||||
strcpy
|
||||
strlcat
|
||||
strlcpy
|
||||
strlen
|
||||
strncasecmp
|
||||
strnchr
|
||||
strncmp
|
||||
strnlen
|
||||
strnstr
|
||||
strpbrk
|
||||
strrchr
|
||||
strscpy
|
||||
strsep
|
||||
strstr
|
||||
__sw_hweight32
|
||||
__sw_hweight64
|
||||
__sw_hweight8
|
||||
sync_file_create
|
||||
sync_file_get_fence
|
||||
synchronize_irq
|
||||
syscon_node_to_regmap
|
||||
sysfs_create_file_ns
|
||||
sysfs_create_files
|
||||
sysfs_create_group
|
||||
sysfs_create_link
|
||||
sysfs_notify
|
||||
sysfs_remove_file_ns
|
||||
sysfs_remove_files
|
||||
sysfs_remove_group
|
||||
sysfs_remove_link
|
||||
sysfs_streq
|
||||
system_freezable_wq
|
||||
system_freezing_cnt
|
||||
system_long_wq
|
||||
system_unbound_wq
|
||||
system_wq
|
||||
__tasklet_hi_schedule
|
||||
tasklet_init
|
||||
tasklet_kill
|
||||
__tasklet_schedule
|
||||
thermal_cooling_device_unregister
|
||||
thermal_of_cooling_device_register
|
||||
_totalram_pages
|
||||
__trace_bprintk
|
||||
trace_define_field
|
||||
trace_event_buffer_commit
|
||||
trace_event_buffer_reserve
|
||||
trace_event_ignore_this_pid
|
||||
trace_event_raw_init
|
||||
trace_event_reg
|
||||
trace_handle_return
|
||||
trace_print_symbols_seq
|
||||
trace_raw_output_prep
|
||||
trace_seq_printf
|
||||
try_module_get
|
||||
tty_flip_buffer_push
|
||||
uart_add_one_port
|
||||
uart_register_driver
|
||||
uart_remove_one_port
|
||||
uart_unregister_driver
|
||||
__udelay
|
||||
__unregister_chrdev
|
||||
unregister_chrdev_region
|
||||
unregister_netdev
|
||||
unregister_pm_notifier
|
||||
unregister_rpmsg_driver
|
||||
up_read
|
||||
up_write
|
||||
usb_add_hcd
|
||||
usb_add_phy_dev
|
||||
usb_alloc_coherent
|
||||
usb_alloc_urb
|
||||
usb_assign_descriptors
|
||||
usb_autopm_get_interface
|
||||
usb_autopm_put_interface
|
||||
usb_clear_halt
|
||||
usb_composite_setup_continue
|
||||
usb_control_msg
|
||||
usb_deregister
|
||||
usb_disabled
|
||||
usb_ep_alloc_request
|
||||
usb_ep_autoconfig
|
||||
usb_ep_dequeue
|
||||
usb_ep_disable
|
||||
usb_ep_enable
|
||||
usb_ep_free_request
|
||||
usb_ep_queue
|
||||
usb_ep_set_halt
|
||||
usb_find_common_endpoints
|
||||
usb_free_all_descriptors
|
||||
usb_free_coherent
|
||||
usb_free_urb
|
||||
usb_function_register
|
||||
usb_function_unregister
|
||||
usb_gadget_wakeup
|
||||
usb_get_dr_mode
|
||||
usb_gstrings_attach
|
||||
usb_hcd_is_primary_hcd
|
||||
usb_ifnum_to_if
|
||||
usb_interface_id
|
||||
usb_kill_urb
|
||||
usb_poison_urb
|
||||
usb_put_dev
|
||||
usb_put_function_instance
|
||||
usb_put_hcd
|
||||
usb_register_driver
|
||||
usb_remove_hcd
|
||||
usb_remove_phy
|
||||
usb_set_interface
|
||||
usb_string_id
|
||||
usb_submit_urb
|
||||
__usecs_to_jiffies
|
||||
usleep_range
|
||||
v4l2_ctrl_handler_free
|
||||
__v4l2_ctrl_s_ctrl
|
||||
v4l2_device_register
|
||||
v4l2_device_register_subdev
|
||||
v4l2_device_unregister
|
||||
v4l2_event_pending
|
||||
v4l2_event_queue_fh
|
||||
v4l2_event_subscribe
|
||||
v4l2_event_unsubscribe
|
||||
v4l2_fh_add
|
||||
v4l2_fh_del
|
||||
v4l2_fh_exit
|
||||
v4l2_fh_init
|
||||
v4l2_fh_open
|
||||
v4l2_subdev_init
|
||||
vabits_actual
|
||||
vb2_buffer_done
|
||||
vb2_dqbuf
|
||||
vb2_fop_mmap
|
||||
vb2_fop_poll
|
||||
vb2_fop_release
|
||||
vb2_ioctl_create_bufs
|
||||
vb2_ioctl_dqbuf
|
||||
vb2_ioctl_qbuf
|
||||
vb2_ioctl_querybuf
|
||||
vb2_ioctl_reqbufs
|
||||
vb2_ioctl_streamoff
|
||||
vb2_ioctl_streamon
|
||||
vb2_ops_wait_finish
|
||||
vb2_ops_wait_prepare
|
||||
vb2_plane_vaddr
|
||||
vb2_qbuf
|
||||
vb2_queue_init
|
||||
vb2_queue_release
|
||||
vb2_reqbufs
|
||||
vb2_streamoff
|
||||
vb2_streamon
|
||||
vfree
|
||||
video_devdata
|
||||
video_device_release_empty
|
||||
video_ioctl2
|
||||
__video_register_device
|
||||
video_unregister_device
|
||||
vmalloc
|
||||
vmap
|
||||
vmemmap
|
||||
vm_map_ram
|
||||
vm_unmap_ram
|
||||
vsnprintf
|
||||
vunmap
|
||||
vzalloc
|
||||
wait_for_completion
|
||||
wait_for_completion_interruptible
|
||||
wait_for_completion_interruptible_timeout
|
||||
wait_for_completion_timeout
|
||||
__wake_up
|
||||
wake_up_process
|
||||
wakeup_source_register
|
||||
wakeup_source_unregister
|
||||
__warn_printk
|
||||
work_busy
|
@ -2809,7 +2809,7 @@
|
||||
wiphy_new_nm
|
||||
wiphy_register
|
||||
wiphy_unregister
|
||||
wireless_send_event
|
||||
wireless_send_event
|
||||
woken_wake_function
|
||||
work_busy
|
||||
would_dump
|
||||
|
@ -8,8 +8,10 @@ ADDITIONAL_KMI_SYMBOL_LISTS="
|
||||
android/abi_gki_aarch64_cuttlefish
|
||||
android/abi_gki_aarch64_db845c
|
||||
android/abi_gki_aarch64_exynos
|
||||
android/abi_gki_aarch64_galaxy
|
||||
android/abi_gki_aarch64_goldfish
|
||||
android/abi_gki_aarch64_hikey960
|
||||
android/abi_gki_aarch64_oneplus
|
||||
android/abi_gki_aarch64_oplus
|
||||
android/abi_gki_aarch64_qcom
|
||||
android/abi_gki_aarch64_sunxi
|
||||
@ -17,5 +19,6 @@ android/abi_gki_aarch64_unisoc
|
||||
android/abi_gki_aarch64_vivo
|
||||
"
|
||||
TRIM_NONLISTED_KMI=1
|
||||
KMI_SYMBOL_LIST_ADD_ONLY=1
|
||||
KMI_SYMBOL_LIST_STRICT_MODE=1
|
||||
KMI_ENFORCED=1
|
||||
|
@ -210,6 +210,10 @@ static struct power_supply_attr power_supply_attrs[] = {
|
||||
POWER_SUPPLY_ATTR(MODEL_NAME),
|
||||
POWER_SUPPLY_ATTR(MANUFACTURER),
|
||||
POWER_SUPPLY_ATTR(SERIAL_NUMBER),
|
||||
POWER_SUPPLY_ATTR(QUICK_CHARGE_TYPE),
|
||||
POWER_SUPPLY_ATTR(TX_ADAPTER),
|
||||
POWER_SUPPLY_ATTR(SIGNAL_STRENGTH),
|
||||
POWER_SUPPLY_ATTR(REVERSE_CHG_MODE),
|
||||
};
|
||||
|
||||
static struct attribute *
|
||||
|
@ -90,6 +90,12 @@
|
||||
#define STATUS_CHG_FAST BIT(7) /* Fast charging */
|
||||
#define STATUS_CHG_GONE BIT(8) /* No charger is connected */
|
||||
|
||||
#define IMAX_NORMAL 2000000
|
||||
#define IMAX_FAST 4000000
|
||||
#define IMAX_FLASH 6000000
|
||||
#define IMAX_TURBE 10000000
|
||||
#define IMAX_SUPER 12000000
|
||||
|
||||
enum smbb_attr {
|
||||
ATTR_BAT_ISAFE,
|
||||
ATTR_BAT_IMAX,
|
||||
@ -111,6 +117,7 @@ struct smbb_charger {
|
||||
|
||||
bool dc_disabled;
|
||||
bool jeita_ext_temp;
|
||||
bool pd_verifed;
|
||||
unsigned long status;
|
||||
struct mutex statlock;
|
||||
|
||||
@ -485,6 +492,58 @@ static const struct smbb_irq {
|
||||
{ "dc-valid", smbb_dc_valid_handler },
|
||||
};
|
||||
|
||||
struct quick_charge {
|
||||
enum power_supply_type adap_type;
|
||||
enum power_supply_quick_charge_type adap_cap;
|
||||
};
|
||||
|
||||
static struct quick_charge adapter_cap[10] = {
|
||||
{ POWER_SUPPLY_TYPE_USB, QUICK_CHARGE_NORMAL },
|
||||
{ POWER_SUPPLY_TYPE_USB_DCP, QUICK_CHARGE_NORMAL },
|
||||
{ POWER_SUPPLY_TYPE_USB_CDP, QUICK_CHARGE_NORMAL },
|
||||
{ POWER_SUPPLY_TYPE_USB_ACA, QUICK_CHARGE_NORMAL },
|
||||
{ POWER_SUPPLY_TYPE_USB_FLOAT, QUICK_CHARGE_NORMAL },
|
||||
{ POWER_SUPPLY_TYPE_USB_PD, QUICK_CHARGE_FAST },
|
||||
{ POWER_SUPPLY_TYPE_USB_HVDCP, QUICK_CHARGE_FAST },
|
||||
{ POWER_SUPPLY_TYPE_USB_HVDCP_3, QUICK_CHARGE_FAST },
|
||||
{ POWER_SUPPLY_TYPE_USB_HVDCP_3P5, QUICK_CHARGE_FAST },
|
||||
{0, 0},
|
||||
};
|
||||
|
||||
static int get_quick_charge_type(struct smbb_charger *chg)
|
||||
{
|
||||
union power_supply_propval prop = {0, };
|
||||
int charger_type, rc;
|
||||
int i = 0;
|
||||
|
||||
rc = power_supply_get_property(chg->bat_psy,
|
||||
POWER_SUPPLY_PROP_STATUS, &prop);
|
||||
if (rc < 0)
|
||||
return rc;
|
||||
if (prop.intval == POWER_SUPPLY_STATUS_DISCHARGING)
|
||||
return 0;
|
||||
|
||||
rc = power_supply_get_property(chg->usb_psy,
|
||||
POWER_SUPPLY_PROP_USB_TYPE, &prop);
|
||||
if (rc < 0)
|
||||
return rc;
|
||||
charger_type = prop.intval;
|
||||
|
||||
/* when pd adapter is authenticated successfully */
|
||||
if ((charger_type == POWER_SUPPLY_TYPE_USB_PD) && chg->pd_verifed) {
|
||||
return QUICK_CHARGE_TURBE;
|
||||
}
|
||||
|
||||
while (adapter_cap[i].adap_type != 0) {
|
||||
if (charger_type == adapter_cap[i].adap_type) {
|
||||
return adapter_cap[i].adap_cap;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int smbb_usbin_get_property(struct power_supply *psy,
|
||||
enum power_supply_property psp,
|
||||
union power_supply_propval *val)
|
||||
@ -505,6 +564,9 @@ static int smbb_usbin_get_property(struct power_supply *psy,
|
||||
case POWER_SUPPLY_PROP_CHARGE_CONTROL_LIMIT_MAX:
|
||||
val->intval = 2500000;
|
||||
break;
|
||||
case POWER_SUPPLY_PROP_QUICK_CHARGE_TYPE:
|
||||
val->intval = get_quick_charge_type(chg);
|
||||
break;
|
||||
default:
|
||||
rc = -EINVAL;
|
||||
break;
|
||||
@ -662,11 +724,27 @@ static int smbb_battery_set_property(struct power_supply *psy,
|
||||
const union power_supply_propval *val)
|
||||
{
|
||||
struct smbb_charger *chg = power_supply_get_drvdata(psy);
|
||||
int charger_type, bat_imax;
|
||||
int rc;
|
||||
|
||||
switch (psp) {
|
||||
case POWER_SUPPLY_PROP_CURRENT_MAX:
|
||||
rc = smbb_charger_attr_write(chg, ATTR_BAT_IMAX, val->intval);
|
||||
charger_type = get_quick_charge_type(chg);
|
||||
if (charger_type == QUICK_CHARGE_NORMAL)
|
||||
bat_imax = IMAX_NORMAL;
|
||||
else if (charger_type == QUICK_CHARGE_FAST)
|
||||
bat_imax = IMAX_FAST;
|
||||
else if (charger_type == QUICK_CHARGE_FLASH)
|
||||
bat_imax = IMAX_FLASH;
|
||||
else if (charger_type == QUICK_CHARGE_TURBE)
|
||||
bat_imax = IMAX_TURBE;
|
||||
else if (charger_type == QUICK_CHARGE_SUPER)
|
||||
bat_imax = IMAX_SUPER;
|
||||
else
|
||||
bat_imax = IMAX_NORMAL;
|
||||
|
||||
bat_imax = min(val->intval, bat_imax);
|
||||
rc = smbb_charger_attr_write(chg, ATTR_BAT_IMAX, bat_imax);
|
||||
break;
|
||||
case POWER_SUPPLY_PROP_VOLTAGE_MAX:
|
||||
rc = smbb_charger_attr_write(chg, ATTR_BAT_VMAX, val->intval);
|
||||
@ -695,6 +773,7 @@ static enum power_supply_property smbb_charger_properties[] = {
|
||||
POWER_SUPPLY_PROP_ONLINE,
|
||||
POWER_SUPPLY_PROP_CHARGE_CONTROL_LIMIT,
|
||||
POWER_SUPPLY_PROP_CHARGE_CONTROL_LIMIT_MAX,
|
||||
POWER_SUPPLY_PROP_QUICK_CHARGE_TYPE,
|
||||
};
|
||||
|
||||
static enum power_supply_property smbb_battery_properties[] = {
|
||||
|
@ -170,6 +170,10 @@ enum power_supply_property {
|
||||
POWER_SUPPLY_PROP_MODEL_NAME,
|
||||
POWER_SUPPLY_PROP_MANUFACTURER,
|
||||
POWER_SUPPLY_PROP_SERIAL_NUMBER,
|
||||
POWER_SUPPLY_PROP_QUICK_CHARGE_TYPE,
|
||||
POWER_SUPPLY_PROP_TX_ADAPTER,
|
||||
POWER_SUPPLY_PROP_SIGNAL_STRENGTH,
|
||||
POWER_SUPPLY_PROP_REVERSE_CHG_MODE,
|
||||
};
|
||||
|
||||
enum power_supply_type {
|
||||
@ -186,6 +190,10 @@ enum power_supply_type {
|
||||
POWER_SUPPLY_TYPE_USB_PD_DRP, /* PD Dual Role Port */
|
||||
POWER_SUPPLY_TYPE_APPLE_BRICK_ID, /* Apple Charging Method */
|
||||
POWER_SUPPLY_TYPE_WIRELESS, /* Wireless */
|
||||
POWER_SUPPLY_TYPE_USB_HVDCP, /* High Voltage DCP */
|
||||
POWER_SUPPLY_TYPE_USB_HVDCP_3, /* Efficient High Voltage DCP */
|
||||
POWER_SUPPLY_TYPE_USB_HVDCP_3P5, /* Efficient High Voltage DCP */
|
||||
POWER_SUPPLY_TYPE_USB_FLOAT, /* Floating charger */
|
||||
};
|
||||
|
||||
enum power_supply_usb_type {
|
||||
@ -201,6 +209,33 @@ enum power_supply_usb_type {
|
||||
POWER_SUPPLY_USB_TYPE_APPLE_BRICK_ID, /* Apple Charging Method */
|
||||
};
|
||||
|
||||
enum power_supply_quick_charge_type {
|
||||
QUICK_CHARGE_NORMAL = 0, /* Charging Power <= 10W */
|
||||
QUICK_CHARGE_FAST, /* 10W < Charging Power <= 20W */
|
||||
QUICK_CHARGE_FLASH, /* 20W < Charging Power <= 30W */
|
||||
QUICK_CHARGE_TURBE, /* 30W < Charging Power <= 50W */
|
||||
QUICK_CHARGE_SUPER, /* Charging Power > 50W */
|
||||
QUICK_CHARGE_MAX,
|
||||
};
|
||||
|
||||
enum power_supply_tx_adapter_type {
|
||||
ADAPTER_NONE = 0, /* Nothing Attached */
|
||||
ADAPTER_SDP, /* Standard Downstream Port */
|
||||
ADAPTER_CDP, /* Charging Downstream Port */
|
||||
ADAPTER_DCP, /* Dedicated Charging Port */
|
||||
ADAPTER_OCP, /* Other Charging Port */
|
||||
ADAPTER_QC2, /* Qualcomm Charge 2.0 */
|
||||
ADAPTER_QC3, /* Qualcomm Charge 3.0 */
|
||||
ADAPTER_PD, /* Power Delivery Port */
|
||||
ADAPTER_AUTH_FAILED, /* Authenticated Failed Adapter */
|
||||
ADAPTER_PRIVATE_QC3, /* Qualcomm Charge 3.0 with Private Protocol */
|
||||
ADAPTER_PRIVATE_PD, /* PD Adapter with Private Protocol */
|
||||
ADAPTER_CAR_POWER, /* Wireless Car Charger */
|
||||
ADAPTER_PRIVATE_PD_40W, /* 40W PD Adapter with Private Protocol */
|
||||
ADAPTER_VOICE_BOX, /* Voice Box which Support Wireless Charger */
|
||||
ADAPTER_PRIVATE_PD_50W, /* 50W PD Adapter with Private Protocol */
|
||||
};
|
||||
|
||||
enum power_supply_notifier_events {
|
||||
PSY_EVENT_PROP_CHANGED,
|
||||
};
|
||||
|
@ -1506,8 +1506,7 @@ static inline bool sect_empty(const Elf_Shdr *sect)
|
||||
}
|
||||
|
||||
struct module_sect_attr {
|
||||
struct module_attribute mattr;
|
||||
char *name;
|
||||
struct bin_attribute battr;
|
||||
unsigned long address;
|
||||
};
|
||||
|
||||
@ -1517,13 +1516,34 @@ struct module_sect_attrs {
|
||||
struct module_sect_attr attrs[0];
|
||||
};
|
||||
|
||||
static ssize_t module_sect_show(struct module_attribute *mattr,
|
||||
struct module_kobject *mk, char *buf)
|
||||
#define MODULE_SECT_READ_SIZE (3 /* "0x", "\n" */ + (BITS_PER_LONG / 4))
|
||||
static ssize_t module_sect_read(struct file *file, struct kobject *kobj,
|
||||
struct bin_attribute *battr,
|
||||
char *buf, loff_t pos, size_t count)
|
||||
{
|
||||
struct module_sect_attr *sattr =
|
||||
container_of(mattr, struct module_sect_attr, mattr);
|
||||
return sprintf(buf, "0x%px\n", kptr_restrict < 2 ?
|
||||
(void *)sattr->address : NULL);
|
||||
container_of(battr, struct module_sect_attr, battr);
|
||||
char bounce[MODULE_SECT_READ_SIZE + 1];
|
||||
size_t wrote;
|
||||
|
||||
if (pos != 0)
|
||||
return -EINVAL;
|
||||
|
||||
/*
|
||||
* Since we're a binary read handler, we must account for the
|
||||
* trailing NUL byte that sprintf will write: if "buf" is
|
||||
* too small to hold the NUL, or the NUL is exactly the last
|
||||
* byte, the read will look like it got truncated by one byte.
|
||||
* Since there is no way to ask sprintf nicely to not write
|
||||
* the NUL, we have to use a bounce buffer.
|
||||
*/
|
||||
wrote = scnprintf(bounce, sizeof(bounce), "0x%px\n",
|
||||
kallsyms_show_value(file->f_cred)
|
||||
? (void *)sattr->address : NULL);
|
||||
count = min(count, wrote);
|
||||
memcpy(buf, bounce, count);
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
static void free_sect_attrs(struct module_sect_attrs *sect_attrs)
|
||||
@ -1531,7 +1551,7 @@ static void free_sect_attrs(struct module_sect_attrs *sect_attrs)
|
||||
unsigned int section;
|
||||
|
||||
for (section = 0; section < sect_attrs->nsections; section++)
|
||||
kfree(sect_attrs->attrs[section].name);
|
||||
kfree(sect_attrs->attrs[section].battr.attr.name);
|
||||
kfree(sect_attrs);
|
||||
}
|
||||
|
||||
@ -1540,42 +1560,41 @@ static void add_sect_attrs(struct module *mod, const struct load_info *info)
|
||||
unsigned int nloaded = 0, i, size[2];
|
||||
struct module_sect_attrs *sect_attrs;
|
||||
struct module_sect_attr *sattr;
|
||||
struct attribute **gattr;
|
||||
struct bin_attribute **gattr;
|
||||
|
||||
/* Count loaded sections and allocate structures */
|
||||
for (i = 0; i < info->hdr->e_shnum; i++)
|
||||
if (!sect_empty(&info->sechdrs[i]))
|
||||
nloaded++;
|
||||
size[0] = ALIGN(struct_size(sect_attrs, attrs, nloaded),
|
||||
sizeof(sect_attrs->grp.attrs[0]));
|
||||
size[1] = (nloaded + 1) * sizeof(sect_attrs->grp.attrs[0]);
|
||||
sizeof(sect_attrs->grp.bin_attrs[0]));
|
||||
size[1] = (nloaded + 1) * sizeof(sect_attrs->grp.bin_attrs[0]);
|
||||
sect_attrs = kzalloc(size[0] + size[1], GFP_KERNEL);
|
||||
if (sect_attrs == NULL)
|
||||
return;
|
||||
|
||||
/* Setup section attributes. */
|
||||
sect_attrs->grp.name = "sections";
|
||||
sect_attrs->grp.attrs = (void *)sect_attrs + size[0];
|
||||
sect_attrs->grp.bin_attrs = (void *)sect_attrs + size[0];
|
||||
|
||||
sect_attrs->nsections = 0;
|
||||
sattr = §_attrs->attrs[0];
|
||||
gattr = §_attrs->grp.attrs[0];
|
||||
gattr = §_attrs->grp.bin_attrs[0];
|
||||
for (i = 0; i < info->hdr->e_shnum; i++) {
|
||||
Elf_Shdr *sec = &info->sechdrs[i];
|
||||
if (sect_empty(sec))
|
||||
continue;
|
||||
sysfs_bin_attr_init(&sattr->battr);
|
||||
sattr->address = sec->sh_addr;
|
||||
sattr->name = kstrdup(info->secstrings + sec->sh_name,
|
||||
GFP_KERNEL);
|
||||
if (sattr->name == NULL)
|
||||
sattr->battr.attr.name =
|
||||
kstrdup(info->secstrings + sec->sh_name, GFP_KERNEL);
|
||||
if (sattr->battr.attr.name == NULL)
|
||||
goto out;
|
||||
sect_attrs->nsections++;
|
||||
sysfs_attr_init(&sattr->mattr.attr);
|
||||
sattr->mattr.show = module_sect_show;
|
||||
sattr->mattr.store = NULL;
|
||||
sattr->mattr.attr.name = sattr->name;
|
||||
sattr->mattr.attr.mode = S_IRUSR;
|
||||
*(gattr++) = &(sattr++)->mattr.attr;
|
||||
sattr->battr.read = module_sect_read;
|
||||
sattr->battr.size = MODULE_SECT_READ_SIZE;
|
||||
sattr->battr.attr.mode = 0400;
|
||||
*(gattr++) = &(sattr++)->battr;
|
||||
}
|
||||
*gattr = NULL;
|
||||
|
||||
@ -1665,7 +1684,7 @@ static void add_notes_attrs(struct module *mod, const struct load_info *info)
|
||||
continue;
|
||||
if (info->sechdrs[i].sh_type == SHT_NOTE) {
|
||||
sysfs_bin_attr_init(nattr);
|
||||
nattr->attr.name = mod->sect_attrs->attrs[loaded].name;
|
||||
nattr->attr.name = mod->sect_attrs->attrs[loaded].battr.attr.name;
|
||||
nattr->attr.mode = S_IRUGO;
|
||||
nattr->size = info->sechdrs[i].sh_size;
|
||||
nattr->private = (void *) info->sechdrs[i].sh_addr;
|
||||
@ -4421,7 +4440,7 @@ static int modules_open(struct inode *inode, struct file *file)
|
||||
|
||||
if (!err) {
|
||||
struct seq_file *m = file->private_data;
|
||||
m->private = kallsyms_show_value(current_cred()) ? NULL : (void *)8ul;
|
||||
m->private = kallsyms_show_value(file->f_cred) ? NULL : (void *)8ul;
|
||||
}
|
||||
|
||||
return err;
|
||||
|
Loading…
Reference in New Issue
Block a user