Merge Android 24Q2 Release (ab/11526283) to aosp-main-future
Bug: 337098550 Merged-In: Ifd5f1b609c0bf5fa98677f9880bfa29496add95d Change-Id: I15da0840ac7291b41519ae4ae82b09b3c6b5148f
This commit is contained in:
commit
dd443fbb75
21 changed files with 352 additions and 259 deletions
|
@ -205,7 +205,7 @@ BOARD_SUPPORT_MFC_ENC_RGB := true
|
||||||
BOARD_USE_BLOB_ALLOCATOR := false
|
BOARD_USE_BLOB_ALLOCATOR := false
|
||||||
BOARD_SUPPORT_MFC_ENC_BT2020 := true
|
BOARD_SUPPORT_MFC_ENC_BT2020 := true
|
||||||
BOARD_SUPPORT_FLEXIBLE_P010 := true
|
BOARD_SUPPORT_FLEXIBLE_P010 := true
|
||||||
|
BOARD_SUPPORT_MFC_VERSION := 1660
|
||||||
########################
|
########################
|
||||||
|
|
||||||
BOARD_SUPER_PARTITION_SIZE := 8531214336
|
BOARD_SUPER_PARTITION_SIZE := 8531214336
|
||||||
|
|
|
@ -17,12 +17,8 @@ on init
|
||||||
write /proc/vendor_sched/teo_util_threshold "2 1024 1024"
|
write /proc/vendor_sched/teo_util_threshold "2 1024 1024"
|
||||||
|
|
||||||
# Boot time fs tuning
|
# Boot time fs tuning
|
||||||
write /sys/block/sda/queue/iostats 0
|
|
||||||
write /sys/block/sda/queue/scheduler bfq
|
write /sys/block/sda/queue/scheduler bfq
|
||||||
write /sys/block/sda/queue/iosched/slice_idle 0
|
write /sys/block/sda/queue/iosched/slice_idle 0
|
||||||
write /sys/block/sda/queue/nr_requests 256
|
|
||||||
write /dev/sys/fs/by-name/userdata/data_io_flag 56
|
|
||||||
write /dev/sys/fs/by-name/userdata/node_io_flag 56
|
|
||||||
|
|
||||||
chown system system /proc/vendor_sched/groups/bg/set_task_group
|
chown system system /proc/vendor_sched/groups/bg/set_task_group
|
||||||
chown system system /proc/vendor_sched/groups/cam/set_task_group
|
chown system system /proc/vendor_sched/groups/cam/set_task_group
|
||||||
|
@ -104,15 +100,6 @@ on init
|
||||||
chmod 0660 /proc/vendor_sched/pmu_poll_enable
|
chmod 0660 /proc/vendor_sched/pmu_poll_enable
|
||||||
chmod 0220 /proc/vendor_sched/pmu_poll_time
|
chmod 0220 /proc/vendor_sched/pmu_poll_time
|
||||||
|
|
||||||
wait /dev/block/platform/${ro.boot.boot_devices}
|
|
||||||
symlink /dev/block/platform/${ro.boot.boot_devices} /dev/block/bootdevice
|
|
||||||
|
|
||||||
# to access UFS/eMMC sysfs directly
|
|
||||||
symlink /sys/devices/platform/${ro.boot.boot_devices} /dev/sys/block/bootdevice
|
|
||||||
|
|
||||||
# Disable UFS powersaving
|
|
||||||
write /dev/sys/block/bootdevice/clkgate_enable 0
|
|
||||||
|
|
||||||
start vendor.keymaster-4-0
|
start vendor.keymaster-4-0
|
||||||
|
|
||||||
# ZRAM setup
|
# ZRAM setup
|
||||||
|
@ -284,6 +271,7 @@ on init
|
||||||
|
|
||||||
# BatteryHealthData
|
# BatteryHealthData
|
||||||
chown system system /sys/class/power_supply/battery/first_usage_date
|
chown system system /sys/class/power_supply/battery/first_usage_date
|
||||||
|
chown system system /sys/class/power_supply/battery/swelling_data
|
||||||
|
|
||||||
# Battery Defender
|
# Battery Defender
|
||||||
chown system system /sys/devices/platform/google,battery/power_supply/battery/bd_trickle_cnt
|
chown system system /sys/devices/platform/google,battery/power_supply/battery/bd_trickle_cnt
|
||||||
|
@ -306,6 +294,7 @@ on init
|
||||||
chown system system /sys/devices/platform/google,charger/bd_trigger_time
|
chown system system /sys/devices/platform/google,charger/bd_trigger_time
|
||||||
chown system system /sys/devices/platform/google,charger/bd_trigger_voltage
|
chown system system /sys/devices/platform/google,charger/bd_trigger_voltage
|
||||||
chown system system /sys/devices/platform/google,charger/bd_clear
|
chown system system /sys/devices/platform/google,charger/bd_clear
|
||||||
|
chown system system /sys/devices/platform/google,charger/bd_state
|
||||||
chown system system /sys/devices/platform/google,charger/charge_start_level
|
chown system system /sys/devices/platform/google,charger/charge_start_level
|
||||||
chown system system /sys/devices/platform/google,charger/charge_stop_level
|
chown system system /sys/devices/platform/google,charger/charge_stop_level
|
||||||
chown system system /sys/devices/platform/google,cpm/dc_ctl
|
chown system system /sys/devices/platform/google,cpm/dc_ctl
|
||||||
|
@ -543,15 +532,6 @@ on early-boot
|
||||||
# Wait for insmod_sh to finish all common modules
|
# Wait for insmod_sh to finish all common modules
|
||||||
wait_for_prop vendor.common.modules.ready 1
|
wait_for_prop vendor.common.modules.ready 1
|
||||||
|
|
||||||
# Permission for Health Storage HAL
|
|
||||||
chown system system /dev/sys/block/bootdevice/manual_gc
|
|
||||||
|
|
||||||
# Permission for Pixelstats
|
|
||||||
chown system system /dev/sys/block/bootdevice/slowio_read_cnt
|
|
||||||
chown system system /dev/sys/block/bootdevice/slowio_write_cnt
|
|
||||||
chown system system /dev/sys/block/bootdevice/slowio_unmap_cnt
|
|
||||||
chown system system /dev/sys/block/bootdevice/slowio_sync_cnt
|
|
||||||
|
|
||||||
# logbuffer
|
# logbuffer
|
||||||
chown system system /dev/logbuffer_maxfg
|
chown system system /dev/logbuffer_maxfg
|
||||||
chown system system /dev/logbuffer_maxfg_monitor
|
chown system system /dev/logbuffer_maxfg_monitor
|
||||||
|
@ -669,6 +649,7 @@ on fs
|
||||||
chown system system /sys/class/backlight/panel0-backlight/dimming_on
|
chown system system /sys/class/backlight/panel0-backlight/dimming_on
|
||||||
chown system system /sys/class/backlight/panel0-backlight/hbm_mode
|
chown system system /sys/class/backlight/panel0-backlight/hbm_mode
|
||||||
chown system system /sys/class/backlight/panel0-backlight/local_hbm_mode
|
chown system system /sys/class/backlight/panel0-backlight/local_hbm_mode
|
||||||
|
chown system system /sys/class/backlight/panel0-backlight/allow_wakeup_by_state_change
|
||||||
chown system system /sys/devices/platform/exynos-drm/primary-panel/gamma
|
chown system system /sys/devices/platform/exynos-drm/primary-panel/gamma
|
||||||
chown system system /sys/devices/platform/exynos-drm/primary-panel/min_vrefresh
|
chown system system /sys/devices/platform/exynos-drm/primary-panel/min_vrefresh
|
||||||
chown system system /sys/devices/platform/exynos-drm/primary-panel/idle_delay_ms
|
chown system system /sys/devices/platform/exynos-drm/primary-panel/idle_delay_ms
|
||||||
|
@ -700,8 +681,6 @@ on fs
|
||||||
chown system system /sys/class/dqe0/atc/gain_limit
|
chown system system /sys/class/dqe0/atc/gain_limit
|
||||||
chown system system /sys/class/dqe0/atc/lt_calc_ab_shift
|
chown system system /sys/class/dqe0/atc/lt_calc_ab_shift
|
||||||
|
|
||||||
chown system system /sys/devices/platform/110f0000.drmdp/drm-displayport/dp_hotplug_error_code
|
|
||||||
|
|
||||||
chown system system /sys/devices/platform/19470000.drmdecon/early_wakeup
|
chown system system /sys/devices/platform/19470000.drmdecon/early_wakeup
|
||||||
chmod 0660 /sys/devices/platform/19470000.drmdecon/early_wakeup
|
chmod 0660 /sys/devices/platform/19470000.drmdecon/early_wakeup
|
||||||
|
|
||||||
|
@ -776,24 +755,6 @@ on property:init.svc.vendor.charger=running
|
||||||
write /sys/devices/system/cpu/cpu7/online 0
|
write /sys/devices/system/cpu/cpu7/online 0
|
||||||
|
|
||||||
on property:sys.boot_completed=1
|
on property:sys.boot_completed=1
|
||||||
|
|
||||||
# Runtime fs tuning
|
|
||||||
write /sys/block/sda/queue/nr_requests 128
|
|
||||||
write /sys/block/sda/queue/iostats 1
|
|
||||||
write /sys/block/sda/queue/iosched/slice_idle 0
|
|
||||||
write /dev/sys/fs/by-name/userdata/data_io_flag 8
|
|
||||||
write /dev/sys/fs/by-name/userdata/node_io_flag 8
|
|
||||||
|
|
||||||
# Permission for Pixelstats
|
|
||||||
chown system system /dev/sys/fs/by-name/userdata/compr_written_block
|
|
||||||
chown system system /dev/sys/fs/by-name/userdata/compr_saved_block
|
|
||||||
chown system system /dev/sys/fs/by-name/userdata/compr_new_inode
|
|
||||||
chown system system /dev/sys/fs/by-name/userdata/gc_segment_mode
|
|
||||||
chown system system /dev/sys/fs/by-name/userdata/gc_reclaimed_segments
|
|
||||||
chown system system /dev/sys/fs/by-name/userdata/peak_atomic_write
|
|
||||||
chown system system /dev/sys/fs/by-name/userdata/committed_atomic_block
|
|
||||||
chown system system /dev/sys/fs/by-name/userdata/revoked_atomic_block
|
|
||||||
|
|
||||||
# Enable ZRAM on boot_complete
|
# Enable ZRAM on boot_complete
|
||||||
swapon_all /vendor/etc/fstab.${ro.board.platform}
|
swapon_all /vendor/etc/fstab.${ro.board.platform}
|
||||||
write /proc/sys/vm/swappiness 60
|
write /proc/sys/vm/swappiness 60
|
||||||
|
@ -808,9 +769,6 @@ on property:sys.boot_completed=1
|
||||||
write /proc/sys/vm/dirty_expire_centisecs 3000
|
write /proc/sys/vm/dirty_expire_centisecs 3000
|
||||||
write /proc/sys/vm/dirty_background_ratio 10
|
write /proc/sys/vm/dirty_background_ratio 10
|
||||||
|
|
||||||
# Enable UFS powersaving
|
|
||||||
write /dev/sys/block/bootdevice/clkgate_enable 1
|
|
||||||
|
|
||||||
# Cancel boot devfreq
|
# Cancel boot devfreq
|
||||||
write /sys/devices/platform/17000010.devfreq_mif/devfreq/17000010.devfreq_mif/exynos_data/cancel_boot_freq 1
|
write /sys/devices/platform/17000010.devfreq_mif/devfreq/17000010.devfreq_mif/exynos_data/cancel_boot_freq 1
|
||||||
|
|
||||||
|
@ -1146,16 +1104,6 @@ on charger
|
||||||
mkdir /dev/thermal/cdev-by-name 0750 system system
|
mkdir /dev/thermal/cdev-by-name 0750 system system
|
||||||
start vendor.thermal.symlinks
|
start vendor.thermal.symlinks
|
||||||
|
|
||||||
# Runtime fs tuning
|
|
||||||
write /sys/block/sda/queue/nr_requests 128
|
|
||||||
write /sys/block/sda/queue/iostats 1
|
|
||||||
write /sys/block/sda/queue/iosched/slice_idle 0
|
|
||||||
write /dev/sys/fs/by-name/userdata/data_io_flag 8
|
|
||||||
write /dev/sys/fs/by-name/userdata/node_io_flag 8
|
|
||||||
|
|
||||||
# Enable UFS powersaving
|
|
||||||
write /dev/sys/block/bootdevice/clkgate_enable 1
|
|
||||||
|
|
||||||
# Cancel boot devfreq and uclamp
|
# Cancel boot devfreq and uclamp
|
||||||
write /sys/devices/platform/17000010.devfreq_mif/devfreq/17000010.devfreq_mif/exynos_data/cancel_boot_freq 1
|
write /sys/devices/platform/17000010.devfreq_mif/devfreq/17000010.devfreq_mif/exynos_data/cancel_boot_freq 1
|
||||||
write /proc/vendor_sched/groups/ta/uclamp_min 0
|
write /proc/vendor_sched/groups/ta/uclamp_min 0
|
||||||
|
@ -1182,11 +1130,6 @@ on post-fs-data && property:ro.vendor.factory=1
|
||||||
chmod 666 /sys/class/backlight/panel0-backlight/local_hbm_mode
|
chmod 666 /sys/class/backlight/panel0-backlight/local_hbm_mode
|
||||||
chmod 666 /sys/class/backlight/panel0-backlight/hbm_mode
|
chmod 666 /sys/class/backlight/panel0-backlight/hbm_mode
|
||||||
|
|
||||||
# UFS
|
|
||||||
on property:ro.boot.mode=charger && property:init.svc.vendor.charger=running
|
|
||||||
# Enable UFS powersaving in Off Mode Charger
|
|
||||||
write /dev/sys/block/bootdevice/clkgate_enable 1
|
|
||||||
|
|
||||||
# MTE
|
# MTE
|
||||||
on property:persist.device_config.runtime_native_boot.mode_override=sync
|
on property:persist.device_config.runtime_native_boot.mode_override=sync
|
||||||
# Per-core mode overrides.
|
# Per-core mode overrides.
|
||||||
|
|
|
@ -54,6 +54,8 @@
|
||||||
<exception package="com.google.android.apps.camera.services">
|
<exception package="com.google.android.apps.camera.services">
|
||||||
<!-- Camera -->
|
<!-- Camera -->
|
||||||
<permission name="android.permission.CAMERA" fixed="false"/>
|
<permission name="android.permission.CAMERA" fixed="false"/>
|
||||||
|
<!-- Camera Connectivity -->
|
||||||
|
<permission name="android.permission.ACCESS_FINE_LOCATION" fixed="false"/>
|
||||||
<permission name="android.permission.POST_NOTIFICATIONS" fixed="false"/>
|
<permission name="android.permission.POST_NOTIFICATIONS" fixed="false"/>
|
||||||
<permission name="android.permission.BLUETOOTH_CONNECT" fixed="false"/>
|
<permission name="android.permission.BLUETOOTH_CONNECT" fixed="false"/>
|
||||||
<permission name="android.permission.BLUETOOTH_SCAN" fixed="false"/>
|
<permission name="android.permission.BLUETOOTH_SCAN" fixed="false"/>
|
||||||
|
|
109
device.mk
109
device.mk
|
@ -42,6 +42,7 @@ include device/google/gs-common/sota_app/factoryota.mk
|
||||||
include device/google/gs-common/misc_writer/misc_writer.mk
|
include device/google/gs-common/misc_writer/misc_writer.mk
|
||||||
include device/google/gs-common/gyotaku_app/gyotaku.mk
|
include device/google/gs-common/gyotaku_app/gyotaku.mk
|
||||||
include device/google/gs-common/bootctrl/bootctrl_aidl.mk
|
include device/google/gs-common/bootctrl/bootctrl_aidl.mk
|
||||||
|
include device/google/gs-common/betterbug/betterbug.mk
|
||||||
|
|
||||||
include device/google/zuma/dumpstate/item.mk
|
include device/google/zuma/dumpstate/item.mk
|
||||||
|
|
||||||
|
@ -76,7 +77,7 @@ PRODUCT_SOONG_NAMESPACES += \
|
||||||
hardware/google/pixel \
|
hardware/google/pixel \
|
||||||
device/google/zuma \
|
device/google/zuma \
|
||||||
device/google/zuma/powerstats \
|
device/google/zuma/powerstats \
|
||||||
system/chre/host/hal_generic \
|
vendor/google_devices/common/chre/host/hal \
|
||||||
vendor/google/whitechapel/tools \
|
vendor/google/whitechapel/tools \
|
||||||
vendor/google/interfaces \
|
vendor/google/interfaces \
|
||||||
vendor/google_devices/common/proprietary/confirmatioui_hal \
|
vendor/google_devices/common/proprietary/confirmatioui_hal \
|
||||||
|
@ -89,6 +90,11 @@ LOCAL_KERNEL := $(TARGET_KERNEL_DIR)/Image.lz4
|
||||||
# Set the environment variable to switch the Keymint HAL service to Rust
|
# Set the environment variable to switch the Keymint HAL service to Rust
|
||||||
TRUSTY_KEYMINT_IMPL := rust
|
TRUSTY_KEYMINT_IMPL := rust
|
||||||
|
|
||||||
|
ifeq ($(RELEASE_AVF_ENABLE_LLPVM_CHANGES),true)
|
||||||
|
# Set the environment variable to enable the Secretkeeper HAL service.
|
||||||
|
SECRETKEEPER_ENABLED := true
|
||||||
|
endif
|
||||||
|
|
||||||
# OEM Unlock reporting
|
# OEM Unlock reporting
|
||||||
PRODUCT_DEFAULT_PROPERTY_OVERRIDES += \
|
PRODUCT_DEFAULT_PROPERTY_OVERRIDES += \
|
||||||
ro.oem_unlock_supported=1
|
ro.oem_unlock_supported=1
|
||||||
|
@ -175,26 +181,26 @@ PRODUCT_PRODUCT_PROPERTIES += \
|
||||||
|
|
||||||
# Set supported Bluetooth profiles to enabled
|
# Set supported Bluetooth profiles to enabled
|
||||||
PRODUCT_PRODUCT_PROPERTIES += \
|
PRODUCT_PRODUCT_PROPERTIES += \
|
||||||
bluetooth.profile.asha.central.enabled=true \
|
bluetooth.profile.asha.central.enabled?=true \
|
||||||
bluetooth.profile.a2dp.source.enabled=true \
|
bluetooth.profile.a2dp.source.enabled?=true \
|
||||||
bluetooth.profile.avrcp.target.enabled=true \
|
bluetooth.profile.avrcp.target.enabled?=true \
|
||||||
bluetooth.profile.bap.unicast.server.enabled=true \
|
bluetooth.profile.bap.unicast.server.enabled?=true \
|
||||||
bluetooth.profile.bas.client.enabled=true \
|
bluetooth.profile.bas.client.enabled?=true \
|
||||||
bluetooth.profile.csip.set_coordinator.enabled=true \
|
bluetooth.profile.csip.set_coordinator.enabled?=true \
|
||||||
bluetooth.profile.gatt.enabled=true \
|
bluetooth.profile.gatt.enabled?=true \
|
||||||
bluetooth.profile.hap.client.enabled=true \
|
bluetooth.profile.hap.client.enabled?=true \
|
||||||
bluetooth.profile.hfp.ag.enabled=true \
|
bluetooth.profile.hfp.ag.enabled?=true \
|
||||||
bluetooth.profile.hid.device.enabled=true \
|
bluetooth.profile.hid.device.enabled?=true \
|
||||||
bluetooth.profile.hid.host.enabled=true \
|
bluetooth.profile.hid.host.enabled?=true \
|
||||||
bluetooth.profile.map.server.enabled=true \
|
bluetooth.profile.map.server.enabled?=true \
|
||||||
bluetooth.profile.mcp.server.enabled=true \
|
bluetooth.profile.mcp.server.enabled?=true \
|
||||||
bluetooth.profile.opp.enabled=true \
|
bluetooth.profile.opp.enabled?=true \
|
||||||
bluetooth.profile.pan.nap.enabled=true \
|
bluetooth.profile.pan.nap.enabled?=true \
|
||||||
bluetooth.profile.pan.panu.enabled=true \
|
bluetooth.profile.pan.panu.enabled?=true \
|
||||||
bluetooth.profile.pbap.server.enabled=true \
|
bluetooth.profile.pbap.server.enabled?=true \
|
||||||
bluetooth.profile.sap.server.enabled=true \
|
bluetooth.profile.sap.server.enabled?=true \
|
||||||
bluetooth.profile.tbs.server.enabled=true \
|
bluetooth.profile.tbs.server.enabled?=true \
|
||||||
bluetooth.profile.vc.server.enabled=true
|
bluetooth.profile.vc.server.enabled?=true
|
||||||
|
|
||||||
# Carrier configuration default location
|
# Carrier configuration default location
|
||||||
PRODUCT_PROPERTY_OVERRIDES += \
|
PRODUCT_PROPERTY_OVERRIDES += \
|
||||||
|
@ -208,7 +214,7 @@ PRODUCT_PROPERTY_OVERRIDES += \
|
||||||
persist.vendor.usb.displayport.enabled=1
|
persist.vendor.usb.displayport.enabled=1
|
||||||
else
|
else
|
||||||
PRODUCT_PROPERTY_OVERRIDES += \
|
PRODUCT_PROPERTY_OVERRIDES += \
|
||||||
persist.vendor.usb.displayport.enabled=0
|
persist.vendor.usb.displayport.enabled=1
|
||||||
endif
|
endif
|
||||||
|
|
||||||
USE_LASSEN_OEMHOOK := true
|
USE_LASSEN_OEMHOOK := true
|
||||||
|
@ -294,8 +300,7 @@ PRODUCT_VENDOR_PROPERTIES += \
|
||||||
|
|
||||||
PRODUCT_VENDOR_PROPERTIES += \
|
PRODUCT_VENDOR_PROPERTIES += \
|
||||||
ro.opengles.version=196610 \
|
ro.opengles.version=196610 \
|
||||||
graphics.gpu.profiler.support=true \
|
graphics.gpu.profiler.support=true
|
||||||
debug.renderengine.backend=skiaglthreaded \
|
|
||||||
|
|
||||||
# b/295257834 Add HDR shaders to SurfaceFlinger's pre-warming cache
|
# b/295257834 Add HDR shaders to SurfaceFlinger's pre-warming cache
|
||||||
PRODUCT_VENDOR_PROPERTIES += ro.surface_flinger.prime_shader_cache.ultrahdr=1
|
PRODUCT_VENDOR_PROPERTIES += ro.surface_flinger.prime_shader_cache.ultrahdr=1
|
||||||
|
@ -385,25 +390,24 @@ PRODUCT_HOST_PACKAGES += \
|
||||||
PRODUCT_PACKAGES += \
|
PRODUCT_PACKAGES += \
|
||||||
messaging
|
messaging
|
||||||
|
|
||||||
# Contexthub HAL
|
# CHRE
|
||||||
PRODUCT_PACKAGES += \
|
## Tools
|
||||||
android.hardware.contexthub-service.generic
|
|
||||||
|
|
||||||
# CHRE tools
|
|
||||||
ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT)))
|
ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT)))
|
||||||
PRODUCT_PACKAGES += \
|
PRODUCT_PACKAGES += \
|
||||||
chre_power_test_client \
|
chre_power_test_client \
|
||||||
chre_test_client
|
chre_test_client \
|
||||||
|
chre_aidl_hal_client
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
## HAL
|
||||||
|
include device/google/gs-common/chre/hal.mk
|
||||||
PRODUCT_COPY_FILES += \
|
PRODUCT_COPY_FILES += \
|
||||||
frameworks/native/data/etc/android.hardware.context_hub.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.context_hub.xml
|
frameworks/native/data/etc/android.hardware.context_hub.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.context_hub.xml
|
||||||
|
|
||||||
## Enable the CHRE Daemon
|
## Enable the CHRE Daemon
|
||||||
CHRE_USF_DAEMON_ENABLED := true
|
CHRE_USF_DAEMON_ENABLED := false
|
||||||
CHRE_DEDICATED_TRANSPORT_CHANNEL_ENABLED := true
|
CHRE_DEDICATED_TRANSPORT_CHANNEL_ENABLED := true
|
||||||
PRODUCT_PACKAGES += \
|
PRODUCT_PACKAGES += \
|
||||||
chre \
|
|
||||||
preloaded_nanoapps.json
|
preloaded_nanoapps.json
|
||||||
|
|
||||||
# Filesystem management tools
|
# Filesystem management tools
|
||||||
|
@ -551,7 +555,7 @@ PRODUCT_PACKAGES += \
|
||||||
|
|
||||||
PRODUCT_PACKAGES += \
|
PRODUCT_PACKAGES += \
|
||||||
android.hardware.graphics.mapper@4.0-impl \
|
android.hardware.graphics.mapper@4.0-impl \
|
||||||
android.hardware.graphics.allocator-V2-service
|
android.hardware.graphics.allocator-V1-service
|
||||||
|
|
||||||
PRODUCT_PACKAGES += \
|
PRODUCT_PACKAGES += \
|
||||||
android.hardware.memtrack-service.pixel \
|
android.hardware.memtrack-service.pixel \
|
||||||
|
@ -688,6 +692,7 @@ PRODUCT_DEFAULT_PROPERTY_OVERRIDES += debug.sf.earlyGl.app.duration=16600000
|
||||||
PRODUCT_DEFAULT_PROPERTY_OVERRIDES += debug.sf.frame_rate_multiple_threshold=120
|
PRODUCT_DEFAULT_PROPERTY_OVERRIDES += debug.sf.frame_rate_multiple_threshold=120
|
||||||
PRODUCT_DEFAULT_PROPERTY_OVERRIDES += debug.sf.treat_170m_as_sRGB=1
|
PRODUCT_DEFAULT_PROPERTY_OVERRIDES += debug.sf.treat_170m_as_sRGB=1
|
||||||
PRODUCT_DEFAULT_PROPERTY_OVERRIDES += debug.sf.hwc_hotplug_error_via_neg_vsync=1
|
PRODUCT_DEFAULT_PROPERTY_OVERRIDES += debug.sf.hwc_hotplug_error_via_neg_vsync=1
|
||||||
|
PRODUCT_DEFAULT_PROPERTY_OVERRIDES += debug.sf.hwc_hdcp_via_neg_vsync=1
|
||||||
|
|
||||||
PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.enable_layer_caching=true
|
PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.enable_layer_caching=true
|
||||||
PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.set_idle_timer_ms?=80
|
PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.set_idle_timer_ms?=80
|
||||||
|
@ -710,12 +715,11 @@ PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.use_color_management=tr
|
||||||
PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.protected_contents=true
|
PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.protected_contents=true
|
||||||
PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.display_update_imminent_timeout_ms=50
|
PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.display_update_imminent_timeout_ms=50
|
||||||
|
|
||||||
# force to blend in P3 mode
|
|
||||||
PRODUCT_PROPERTY_OVERRIDES += \
|
PRODUCT_PROPERTY_OVERRIDES += \
|
||||||
persist.sys.sf.native_mode=2 \
|
persist.sys.sf.native_mode=2
|
||||||
persist.sys.sf.color_mode=9
|
|
||||||
PRODUCT_COPY_FILES += \
|
PRODUCT_COPY_FILES += \
|
||||||
device/google/zuma/display/display_colordata_cal0.pb:$(TARGET_COPY_OUT_VENDOR)/etc/display_colordata_cal0.pb
|
device/google/zuma/display/display_colordata_cal0.pb:$(TARGET_COPY_OUT_VENDOR)/etc/display_colordata_cal0.pb \
|
||||||
|
device/google/zuma/display/display_colordata_cal2.pb:$(TARGET_COPY_OUT_VENDOR)/etc/display_colordata_cal2.pb
|
||||||
|
|
||||||
# limit DPP downscale ratio
|
# limit DPP downscale ratio
|
||||||
PRODUCT_DEFAULT_PROPERTY_OVERRIDES += vendor.hwc.dpp.downscale=4
|
PRODUCT_DEFAULT_PROPERTY_OVERRIDES += vendor.hwc.dpp.downscale=4
|
||||||
|
@ -836,7 +840,7 @@ PRODUCT_SOONG_NAMESPACES += \
|
||||||
vendor/google/trusty/common
|
vendor/google/trusty/common
|
||||||
|
|
||||||
PRODUCT_PACKAGES += \
|
PRODUCT_PACKAGES += \
|
||||||
trusty_metricsd
|
trusty_metricsd
|
||||||
|
|
||||||
$(call soong_config_set,google_displaycolor,displaycolor_platform,zuma)
|
$(call soong_config_set,google_displaycolor,displaycolor_platform,zuma)
|
||||||
PRODUCT_PACKAGES += \
|
PRODUCT_PACKAGES += \
|
||||||
|
@ -913,21 +917,6 @@ PRODUCT_PACKAGES += ShannonIms
|
||||||
|
|
||||||
PRODUCT_PACKAGES += ShannonRcs
|
PRODUCT_PACKAGES += ShannonRcs
|
||||||
|
|
||||||
ifeq (,$(filter aosp_% factory_%,$(TARGET_PRODUCT)))
|
|
||||||
#ImsMediaAoc library
|
|
||||||
FEATURE_TYPE := oem_audio
|
|
||||||
SOONG_CONFIG_NAMESPACES += audio_lib
|
|
||||||
SOONG_CONFIG_audio_lib += \
|
|
||||||
audio_type
|
|
||||||
|
|
||||||
SOONG_CONFIG_audio_lib_audio_type := $(FEATURE_TYPE)
|
|
||||||
endif
|
|
||||||
|
|
||||||
# ImsMedia
|
|
||||||
PRODUCT_PACKAGES += \
|
|
||||||
ImsMediaService \
|
|
||||||
libimsmedia
|
|
||||||
|
|
||||||
# Exynos RIL and telephony
|
# Exynos RIL and telephony
|
||||||
# Multi SIM(DSDS)
|
# Multi SIM(DSDS)
|
||||||
SIM_COUNT := 2
|
SIM_COUNT := 2
|
||||||
|
@ -980,6 +969,9 @@ endif
|
||||||
# modem logging binary/configs
|
# modem logging binary/configs
|
||||||
PRODUCT_PACKAGES += modem_logging_control
|
PRODUCT_PACKAGES += modem_logging_control
|
||||||
|
|
||||||
|
# libeomservice_proxy binary/configs
|
||||||
|
PRODUCT_PACKAGES += liboemservice_proxy_default
|
||||||
|
|
||||||
# PILOT SCENARIOS
|
# PILOT SCENARIOS
|
||||||
PRODUCT_PACKAGES += \
|
PRODUCT_PACKAGES += \
|
||||||
Pixel_stability.cfg \
|
Pixel_stability.cfg \
|
||||||
|
@ -1027,7 +1019,7 @@ PRODUCT_PACKAGES += \
|
||||||
|
|
||||||
# Audio
|
# Audio
|
||||||
# Audio HAL Server & Default Implementations
|
# Audio HAL Server & Default Implementations
|
||||||
ifeq ($(RELEASE_PIXEL_AIDL_AUDIO_HAL),true)
|
ifeq ($(USE_AUDIO_HAL_AIDL),true)
|
||||||
include device/google/gs-common/audio/aidl.mk
|
include device/google/gs-common/audio/aidl.mk
|
||||||
else
|
else
|
||||||
include device/google/gs-common/audio/hidl_zuma.mk
|
include device/google/gs-common/audio/hidl_zuma.mk
|
||||||
|
@ -1092,6 +1084,14 @@ PRODUCT_PROPERTY_OVERRIDES += persist.vendor.enable.thermal.genl=true
|
||||||
include device/google/gs-common/edgetpu/edgetpu.mk
|
include device/google/gs-common/edgetpu/edgetpu.mk
|
||||||
# Config variables for TPU chip on device.
|
# Config variables for TPU chip on device.
|
||||||
$(call soong_config_set,edgetpu_config,chip,rio)
|
$(call soong_config_set,edgetpu_config,chip,rio)
|
||||||
|
# Include the edgetpu targets defined the namespaces below into the final image.
|
||||||
|
PRODUCT_SOONG_NAMESPACES += \
|
||||||
|
vendor/google_devices/zuma/proprietary/gchips/tpu/metrics \
|
||||||
|
vendor/google_devices/zuma/proprietary/gchips/tpu/tflite_delegate \
|
||||||
|
vendor/google_devices/zuma/proprietary/gchips/tpu/darwinn_logging_service \
|
||||||
|
vendor/google_devices/zuma/proprietary/gchips/tpu/nnapi_stable_aidl \
|
||||||
|
vendor/google_devices/zuma/proprietary/gchips/tpu/aidl \
|
||||||
|
vendor/google_devices/zuma/proprietary/gchips/tpu/hal
|
||||||
# TPU firmware
|
# TPU firmware
|
||||||
PRODUCT_PACKAGES += edgetpu-rio.fw
|
PRODUCT_PACKAGES += edgetpu-rio.fw
|
||||||
|
|
||||||
|
@ -1185,6 +1185,7 @@ endif
|
||||||
|
|
||||||
# Touch service
|
# Touch service
|
||||||
include hardware/google/pixel/input/twoshay.mk
|
include hardware/google/pixel/input/twoshay.mk
|
||||||
|
include device/google/gs-common/touch/twoshay/aidl_zuma.mk
|
||||||
|
|
||||||
# Allow longer timeout for incident report generation in bugreport
|
# Allow longer timeout for incident report generation in bugreport
|
||||||
# Overriding in /product partition instead of /vendor intentionally,
|
# Overriding in /product partition instead of /vendor intentionally,
|
||||||
|
|
|
@ -120,30 +120,6 @@
|
||||||
<instance>default</instance>
|
<instance>default</instance>
|
||||||
</interface>
|
</interface>
|
||||||
</hal>
|
</hal>
|
||||||
<hal format="aidl" optional="true">
|
|
||||||
<name>com.google.input.algos.spd</name>
|
|
||||||
<version>2</version>
|
|
||||||
<interface>
|
|
||||||
<name>IScreenProtectorDetectorService</name>
|
|
||||||
<instance>default</instance>
|
|
||||||
</interface>
|
|
||||||
</hal>
|
|
||||||
<hal format="aidl" optional="true">
|
|
||||||
<name>com.google.input</name>
|
|
||||||
<version>1-2</version>
|
|
||||||
<interface>
|
|
||||||
<name>ITouchContextService</name>
|
|
||||||
<instance>default</instance>
|
|
||||||
</interface>
|
|
||||||
</hal>
|
|
||||||
<hal format="aidl" optional="true">
|
|
||||||
<name>com.google.input.algos.gril</name>
|
|
||||||
<version>2</version>
|
|
||||||
<interface>
|
|
||||||
<name>IGrilAntennaTuningService</name>
|
|
||||||
<instance>default</instance>
|
|
||||||
</interface>
|
|
||||||
</hal>
|
|
||||||
<hal format="aidl" optional="true">
|
<hal format="aidl" optional="true">
|
||||||
<name>hardware.qorvo.uwb</name>
|
<name>hardware.qorvo.uwb</name>
|
||||||
<interface>
|
<interface>
|
||||||
|
@ -195,6 +171,7 @@
|
||||||
</hal>
|
</hal>
|
||||||
<hal format="aidl" optional="true">
|
<hal format="aidl" optional="true">
|
||||||
<name>com.google.pixel.modem.logmasklibrary</name>
|
<name>com.google.pixel.modem.logmasklibrary</name>
|
||||||
|
<version>1</version>
|
||||||
<interface>
|
<interface>
|
||||||
<name>ILiboemserviceProxy</name>
|
<name>ILiboemserviceProxy</name>
|
||||||
<instance>default</instance>
|
<instance>default</instance>
|
||||||
|
|
BIN
display/display_colordata_cal2.pb
Normal file
BIN
display/display_colordata_cal2.pb
Normal file
Binary file not shown.
|
@ -152,6 +152,26 @@ void dumpAcpmStats() {
|
||||||
readContentsOfDir(acpmTitle, acpmDir, statsSubStr, true, true);
|
readContentsOfDir(acpmTitle, acpmDir, statsSubStr, true, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void dumpTcpmPsyUevent() {
|
||||||
|
const char* tcpmPsy = "tcpm-source-psy-";
|
||||||
|
DIR *dir = opendir("/sys/class/power_supply/");
|
||||||
|
struct dirent *entry;
|
||||||
|
|
||||||
|
if (dir == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
|
while ((entry = readdir(dir)) != NULL) {
|
||||||
|
if (std::string::npos != std::string(entry->d_name).find(tcpmPsy)) {
|
||||||
|
std::string fullPath("/sys/class/power_supply/" + (const std::string)entry->d_name +
|
||||||
|
"/uevent");
|
||||||
|
dumpFileContent("Power supply property tcpm", fullPath.c_str());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
closedir(dir);
|
||||||
|
}
|
||||||
|
|
||||||
void dumpPowerSupplyStats() {
|
void dumpPowerSupplyStats() {
|
||||||
const char* dumpList[][2] = {
|
const char* dumpList[][2] = {
|
||||||
{"CPU PM stats", "/sys/devices/system/cpu/cpupm/cpupm/time_in_state"},
|
{"CPU PM stats", "/sys/devices/system/cpu/cpupm/cpupm/time_in_state"},
|
||||||
|
@ -162,7 +182,6 @@ void dumpPowerSupplyStats() {
|
||||||
{"Power supply property gcpm_pps", "/sys/class/power_supply/gcpm_pps/uevent"},
|
{"Power supply property gcpm_pps", "/sys/class/power_supply/gcpm_pps/uevent"},
|
||||||
{"Power supply property main-charger", "/sys/class/power_supply/main-charger/uevent"},
|
{"Power supply property main-charger", "/sys/class/power_supply/main-charger/uevent"},
|
||||||
{"Power supply property dc-mains", "/sys/class/power_supply/dc-mains/uevent"},
|
{"Power supply property dc-mains", "/sys/class/power_supply/dc-mains/uevent"},
|
||||||
{"Power supply property tcpm", "/sys/class/power_supply/tcpm-source-psy-11-0025/uevent"},
|
|
||||||
{"Power supply property usb", "/sys/class/power_supply/usb/uevent"},
|
{"Power supply property usb", "/sys/class/power_supply/usb/uevent"},
|
||||||
{"Power supply property wireless", "/sys/class/power_supply/wireless/uevent"},
|
{"Power supply property wireless", "/sys/class/power_supply/wireless/uevent"},
|
||||||
};
|
};
|
||||||
|
@ -170,6 +189,8 @@ void dumpPowerSupplyStats() {
|
||||||
for (const auto &row : dumpList) {
|
for (const auto &row : dumpList) {
|
||||||
dumpFileContent(row[0], row[1]);
|
dumpFileContent(row[0], row[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
dumpTcpmPsyUevent();
|
||||||
}
|
}
|
||||||
|
|
||||||
void dumpMaxFg() {
|
void dumpMaxFg() {
|
||||||
|
@ -325,6 +346,7 @@ void dumpLn8411() {
|
||||||
void dumpBatteryHealth() {
|
void dumpBatteryHealth() {
|
||||||
const char* batteryHealth [][2] {
|
const char* batteryHealth [][2] {
|
||||||
{"Battery Health", "/sys/class/power_supply/battery/health_index_stats"},
|
{"Battery Health", "/sys/class/power_supply/battery/health_index_stats"},
|
||||||
|
{"Battery Health SoC Residency", "/sys/class/power_supply/battery/swelling_data"},
|
||||||
{"BMS", "/dev/logbuffer_ssoc"},
|
{"BMS", "/dev/logbuffer_ssoc"},
|
||||||
{"TTF", "/dev/logbuffer_ttf"},
|
{"TTF", "/dev/logbuffer_ttf"},
|
||||||
{"TTF details", "/sys/class/power_supply/battery/ttf_details"},
|
{"TTF details", "/sys/class/power_supply/battery/ttf_details"},
|
||||||
|
@ -417,24 +439,49 @@ void printValuesOfDirectory(const char *directory, std::string debugfs, const ch
|
||||||
files.clear();
|
files.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void dumpChg() {
|
||||||
|
const std::string pmic_bus = "/sys/devices/platform/10cb0000.hsi2c/i2c-11/11-0066";
|
||||||
|
const char* chg_reg_dump_file = "/sys/class/power_supply/main-charger/device/registers_dump";
|
||||||
|
const std::string chg_name_cmd = "/sys/class/power_supply/main-charger/device/name";
|
||||||
|
const std::string pmic_name_cmd = pmic_bus + "/name";
|
||||||
|
const std::string pmic_reg_dump_file = pmic_bus + "/registers_dump";
|
||||||
|
const std::string reg_dump_str = " registers dump";
|
||||||
|
const char* chgConfig [][2] {
|
||||||
|
{"DC_registers dump", "/sys/class/power_supply/dc-mains/device/registers_dump"},
|
||||||
|
};
|
||||||
|
std::string chg_name;
|
||||||
|
std::string pmic_name;
|
||||||
|
|
||||||
|
printf("\n");
|
||||||
|
|
||||||
|
int ret = android::base::ReadFileToString(chg_name_cmd, &chg_name);
|
||||||
|
if (ret && !chg_name.empty()) {
|
||||||
|
chg_name.erase(chg_name.length() - 1); // remove new line
|
||||||
|
const std::string chg_reg_dump_title = chg_name + reg_dump_str;
|
||||||
|
|
||||||
|
/* CHG reg dump */
|
||||||
|
dumpFileContent(chg_reg_dump_title.c_str(), chg_reg_dump_file);
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = android::base::ReadFileToString(pmic_name_cmd, &pmic_name);
|
||||||
|
if (ret && !pmic_name.empty()) {
|
||||||
|
pmic_name.erase(pmic_name.length() - 1); // remove new line
|
||||||
|
const std::string pmic_reg_dump_title = pmic_name + reg_dump_str;
|
||||||
|
|
||||||
|
/* PMIC reg dump */
|
||||||
|
dumpFileContent(pmic_reg_dump_title.c_str(), pmic_reg_dump_file.c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
for (auto &config : chgConfig) {
|
||||||
|
dumpFileContent(config[0], config[1]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void dumpChgUserDebug() {
|
void dumpChgUserDebug() {
|
||||||
const char *chgDebugMax77759 [][2] {
|
|
||||||
{"max77759_chg registers dump", "/d/max77759_chg/registers"},
|
|
||||||
{"max77729_pmic registers dump", "/d/max77729_pmic/registers"},
|
|
||||||
};
|
|
||||||
const char *chgDebugMax77779 [][2] {
|
|
||||||
{"max77779_chg registers dump", "/d/max77779_chg/registers"},
|
|
||||||
{"max77779_pmic registers dump", "/d/max77779_pmic/registers"},
|
|
||||||
};
|
|
||||||
|
|
||||||
const std::string debugfs = "/d/";
|
const std::string debugfs = "/d/";
|
||||||
|
|
||||||
const char *maxFgDir = "/d/maxfg";
|
const char *maxFgDir = "/d/maxfg";
|
||||||
const char *maxFgStrMatch = "maxfg";
|
const char *maxFgStrMatch = "maxfg";
|
||||||
const char *maxFg77779StrMatch = "max77779fg";
|
const char *maxFg77779StrMatch = "max77779fg";
|
||||||
const char *baseChgDir = "/d/max77759_chg";
|
|
||||||
const char *dcRegName = "DC_registers dump";
|
|
||||||
const char *dcRegDir = "/sys/class/power_supply/dc-mains/device/registers_dump";
|
|
||||||
const char *chgTblName = "Charging table dump";
|
const char *chgTblName = "Charging table dump";
|
||||||
const char *chgTblDir = "/d/google_battery/chg_raw_profile";
|
const char *chgTblDir = "/d/google_battery/chg_raw_profile";
|
||||||
|
|
||||||
|
@ -457,20 +504,6 @@ void dumpChgUserDebug() {
|
||||||
if (isUserBuild())
|
if (isUserBuild())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (isValidFile(dcRegDir)) {
|
|
||||||
dumpFileContent(dcRegName, dcRegDir);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isValidDir(baseChgDir)) {
|
|
||||||
for (auto &row : chgDebugMax77759) {
|
|
||||||
dumpFileContent(row[0], row[1]);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
for (auto &row : chgDebugMax77779) {
|
|
||||||
dumpFileContent(row[0], row[1]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
dumpFileContent(chgTblName, chgTblDir);
|
dumpFileContent(chgTblName, chgTblDir);
|
||||||
|
|
||||||
if (isValidDir(maxFgDir)) {
|
if (isValidDir(maxFgDir)) {
|
||||||
|
@ -922,6 +955,7 @@ int main() {
|
||||||
dumpLn8411();
|
dumpLn8411();
|
||||||
dumpBatteryHealth();
|
dumpBatteryHealth();
|
||||||
dumpBatteryDefend();
|
dumpBatteryDefend();
|
||||||
|
dumpChg();
|
||||||
dumpChgUserDebug();
|
dumpChgUserDebug();
|
||||||
dumpBatteryEeprom();
|
dumpBatteryEeprom();
|
||||||
dumpChargerStats();
|
dumpChargerStats();
|
||||||
|
|
24
manifest.xml
24
manifest.xml
|
@ -12,28 +12,4 @@
|
||||||
<name>android.hardware.boot</name>
|
<name>android.hardware.boot</name>
|
||||||
<fqname>IBootControl/default</fqname>
|
<fqname>IBootControl/default</fqname>
|
||||||
</hal>
|
</hal>
|
||||||
<hal format="aidl">
|
|
||||||
<name>com.google.input.algos.spd</name>
|
|
||||||
<version>2</version>
|
|
||||||
<interface>
|
|
||||||
<name>IScreenProtectorDetectorService</name>
|
|
||||||
<instance>default</instance>
|
|
||||||
</interface>
|
|
||||||
</hal>
|
|
||||||
<hal format="aidl">
|
|
||||||
<name>com.google.input</name>
|
|
||||||
<version>2</version>
|
|
||||||
<interface>
|
|
||||||
<name>ITouchContextService</name>
|
|
||||||
<instance>default</instance>
|
|
||||||
</interface>
|
|
||||||
</hal>
|
|
||||||
<hal format="aidl">
|
|
||||||
<name>com.google.input.algos.gril</name>
|
|
||||||
<version>2</version>
|
|
||||||
<interface>
|
|
||||||
<name>IGrilAntennaTuningService</name>
|
|
||||||
<instance>default</instance>
|
|
||||||
</interface>
|
|
||||||
</hal>
|
|
||||||
</manifest>
|
</manifest>
|
||||||
|
|
|
@ -172,61 +172,61 @@
|
||||||
<Limit name="measured-frame-rate-1280x720" range="44-54" />
|
<Limit name="measured-frame-rate-1280x720" range="44-54" />
|
||||||
</MediaCodec>
|
</MediaCodec>
|
||||||
<MediaCodec name="c2.android.av1-dav1d.decoder" type="video/av01" update="true">
|
<MediaCodec name="c2.android.av1-dav1d.decoder" type="video/av01" update="true">
|
||||||
<Limit name="measured-frame-rate-352x288" range="233-315" />
|
<Limit name="measured-frame-rate-352x288" range="442-567" />
|
||||||
<Limit name="measured-frame-rate-640x360" range="114-247" />
|
<Limit name="measured-frame-rate-640x360" range="309-431" />
|
||||||
<Limit name="measured-frame-rate-720x480" range="47-189" />
|
<Limit name="measured-frame-rate-720x480" range="291-452" />
|
||||||
<Limit name="measured-frame-rate-1280x720" range="44-54" />
|
<Limit name="measured-frame-rate-1280x720" range="222-326" />
|
||||||
</MediaCodec>
|
</MediaCodec>
|
||||||
</Decoders>
|
</Decoders>
|
||||||
|
|
||||||
<Encoders>
|
<Encoders>
|
||||||
<MediaCodec name="c2.exynos.h264.encoder" type="video/avc" update="true">
|
<MediaCodec name="c2.exynos.h264.encoder" type="video/avc" update="true">
|
||||||
<Limit name="measured-frame-rate-320x240" range="372-551" />
|
<Limit name="measured-frame-rate-320x240" range="372-551" />
|
||||||
<Limit name="measured-frame-rate-720x480" range="221-308" />
|
<Limit name="measured-frame-rate-720x480" range="161-308" />
|
||||||
<Limit name="measured-frame-rate-1280x720" range="151-190" />
|
<Limit name="measured-frame-rate-1280x720" range="151-190" />
|
||||||
<Limit name="measured-frame-rate-1920x1080" range="58-99" />
|
<Limit name="measured-frame-rate-1920x1080" range="58-99" />
|
||||||
</MediaCodec>
|
</MediaCodec>
|
||||||
<MediaCodec name="c2.exynos.hevc.encoder" type="video/hevc" update="true">
|
<MediaCodec name="c2.exynos.hevc.encoder" type="video/hevc" update="true">
|
||||||
<Limit name="measured-frame-rate-320x240" range="371-553" />
|
<Limit name="measured-frame-rate-320x240" range="371-553" />
|
||||||
<Limit name="measured-frame-rate-720x480" range="214-305" />
|
<Limit name="measured-frame-rate-720x480" range="162-305" />
|
||||||
<Limit name="measured-frame-rate-1280x720" range="154-198" />
|
<Limit name="measured-frame-rate-1280x720" range="154-198" />
|
||||||
<Limit name="measured-frame-rate-1920x1080" range="46-97" />
|
<Limit name="measured-frame-rate-1920x1080" range="46-97" />
|
||||||
</MediaCodec>
|
</MediaCodec>
|
||||||
<MediaCodec name="c2.exynos.mpeg4.encoder" type="video/mp4v-es" update="true">
|
<MediaCodec name="c2.exynos.mpeg4.encoder" type="video/mp4v-es" update="true">
|
||||||
<!-- measured 90%:575-670 med:575 N=2 -->
|
<!-- measured 90%:240-242 med:241 N=2 -->
|
||||||
<Limit name="measured-frame-rate-176x144" range="575-620" /> <!-- v90%=1.1 -->
|
<Limit name="measured-frame-rate-176x144" range="240-241" /> <!-- v90%=1.0 -->
|
||||||
<!-- measured 90%:222-283 med:222 SLOW N=2 -->
|
<!-- measured 90%:168-172 med:169 N=2 -->
|
||||||
<Limit name="measured-frame-rate-352x288" range="222-250" /> <!-- v90%=1.1 -->
|
<Limit name="measured-frame-rate-352x288" range="168-170" /> <!-- v90%=1.0 -->
|
||||||
<!-- measured 90%:123-124 med:124 N=2 -->
|
<!-- measured 90%:85-86 med:85 N=2 -->
|
||||||
<Limit name="measured-frame-rate-640x480" range="123-124" /> <!-- v90%=1.0 -->
|
<Limit name="measured-frame-rate-640x480" range="85-85" /> <!-- v90%=1.0 -->
|
||||||
</MediaCodec>
|
</MediaCodec>
|
||||||
<MediaCodec name="c2.exynos.h263.encoder" type="video/3gpp" update="true">
|
<MediaCodec name="c2.exynos.h263.encoder" type="video/3gpp" update="true">
|
||||||
<!-- measured 90%:626-686 med:627 N=2 -->
|
<!-- measured 90%:244-248 med:244 N=2 -->
|
||||||
<Limit name="measured-frame-rate-176x144" range="626-656" /> <!-- v90%=1.0 -->
|
<Limit name="measured-frame-rate-176x144" range="244-246" /> <!-- v90%=1.0 -->
|
||||||
<!-- measured 90%:295-300 med:296 N=2 -->
|
<!-- measured 90%:166-170 med:166 N=2 -->
|
||||||
<Limit name="measured-frame-rate-352x288" range="295-298" /> <!-- v90%=1.0 -->
|
<Limit name="measured-frame-rate-352x288" range="166-168" /> <!-- v90%=1.0 -->
|
||||||
<!-- measured 90%:95-97 med:96 N=2 -->
|
<!-- measured 90%:67-68 med:67 N=2 -->
|
||||||
<Limit name="measured-frame-rate-704x576" range="95-96" /> <!-- v90%=1.0 -->
|
<Limit name="measured-frame-rate-704x576" range="67-67" /> <!-- v90%=1.0 -->
|
||||||
</MediaCodec>
|
</MediaCodec>
|
||||||
<MediaCodec name="c2.exynos.vp8.encoder" type="video/x-vnd.on2.vp8" update="true">
|
<MediaCodec name="c2.exynos.vp8.encoder" type="video/x-vnd.on2.vp8" update="true">
|
||||||
<!-- measured 90%:478-498 med:479 N=2 -->
|
<!-- measured 90%:256-259 med:256 N=2 -->
|
||||||
<Limit name="measured-frame-rate-320x180" range="478-488" /> <!-- v90%=1.0 -->
|
<Limit name="measured-frame-rate-320x180" range="256-257" /> <!-- v90%=1.0 -->
|
||||||
<!-- measured 90%:334-347 med:334 N=2 -->
|
<!-- measured 90%:165-167 med:165 N=2 -->
|
||||||
<Limit name="measured-frame-rate-640x360" range="334-341" /> <!-- v90%=1.0 -->
|
<Limit name="measured-frame-rate-640x360" range="165-166" /> <!-- v90%=1.0 -->
|
||||||
<!-- measured 90%:142-143 med:142 N=2 -->
|
<!-- measured 90%:89-92 med:90 N=2 -->
|
||||||
<Limit name="measured-frame-rate-1280x720" range="142-142" /> <!-- v90%=1.0 -->
|
<Limit name="measured-frame-rate-1280x720" range="89-90" /> <!-- v90%=1.0 -->
|
||||||
<!-- measured 90%:69-70 med:69 N=2 -->
|
<!-- measured 90%:78-80 med:79 N=2 -->
|
||||||
<Limit name="measured-frame-rate-1920x1080" range="69-69" /> <!-- v90%=1.0 -->
|
<Limit name="measured-frame-rate-1920x1080" range="78-79" /> <!-- v90%=1.0 -->
|
||||||
</MediaCodec>
|
</MediaCodec>
|
||||||
<MediaCodec name="c2.exynos.vp9.encoder" type="video/x-vnd.on2.vp9" update="true">
|
<MediaCodec name="c2.exynos.vp9.encoder" type="video/x-vnd.on2.vp9" update="true">
|
||||||
<!-- measured 90%:474-485 med:474 N=2 -->
|
<!-- measured 90%:281-285 med:281 N=2 -->
|
||||||
<Limit name="measured-frame-rate-320x180" range="474-479" /> <!-- v90%=1.0 -->
|
<Limit name="measured-frame-rate-320x180" range="281-283" /> <!-- v90%=1.0 -->
|
||||||
<!-- measured 90%:192-267 med:193 SLOW N=2 -->
|
<!-- measured 90%:230-233 med:231 N=2 -->
|
||||||
<Limit name="measured-frame-rate-640x360" range="192-227" /> <!-- v90%=1.2 -->
|
<Limit name="measured-frame-rate-640x360" range="230-231" /> <!-- v90%=1.0 -->
|
||||||
<!-- measured 90%:95-96 med:96 N=2 -->
|
<!-- measured 90%:122-124 med:123 N=2 -->
|
||||||
<Limit name="measured-frame-rate-1280x720" range="95-96" /> <!-- v90%=1.0 -->
|
<Limit name="measured-frame-rate-1280x720" range="122-123" /> <!-- v90%=1.0 -->
|
||||||
<!-- measured 90%:84-86 med:85 N=2 -->
|
<!-- measured 90%:72-73 med:73 N=2 -->
|
||||||
<Limit name="measured-frame-rate-1920x1080" range="84-85" /> <!-- v90%=1.0 -->
|
<Limit name="measured-frame-rate-1920x1080" range="72-73" /> <!-- v90%=1.0 -->
|
||||||
</MediaCodec>
|
</MediaCodec>
|
||||||
<MediaCodec name="c2.google.av1.encoder" type="video/av01" update="true">
|
<MediaCodec name="c2.google.av1.encoder" type="video/av01" update="true">
|
||||||
<!-- measured 90%:292-307 med:292 N=2 -->
|
<!-- measured 90%:292-307 med:292 N=2 -->
|
||||||
|
@ -240,8 +240,8 @@
|
||||||
</MediaCodec>
|
</MediaCodec>
|
||||||
|
|
||||||
<MediaCodec name="c2.android.h263.encoder" type="video/3gpp" update="true">
|
<MediaCodec name="c2.android.h263.encoder" type="video/3gpp" update="true">
|
||||||
<!-- measured 90%:868-1433 med:869 SLOW N=2 -->
|
<!-- measured 90%:399-837 med:399 SLOW N=2 -->
|
||||||
<Limit name="measured-frame-rate-176x144" range="868-1116" /> <!-- v90%=1.3 -->
|
<Limit name="measured-frame-rate-176x144" range="399-880" /> <!-- v90%=1.4 -->
|
||||||
</MediaCodec>
|
</MediaCodec>
|
||||||
<MediaCodec name="c2.android.avc.encoder" type="video/avc" update="true">
|
<MediaCodec name="c2.android.avc.encoder" type="video/avc" update="true">
|
||||||
<!-- measured 90%:357-443 med:427 N=4 -->
|
<!-- measured 90%:357-443 med:427 N=4 -->
|
||||||
|
@ -258,34 +258,34 @@
|
||||||
<Limit name="measured-frame-rate-320x240" range="43-44" /> <!-- v90%=1.0 -->
|
<Limit name="measured-frame-rate-320x240" range="43-44" /> <!-- v90%=1.0 -->
|
||||||
</MediaCodec>
|
</MediaCodec>
|
||||||
<MediaCodec name="c2.android.mpeg4.encoder" type="video/mp4v-es" update="true">
|
<MediaCodec name="c2.android.mpeg4.encoder" type="video/mp4v-es" update="true">
|
||||||
<!-- measured 90%:1426-1471 med:1427 N=2 -->
|
<!-- measured 90%:451-1716 med:451 SLOW N=2 -->
|
||||||
<Limit name="measured-frame-rate-176x144" range="1426-1448" /> <!-- v90%=1.0 -->
|
<Limit name="measured-frame-rate-176x144" range="451-880" /> <!-- v90%=2.0 -->
|
||||||
</MediaCodec>
|
</MediaCodec>
|
||||||
<MediaCodec name="c2.android.vp8.encoder" type="video/x-vnd.on2.vp8" update="true">
|
<MediaCodec name="c2.android.vp8.encoder" type="video/x-vnd.on2.vp8" update="true">
|
||||||
<!-- measured 90%:392-448 med:392 N=2 -->
|
<!-- measured 90%:392-448 med:392 N=2 -->
|
||||||
<Limit name="measured-frame-rate-320x180" range="392-419" /> <!-- v90%=1.1 -->
|
<Limit name="measured-frame-rate-320x180" range="180-419" /> <!-- v90%=1.1 -->
|
||||||
<!-- measured 90%:213-226 med:214 N=2 -->
|
<!-- measured 90%:213-226 med:214 N=2 -->
|
||||||
<Limit name="measured-frame-rate-640x360" range="213-219" /> <!-- v90%=1.0 -->
|
<Limit name="measured-frame-rate-640x360" range="102-219" /> <!-- v90%=1.0 -->
|
||||||
<!-- measured 90%:48-54 med:49 N=2 -->
|
<!-- measured 90%:48-54 med:49 N=2 -->
|
||||||
<Limit name="measured-frame-rate-1280x720" range="48-51" /> <!-- v90%=1.1 -->
|
<Limit name="measured-frame-rate-1280x720" range="48-51" /> <!-- v90%=1.1 -->
|
||||||
<!-- measured 90%:35-37 med:36 N=2 -->
|
<!-- measured 90%:35-37 med:36 N=2 -->
|
||||||
<Limit name="measured-frame-rate-1920x1080" range="35-36" /> <!-- v90%=1.0 -->
|
<Limit name="measured-frame-rate-1920x1080" range="12-36" /> <!-- v90%=1.0 -->
|
||||||
</MediaCodec>
|
</MediaCodec>
|
||||||
<MediaCodec name="c2.android.vp9.encoder" type="video/x-vnd.on2.vp9" update="true">
|
<MediaCodec name="c2.android.vp9.encoder" type="video/x-vnd.on2.vp9" update="true">
|
||||||
<!-- measured 90%:304-378 med:304 SLOW N=2 -->
|
<!-- measured 90%:304-378 med:304 SLOW N=2 -->
|
||||||
<Limit name="measured-frame-rate-320x180" range="304-339" /> <!-- v90%=1.1 -->
|
<Limit name="measured-frame-rate-320x180" range="180-339" /> <!-- v90%=1.1 -->
|
||||||
<!-- measured 90%:103-106 med:104 N=2 -->
|
<!-- measured 90%:103-106 med:104 N=2 -->
|
||||||
<Limit name="measured-frame-rate-640x360" range="103-104" /> <!-- v90%=1.0 -->
|
<Limit name="measured-frame-rate-640x360" range="52-104" /> <!-- v90%=1.0 -->
|
||||||
<!-- measured 90%:20-24 med:21 N=2 -->
|
<!-- measured 90%:20-24 med:21 N=2 -->
|
||||||
<Limit name="measured-frame-rate-1280x720" range="20-22" /> <!-- v90%=1.1 -->
|
<Limit name="measured-frame-rate-1280x720" range="7-22" /> <!-- v90%=1.1 -->
|
||||||
</MediaCodec>
|
</MediaCodec>
|
||||||
<MediaCodec name="c2.android.av1.encoder" type="video/av01" update="true">
|
<MediaCodec name="c2.android.av1.encoder" type="video/av01" update="true">
|
||||||
<!-- measured 90%:367-372 med:367 N=2 -->
|
<!-- measured 90%:198-374 med:199 SLOW N=2 -->
|
||||||
<Limit name="measured-frame-rate-320x240" range="367-369" /> <!-- v90%=1.0 -->
|
<Limit name="measured-frame-rate-320x240" range="91-272" /> <!-- v90%=1.4 -->
|
||||||
<!-- measured 90%:66-78 med:67 N=2 -->
|
<!-- measured 90%:16-67 med:17 SLOW N=2 FLAKY(8 - 68) variance:2.0 -->
|
||||||
<Limit name="measured-frame-rate-720x480" range="66-72" /> <!-- v90%=1.1 -->
|
<Limit name="measured-frame-rate-720x480" range="32-72" />
|
||||||
<!-- measured 90%:23-28 med:23 N=2 -->
|
<!-- measured 90%:23-28 med:23 N=2 -->
|
||||||
<Limit name="measured-frame-rate-1280x720" range="23-25" /> <!-- v90%=1.1 -->
|
<Limit name="measured-frame-rate-1280x720" range="7-25" /> <!-- v90%=1.1 -->
|
||||||
</MediaCodec>
|
</MediaCodec>
|
||||||
|
|
||||||
</Encoders>
|
</Encoders>
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
#name,version,ml_type,compute_enable,compute_timer,train_enable,train_timer,monitor_enable_monitor_timer,execution_type,execution_timer
|
#name,version,ml_type,compute_enable,compute_timer,train_enable,train_timer,monitor_enable_monitor_timer,execution_type,execution_timer
|
||||||
|
fr2_bps_ml_model,0,LEGACY,true,0,false,0,false,0,SYNCHRONOUS_REGULAR,5000
|
||||||
sample_linear_reg,0,LEGACY,false,0,false,0,false,0,SYNCHRONOUS_REGULAR,5000
|
sample_linear_reg,0,LEGACY,false,0,false,0,false,0,SYNCHRONOUS_REGULAR,5000
|
||||||
sample_fully_conn,0,LEGACY,false,0,false,0,false,0,SYNCHRONOUS_REGULAR,5000
|
sample_fully_conn,88,LEGACY,false,0,false,0,false,0,SYNCHRONOUS_REGULAR,5000
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
#name,version,ml_type,compute_enable,compute_timer,train_enable,train_timer,monitor_enable_monitor_timer,execution_type,execution_timer
|
#name,version,ml_type,compute_enable,compute_timer,train_enable,train_timer,monitor_enable_monitor_timer,execution_type,execution_timer
|
||||||
|
fr2_bps_ml_model,0,LEGACY,true,0,false,0,false,0,SYNCHRONOUS_REGULAR,5000
|
||||||
sample_linear_reg,0,LEGACY,false,0,false,0,false,0,SYNCHRONOUS_REGULAR,5000
|
sample_linear_reg,0,LEGACY,false,0,false,0,false,0,SYNCHRONOUS_REGULAR,5000
|
||||||
sample_fully_conn,0,LEGACY,false,0,false,0,false,0,SYNCHRONOUS_REGULAR,5000
|
sample_fully_conn,88,LEGACY,false,0,false,0,false,0,SYNCHRONOUS_REGULAR,5000
|
||||||
|
|
|
@ -304,6 +304,7 @@
|
||||||
<item>com.zhiliaoapp.musically:0.07</item>
|
<item>com.zhiliaoapp.musically:0.07</item>
|
||||||
<item>com.bilibili.app.in:0.07</item>
|
<item>com.bilibili.app.in:0.07</item>
|
||||||
<item>com.twitter.android:0.07</item>
|
<item>com.twitter.android:0.07</item>
|
||||||
|
<item>com.google.android.youtube:0.07</item>
|
||||||
</string-array>
|
</string-array>
|
||||||
|
|
||||||
<!-- Pre-scale volume at volume step 1 for Absolute Volume -->
|
<!-- Pre-scale volume at volume step 1 for Absolute Volume -->
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
on property:sys.boot_completed=1
|
on property:sys.boot_completed=1
|
||||||
|
chown system system /sys/class/power_supply/maxfg_base/fg_learning_events
|
||||||
|
chown system system /sys/class/power_supply/maxfg/fg_learning_events
|
||||||
start vendor.pixelstats_vendor
|
start vendor.pixelstats_vendor
|
||||||
on post-fs-data
|
on post-fs-data
|
||||||
chown system system /sys/kernel/metrics/irq/stats_reset
|
chown system system /sys/kernel/metrics/irq/stats_reset
|
||||||
|
|
|
@ -101,12 +101,41 @@ const struct SysfsCollector::SysfsPaths sysfs_paths = {
|
||||||
.OffloadEffectsIdPath = "/sys/devices/platform/audiometrics/offload_effects_id",
|
.OffloadEffectsIdPath = "/sys/devices/platform/audiometrics/offload_effects_id",
|
||||||
.OffloadEffectsDurationPath = "/sys/devices/platform/audiometrics/offload_effects_duration",
|
.OffloadEffectsDurationPath = "/sys/devices/platform/audiometrics/offload_effects_duration",
|
||||||
.BluetoothAudioUsagePath = "/sys/devices/platform/audiometrics/bt_usage",
|
.BluetoothAudioUsagePath = "/sys/devices/platform/audiometrics/bt_usage",
|
||||||
.GMSRPath = "/sys/class/power_supply/maxfg/gmsr"
|
.GMSRPath = {
|
||||||
|
"/sys/class/power_supply/maxfg/gmsr",
|
||||||
|
"/sys/class/power_supply/maxfg_base/gmsr",
|
||||||
|
},
|
||||||
|
.DisplayPortStatsPaths = {
|
||||||
|
"/sys/devices/platform/exynos-drm/displayport/drm-displayport-stats/link_negotiation_failures",
|
||||||
|
"/sys/devices/platform/exynos-drm/displayport/drm-displayport-stats/edid_read_failures",
|
||||||
|
"/sys/devices/platform/exynos-drm/displayport/drm-displayport-stats/dpcd_read_failures",
|
||||||
|
"/sys/devices/platform/exynos-drm/displayport/drm-displayport-stats/edid_invalid_failures",
|
||||||
|
"/sys/devices/platform/exynos-drm/displayport/drm-displayport-stats/sink_count_invalid_failures",
|
||||||
|
"/sys/devices/platform/exynos-drm/displayport/drm-displayport-stats/link_unstable_failures",
|
||||||
|
},
|
||||||
|
.HDCPStatsPaths = {
|
||||||
|
"/sys/devices/platform/hdcp/hdcp2_success_count",
|
||||||
|
"/sys/devices/platform/hdcp/hdcp2_fallback_count",
|
||||||
|
"/sys/devices/platform/hdcp/hdcp2_fail_count",
|
||||||
|
"/sys/devices/platform/hdcp/hdcp1_success_count",
|
||||||
|
"/sys/devices/platform/hdcp/hdcp1_fail_count",
|
||||||
|
"/sys/devices/platform/hdcp/hdcp0_count",
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const struct UeventListener::UeventPaths ueventPaths = {
|
const struct UeventListener::UeventPaths ueventPaths = {
|
||||||
.AudioUevent = "/devices/virtual/amcs/amcs",
|
.AudioUevent = "/devices/virtual/amcs/amcs",
|
||||||
.TypeCPartnerUevent = "PRODUCT_TYPE="};
|
.TypeCPartnerUevent = "PRODUCT_TYPE=",
|
||||||
|
.FGLearningPath = {
|
||||||
|
"/sys/class/power_supply/maxfg/fg_learning_events",
|
||||||
|
"/sys/class/power_supply/maxfg_base/fg_learning_events"
|
||||||
|
},
|
||||||
|
.FwUpdatePath = "",
|
||||||
|
.FGModelLoadingPath = {
|
||||||
|
"/sys/class/power_supply/maxfg/m5_model_state",
|
||||||
|
"/sys/class/power_supply/maxfg_base/m5_model_state"
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
LOG(INFO) << "starting PixelStats";
|
LOG(INFO) << "starting PixelStats";
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
#include <AocStateResidencyDataProvider.h>
|
#include <AocStateResidencyDataProvider.h>
|
||||||
#include <CpupmStateResidencyDataProvider.h>
|
#include <CpupmStateResidencyDataProvider.h>
|
||||||
#include <DevfreqStateResidencyDataProvider.h>
|
#include <DevfreqStateResidencyDataProvider.h>
|
||||||
|
#include <DisplayMrrStateResidencyDataProvider.h>
|
||||||
#include <AdaptiveDvfsStateResidencyDataProvider.h>
|
#include <AdaptiveDvfsStateResidencyDataProvider.h>
|
||||||
#include <TpuDvfsStateResidencyDataProvider.h>
|
#include <TpuDvfsStateResidencyDataProvider.h>
|
||||||
#include <UfsStateResidencyDataProvider.h>
|
#include <UfsStateResidencyDataProvider.h>
|
||||||
|
@ -39,6 +40,7 @@ using aidl::android::hardware::power::stats::AdaptiveDvfsStateResidencyDataProvi
|
||||||
using aidl::android::hardware::power::stats::AocStateResidencyDataProvider;
|
using aidl::android::hardware::power::stats::AocStateResidencyDataProvider;
|
||||||
using aidl::android::hardware::power::stats::CpupmStateResidencyDataProvider;
|
using aidl::android::hardware::power::stats::CpupmStateResidencyDataProvider;
|
||||||
using aidl::android::hardware::power::stats::DevfreqStateResidencyDataProvider;
|
using aidl::android::hardware::power::stats::DevfreqStateResidencyDataProvider;
|
||||||
|
using aidl::android::hardware::power::stats::DisplayMrrStateResidencyDataProvider;
|
||||||
using aidl::android::hardware::power::stats::DvfsStateResidencyDataProvider;
|
using aidl::android::hardware::power::stats::DvfsStateResidencyDataProvider;
|
||||||
using aidl::android::hardware::power::stats::UfsStateResidencyDataProvider;
|
using aidl::android::hardware::power::stats::UfsStateResidencyDataProvider;
|
||||||
using aidl::android::hardware::power::stats::EnergyConsumerType;
|
using aidl::android::hardware::power::stats::EnergyConsumerType;
|
||||||
|
@ -648,6 +650,11 @@ void addPixelStateResidencyDataProvider(std::shared_ptr<PowerStats> p) {
|
||||||
p->addStateResidencyDataProvider(std::move(pixelSdp));
|
p->addStateResidencyDataProvider(std::move(pixelSdp));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void addDisplayMRR(std::shared_ptr<PowerStats> p) {
|
||||||
|
p->addStateResidencyDataProvider(std::make_unique<DisplayMrrStateResidencyDataProvider>(
|
||||||
|
"Display", "/sys/class/drm/card0/device/primary-panel/"));
|
||||||
|
}
|
||||||
|
|
||||||
void addZumaCommonDataProviders(std::shared_ptr<PowerStats> p) {
|
void addZumaCommonDataProviders(std::shared_ptr<PowerStats> p) {
|
||||||
setEnergyMeter(p);
|
setEnergyMeter(p);
|
||||||
|
|
||||||
|
|
|
@ -23,6 +23,7 @@ using aidl::android::hardware::power::stats::PowerStats;
|
||||||
void addAoC(std::shared_ptr<PowerStats> p);
|
void addAoC(std::shared_ptr<PowerStats> p);
|
||||||
void addCPUclusters(std::shared_ptr<PowerStats> p);
|
void addCPUclusters(std::shared_ptr<PowerStats> p);
|
||||||
void addDevfreq(std::shared_ptr<PowerStats> p);
|
void addDevfreq(std::shared_ptr<PowerStats> p);
|
||||||
|
void addDisplayMRR(std::shared_ptr<PowerStats> p);
|
||||||
void addDvfsStats(std::shared_ptr<PowerStats> p);
|
void addDvfsStats(std::shared_ptr<PowerStats> p);
|
||||||
void addGNSS(std::shared_ptr<PowerStats> p);
|
void addGNSS(std::shared_ptr<PowerStats> p);
|
||||||
void addGPU(std::shared_ptr<PowerStats> p);
|
void addGPU(std::shared_ptr<PowerStats> p);
|
||||||
|
|
|
@ -573,6 +573,11 @@ Usb::Usb()
|
||||||
ALOGE("mDisplayPortActivateTimer timerfd failed: %s", strerror(errno));
|
ALOGE("mDisplayPortActivateTimer timerfd failed: %s", strerror(errno));
|
||||||
abort();
|
abort();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ALOGI("feature flag enable_usb_data_compliance_warning: %d",
|
||||||
|
usb_flags::enable_usb_data_compliance_warning());
|
||||||
|
ALOGI("feature flag enable_input_power_limited_warning: %d",
|
||||||
|
usb_flags::enable_input_power_limited_warning());
|
||||||
}
|
}
|
||||||
|
|
||||||
ScopedAStatus Usb::switchRole(const string& in_portName, const PortRole& in_role,
|
ScopedAStatus Usb::switchRole(const string& in_portName, const PortRole& in_role,
|
||||||
|
@ -1218,6 +1223,16 @@ static void uevent_event(uint32_t /*epevents*/, struct data *payload) {
|
||||||
payload->usb->mPartnerUp = true;
|
payload->usb->mPartnerUp = true;
|
||||||
pthread_cond_signal(&payload->usb->mPartnerCV);
|
pthread_cond_signal(&payload->usb->mPartnerCV);
|
||||||
pthread_mutex_unlock(&payload->usb->mPartnerLock);
|
pthread_mutex_unlock(&payload->usb->mPartnerLock);
|
||||||
|
} else if (std::regex_match(cp, std::regex("(remove)(.*)(-partner)"))) {
|
||||||
|
string drmDisconnectPath = string(kDisplayPortDrmPath) + "usbc_cable_disconnect";
|
||||||
|
|
||||||
|
if (payload->usb->mPartnerSupportsDisplayPort) {
|
||||||
|
ALOGI("displayport partner removed");
|
||||||
|
if (!WriteStringToFile("1", drmDisconnectPath)) {
|
||||||
|
ALOGE("Failed to signal disconnect to drm");
|
||||||
|
}
|
||||||
|
payload->usb->mPartnerSupportsDisplayPort = false;
|
||||||
|
}
|
||||||
} else if (!strncmp(cp, "DEVTYPE=typec_", strlen("DEVTYPE=typec_")) ||
|
} else if (!strncmp(cp, "DEVTYPE=typec_", strlen("DEVTYPE=typec_")) ||
|
||||||
!strncmp(cp, "DRIVER=max77759tcpc",
|
!strncmp(cp, "DRIVER=max77759tcpc",
|
||||||
strlen("DRIVER=max77759tcpc")) ||
|
strlen("DRIVER=max77759tcpc")) ||
|
||||||
|
@ -1384,6 +1399,8 @@ ScopedAStatus Usb::setCallback(const shared_ptr<IUsbCallback>& in_callback) {
|
||||||
return ScopedAStatus::ok();
|
return ScopedAStatus::ok();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/***** DisplayPort Alt Mode Helpers *****/
|
||||||
|
|
||||||
Status Usb::getDisplayPortUsbPathHelper(string *path) {
|
Status Usb::getDisplayPortUsbPathHelper(string *path) {
|
||||||
DIR *dp;
|
DIR *dp;
|
||||||
Status result = Status::ERROR;
|
Status result = Status::ERROR;
|
||||||
|
@ -1800,6 +1817,7 @@ void Usb::setupDisplayPortPoll() {
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
ALOGI("usbdp: setup: beginning setup for displayport poll thread");
|
ALOGI("usbdp: setup: beginning setup for displayport poll thread");
|
||||||
|
mPartnerSupportsDisplayPort = true;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If thread is currently starting, then it hasn't setup DisplayPort fd's, and we can abandon
|
* If thread is currently starting, then it hasn't setup DisplayPort fd's, and we can abandon
|
||||||
|
|
|
@ -156,6 +156,11 @@ struct Usb : public BnUsb {
|
||||||
* eventfd to monitor whether a connection results in DisplayPort Alt Mode activating.
|
* eventfd to monitor whether a connection results in DisplayPort Alt Mode activating.
|
||||||
*/
|
*/
|
||||||
int mDisplayPortActivateTimer;
|
int mDisplayPortActivateTimer;
|
||||||
|
/*
|
||||||
|
* Indicates whether or not port partner supports DisplayPort, and is used to
|
||||||
|
* communicate to the drm when the port partner physically disconnects.
|
||||||
|
*/
|
||||||
|
bool mPartnerSupportsDisplayPort;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
pthread_t mPoll;
|
pthread_t mPoll;
|
||||||
|
|
|
@ -26,6 +26,7 @@
|
||||||
#include <pixelstats/StatsHelper.h>
|
#include <pixelstats/StatsHelper.h>
|
||||||
#include <pixelusb/CommonUtils.h>
|
#include <pixelusb/CommonUtils.h>
|
||||||
#include <sys/epoll.h>
|
#include <sys/epoll.h>
|
||||||
|
#include <sys/timerfd.h>
|
||||||
#include <utils/Log.h>
|
#include <utils/Log.h>
|
||||||
|
|
||||||
#include <regex>
|
#include <regex>
|
||||||
|
@ -48,6 +49,9 @@ namespace usb {
|
||||||
#define UEVENT_MSG_LEN 2048
|
#define UEVENT_MSG_LEN 2048
|
||||||
#define USB_STATE_MAX_LEN 20
|
#define USB_STATE_MAX_LEN 20
|
||||||
#define DATA_ROLE_MAX_LEN 10
|
#define DATA_ROLE_MAX_LEN 10
|
||||||
|
#define WARNING_SURFACE_DELAY_SEC 5
|
||||||
|
#define ENUM_FAIL_DEFAULT_COUNT_THRESHOLD 3
|
||||||
|
#define DEVICE_FLAKY_CONNECTION_CONFIGURED_COUNT_THRESHOLD 5
|
||||||
|
|
||||||
constexpr char kUdcConfigfsPath[] = "/config/usb_gadget/g1/UDC";
|
constexpr char kUdcConfigfsPath[] = "/config/usb_gadget/g1/UDC";
|
||||||
constexpr char kNotAttachedState[] = "not attached\n";
|
constexpr char kNotAttachedState[] = "not attached\n";
|
||||||
|
@ -115,6 +119,15 @@ UsbDataSessionMonitor::UsbDataSessionMonitor(
|
||||||
if (addEpollFd(epollFd, ueventFd))
|
if (addEpollFd(epollFd, ueventFd))
|
||||||
abort();
|
abort();
|
||||||
|
|
||||||
|
unique_fd timerFd(timerfd_create(CLOCK_BOOTTIME, TFD_NONBLOCK));
|
||||||
|
if (timerFd.get() == -1) {
|
||||||
|
ALOGE("create timerFd failed");
|
||||||
|
abort();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (addEpollFd(epollFd, timerFd))
|
||||||
|
abort();
|
||||||
|
|
||||||
if (addEpollFile(epollFd.get(), dataRolePath, mDataRoleFd) != 0) {
|
if (addEpollFile(epollFd.get(), dataRolePath, mDataRoleFd) != 0) {
|
||||||
ALOGE("monitor data role failed");
|
ALOGE("monitor data role failed");
|
||||||
abort();
|
abort();
|
||||||
|
@ -139,6 +152,7 @@ UsbDataSessionMonitor::UsbDataSessionMonitor(
|
||||||
|
|
||||||
mEpollFd = std::move(epollFd);
|
mEpollFd = std::move(epollFd);
|
||||||
mUeventFd = std::move(ueventFd);
|
mUeventFd = std::move(ueventFd);
|
||||||
|
mTimerFd = std::move(timerFd);
|
||||||
mUpdatePortStatusCb = updatePortStatusCb;
|
mUpdatePortStatusCb = updatePortStatusCb;
|
||||||
|
|
||||||
if (ReadFileToString(kUdcConfigfsPath, &udc) && !udc.empty())
|
if (ReadFileToString(kUdcConfigfsPath, &udc) && !udc.empty())
|
||||||
|
@ -150,6 +164,9 @@ UsbDataSessionMonitor::UsbDataSessionMonitor(
|
||||||
ALOGE("pthread creation failed %d", errno);
|
ALOGE("pthread creation failed %d", errno);
|
||||||
abort();
|
abort();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ALOGI("feature flag enable_report_usb_data_compliance_warning: %d",
|
||||||
|
usb_flags::enable_report_usb_data_compliance_warning());
|
||||||
}
|
}
|
||||||
|
|
||||||
UsbDataSessionMonitor::~UsbDataSessionMonitor() {}
|
UsbDataSessionMonitor::~UsbDataSessionMonitor() {}
|
||||||
|
@ -223,13 +240,55 @@ void UsbDataSessionMonitor::notifyComplianceWarning() {
|
||||||
|
|
||||||
void UsbDataSessionMonitor::evaluateComplianceWarning() {
|
void UsbDataSessionMonitor::evaluateComplianceWarning() {
|
||||||
std::set<ComplianceWarning> newWarningSet;
|
std::set<ComplianceWarning> newWarningSet;
|
||||||
|
int elapsedTimeSec;
|
||||||
|
|
||||||
// TODO: add heuristics and update newWarningSet
|
elapsedTimeSec =
|
||||||
if (mDataRole == PortDataRole::DEVICE && mUdcBind) {
|
std::chrono::duration_cast<std::chrono::seconds>(boot_clock::now() - mDataSessionStart)
|
||||||
} else if (mDataRole == PortDataRole::HOST) {
|
.count();
|
||||||
|
|
||||||
|
if (elapsedTimeSec >= WARNING_SURFACE_DELAY_SEC) {
|
||||||
|
if (mDataRole == PortDataRole::DEVICE && mUdcBind) {
|
||||||
|
int configuredCount = std::count(mDeviceState.states.begin(),
|
||||||
|
mDeviceState.states.end(), kConfiguredState);
|
||||||
|
int defaultCount =
|
||||||
|
std::count(mDeviceState.states.begin(), mDeviceState.states.end(), kDefaultState);
|
||||||
|
|
||||||
|
if (configuredCount == 0 && defaultCount > ENUM_FAIL_DEFAULT_COUNT_THRESHOLD)
|
||||||
|
newWarningSet.insert(ComplianceWarning::ENUMERATION_FAIL);
|
||||||
|
|
||||||
|
if (configuredCount > DEVICE_FLAKY_CONNECTION_CONFIGURED_COUNT_THRESHOLD)
|
||||||
|
newWarningSet.insert(ComplianceWarning::FLAKY_CONNECTION);
|
||||||
|
} else if (mDataRole == PortDataRole::HOST) {
|
||||||
|
int host1StateCount = mHost1State.states.size();
|
||||||
|
int host1ConfiguredCount =
|
||||||
|
std::count(mHost1State.states.begin(), mHost1State.states.end(), kConfiguredState);
|
||||||
|
int host1DefaultCount =
|
||||||
|
std::count(mHost1State.states.begin(), mHost1State.states.end(), kDefaultState);
|
||||||
|
int host2StateCount = mHost2State.states.size();
|
||||||
|
int host2ConfiguredCount =
|
||||||
|
std::count(mHost2State.states.begin(), mHost2State.states.end(), kConfiguredState);
|
||||||
|
int host2DefaultCount =
|
||||||
|
std::count(mHost2State.states.begin(), mHost2State.states.end(), kDefaultState);
|
||||||
|
|
||||||
|
if (host1ConfiguredCount == 0 && host2ConfiguredCount == 0 &&
|
||||||
|
(host1DefaultCount > ENUM_FAIL_DEFAULT_COUNT_THRESHOLD ||
|
||||||
|
host2DefaultCount > ENUM_FAIL_DEFAULT_COUNT_THRESHOLD))
|
||||||
|
newWarningSet.insert(ComplianceWarning::ENUMERATION_FAIL);
|
||||||
|
|
||||||
|
if (host1StateCount == 1 && mHost1State.states.front() == kNotAttachedState &&
|
||||||
|
host2StateCount == 1 && mHost2State.states.front() == kNotAttachedState)
|
||||||
|
newWarningSet.insert(ComplianceWarning::MISSING_DATA_LINES);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (newWarningSet != mWarningSet) {
|
if (newWarningSet != mWarningSet) {
|
||||||
|
std::string newWarningString;
|
||||||
|
|
||||||
|
for (auto e : newWarningSet) {
|
||||||
|
newWarningString += toString(e) + " ";
|
||||||
|
}
|
||||||
|
ALOGI("Usb data compliance warning changed to: %s", newWarningString.c_str());
|
||||||
|
|
||||||
mWarningSet = newWarningSet;
|
mWarningSet = newWarningSet;
|
||||||
notifyComplianceWarning();
|
notifyComplianceWarning();
|
||||||
}
|
}
|
||||||
|
@ -259,6 +318,26 @@ void UsbDataSessionMonitor::handleDeviceStateEvent(struct usbDeviceState *device
|
||||||
evaluateComplianceWarning();
|
evaluateComplianceWarning();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void UsbDataSessionMonitor::setupNewSession() {
|
||||||
|
mWarningSet.clear();
|
||||||
|
mDataSessionStart = boot_clock::now();
|
||||||
|
|
||||||
|
if (mDataRole == PortDataRole::DEVICE) {
|
||||||
|
clearDeviceStateEvents(&mDeviceState);
|
||||||
|
} else if (mDataRole == PortDataRole::HOST) {
|
||||||
|
clearDeviceStateEvents(&mHost1State);
|
||||||
|
clearDeviceStateEvents(&mHost2State);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mDataRole != PortDataRole::NONE) {
|
||||||
|
struct itimerspec delay = itimerspec();
|
||||||
|
delay.it_value.tv_sec = WARNING_SURFACE_DELAY_SEC;
|
||||||
|
int ret = timerfd_settime(mTimerFd.get(), 0, &delay, NULL);
|
||||||
|
if (ret < 0)
|
||||||
|
ALOGE("timerfd_settime failed err:%d", errno);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void UsbDataSessionMonitor::handleDataRoleEvent() {
|
void UsbDataSessionMonitor::handleDataRoleEvent() {
|
||||||
int n;
|
int n;
|
||||||
PortDataRole newDataRole;
|
PortDataRole newDataRole;
|
||||||
|
@ -283,17 +362,8 @@ void UsbDataSessionMonitor::handleDataRoleEvent() {
|
||||||
reportUsbDataSessionMetrics();
|
reportUsbDataSessionMetrics();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set up for the new data session
|
|
||||||
mWarningSet.clear();
|
|
||||||
mDataRole = newDataRole;
|
mDataRole = newDataRole;
|
||||||
mDataSessionStart = boot_clock::now();
|
setupNewSession();
|
||||||
|
|
||||||
if (newDataRole == PortDataRole::DEVICE) {
|
|
||||||
clearDeviceStateEvents(&mDeviceState);
|
|
||||||
} else if (newDataRole == PortDataRole::HOST) {
|
|
||||||
clearDeviceStateEvents(&mHost1State);
|
|
||||||
clearDeviceStateEvents(&mHost2State);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -328,8 +398,7 @@ void UsbDataSessionMonitor::updateUdcBindStatus(const std::string &devname) {
|
||||||
|
|
||||||
} else if (!mUdcBind && newUdcBind) {
|
} else if (!mUdcBind && newUdcBind) {
|
||||||
// Gadget soft pullup: reset and start accounting for a new data session.
|
// Gadget soft pullup: reset and start accounting for a new data session.
|
||||||
clearDeviceStateEvents(&mDeviceState);
|
setupNewSession();
|
||||||
mDataSessionStart = boot_clock::now();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -383,6 +452,23 @@ void UsbDataSessionMonitor::handleUevent() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void UsbDataSessionMonitor::handleTimerEvent() {
|
||||||
|
int byteRead;
|
||||||
|
uint64_t numExpiration;
|
||||||
|
|
||||||
|
byteRead = read(mTimerFd.get(), &numExpiration, sizeof(numExpiration));
|
||||||
|
|
||||||
|
if (byteRead != sizeof(numExpiration)) {
|
||||||
|
ALOGE("incorrect read size");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (numExpiration != 1) {
|
||||||
|
ALOGE("incorrect expiration count");
|
||||||
|
}
|
||||||
|
|
||||||
|
evaluateComplianceWarning();
|
||||||
|
}
|
||||||
|
|
||||||
void *UsbDataSessionMonitor::monitorThread(void *param) {
|
void *UsbDataSessionMonitor::monitorThread(void *param) {
|
||||||
UsbDataSessionMonitor *monitor = (UsbDataSessionMonitor *)param;
|
UsbDataSessionMonitor *monitor = (UsbDataSessionMonitor *)param;
|
||||||
struct epoll_event events[64];
|
struct epoll_event events[64];
|
||||||
|
@ -400,6 +486,8 @@ void *UsbDataSessionMonitor::monitorThread(void *param) {
|
||||||
for (int n = 0; n < nevents; ++n) {
|
for (int n = 0; n < nevents; ++n) {
|
||||||
if (events[n].data.fd == monitor->mUeventFd.get()) {
|
if (events[n].data.fd == monitor->mUeventFd.get()) {
|
||||||
monitor->handleUevent();
|
monitor->handleUevent();
|
||||||
|
} else if (events[n].data.fd == monitor->mTimerFd.get()) {
|
||||||
|
monitor->handleTimerEvent();
|
||||||
} else if (events[n].data.fd == monitor->mDataRoleFd.get()) {
|
} else if (events[n].data.fd == monitor->mDataRoleFd.get()) {
|
||||||
monitor->handleDataRoleEvent();
|
monitor->handleDataRoleEvent();
|
||||||
} else if (events[n].data.fd == monitor->mDeviceState.fd.get()) {
|
} else if (events[n].data.fd == monitor->mDeviceState.fd.get()) {
|
||||||
|
|
|
@ -75,9 +75,11 @@ class UsbDataSessionMonitor {
|
||||||
|
|
||||||
static void *monitorThread(void *param);
|
static void *monitorThread(void *param);
|
||||||
void handleUevent();
|
void handleUevent();
|
||||||
|
void handleTimerEvent();
|
||||||
void handleDataRoleEvent();
|
void handleDataRoleEvent();
|
||||||
void handleDeviceStateEvent(struct usbDeviceState *deviceState);
|
void handleDeviceStateEvent(struct usbDeviceState *deviceState);
|
||||||
void clearDeviceStateEvents(struct usbDeviceState *deviceState);
|
void clearDeviceStateEvents(struct usbDeviceState *deviceState);
|
||||||
|
void setupNewSession();
|
||||||
void reportUsbDataSessionMetrics();
|
void reportUsbDataSessionMetrics();
|
||||||
void evaluateComplianceWarning();
|
void evaluateComplianceWarning();
|
||||||
void notifyComplianceWarning();
|
void notifyComplianceWarning();
|
||||||
|
@ -86,6 +88,7 @@ class UsbDataSessionMonitor {
|
||||||
pthread_t mMonitor;
|
pthread_t mMonitor;
|
||||||
unique_fd mEpollFd;
|
unique_fd mEpollFd;
|
||||||
unique_fd mUeventFd;
|
unique_fd mUeventFd;
|
||||||
|
unique_fd mTimerFd;
|
||||||
unique_fd mDataRoleFd;
|
unique_fd mDataRoleFd;
|
||||||
struct usbDeviceState mDeviceState;
|
struct usbDeviceState mDeviceState;
|
||||||
struct usbDeviceState mHost1State;
|
struct usbDeviceState mHost1State;
|
||||||
|
|
|
@ -16,11 +16,13 @@ on post-fs
|
||||||
chown root system /sys/devices/platform/10cb0000.hsi2c/i2c-11/11-0025/usb_limit_sink_enable
|
chown root system /sys/devices/platform/10cb0000.hsi2c/i2c-11/11-0025/usb_limit_sink_enable
|
||||||
chown root system /sys/devices/platform/10cb0000.hsi2c/i2c-11/11-0025/usb_limit_source_enable
|
chown root system /sys/devices/platform/10cb0000.hsi2c/i2c-11/11-0025/usb_limit_source_enable
|
||||||
chown root system /sys/devices/platform/10cb0000.hsi2c/i2c-11/11-0025/update_sdp_enum_timeout
|
chown root system /sys/devices/platform/10cb0000.hsi2c/i2c-11/11-0025/update_sdp_enum_timeout
|
||||||
|
chown root graphics /sys/devices/platform/110f0000.drmdp/drm-displayport/dp_hotplug_error_code
|
||||||
chown root system /sys/devices/platform/110f0000.drmdp/drm-displayport/hpd
|
chown root system /sys/devices/platform/110f0000.drmdp/drm-displayport/hpd
|
||||||
chown root system /sys/devices/platform/110f0000.drmdp/drm-displayport/irq_hpd
|
chown root system /sys/devices/platform/110f0000.drmdp/drm-displayport/irq_hpd
|
||||||
chown root system /sys/devices/platform/110f0000.drmdp/drm-displayport/orientation
|
chown root system /sys/devices/platform/110f0000.drmdp/drm-displayport/orientation
|
||||||
chown root system /sys/devices/platform/110f0000.drmdp/drm-displayport/pin_assignment
|
chown root system /sys/devices/platform/110f0000.drmdp/drm-displayport/pin_assignment
|
||||||
chown root system /sys/devices/platform/110f0000.drmdp/drm-displayport/link_status
|
chown root system /sys/devices/platform/110f0000.drmdp/drm-displayport/link_status
|
||||||
|
chown root system /sys/devices/platform/110f0000.drmdp/drm-displayport/usbc_cable_disconnect
|
||||||
chown root system /sys/devices/platform/11110000.usb/dwc3_exynos_otg_b_sess
|
chown root system /sys/devices/platform/11110000.usb/dwc3_exynos_otg_b_sess
|
||||||
chown root system /sys/devices/platform/11110000.usb/dwc3_exynos_otg_id
|
chown root system /sys/devices/platform/11110000.usb/dwc3_exynos_otg_id
|
||||||
chown root system /sys/devices/platform/11110000.usb/usb_data_enabled
|
chown root system /sys/devices/platform/11110000.usb/usb_data_enabled
|
||||||
|
@ -39,9 +41,11 @@ on post-fs
|
||||||
chmod 664 /sys/devices/platform/10cb0000.hsi2c/i2c-11/11-0025/usb_limit_sink_enable
|
chmod 664 /sys/devices/platform/10cb0000.hsi2c/i2c-11/11-0025/usb_limit_sink_enable
|
||||||
chmod 664 /sys/devices/platform/10cb0000.hsi2c/i2c-11/11-0025/usb_limit_source_enable
|
chmod 664 /sys/devices/platform/10cb0000.hsi2c/i2c-11/11-0025/usb_limit_source_enable
|
||||||
chmod 664 /sys/devices/platform/10cb0000.hsi2c/i2c-11/11-0025/update_sdp_enum_timeout
|
chmod 664 /sys/devices/platform/10cb0000.hsi2c/i2c-11/11-0025/update_sdp_enum_timeout
|
||||||
|
chmod 664 /sys/devices/platform/110f0000.drmdp/drm-displayport/dp_hotplug_error_code
|
||||||
chmod 664 /sys/devices/platform/110f0000.drmdp/drm-displayport/hpd
|
chmod 664 /sys/devices/platform/110f0000.drmdp/drm-displayport/hpd
|
||||||
chmod 664 /sys/devices/platform/110f0000.drmdp/drm-displayport/irq_hpd
|
chmod 664 /sys/devices/platform/110f0000.drmdp/drm-displayport/irq_hpd
|
||||||
chmod 664 /sys/devices/platform/110f0000.drmdp/drm-displayport/orientation
|
chmod 664 /sys/devices/platform/110f0000.drmdp/drm-displayport/orientation
|
||||||
chmod 664 /sys/devices/platform/110f0000.drmdp/drm-displayport/pin_assignment
|
chmod 664 /sys/devices/platform/110f0000.drmdp/drm-displayport/pin_assignment
|
||||||
chmod 664 /sys/devices/platform/110f0000.drmdp/drm-displayport/link_status
|
chmod 664 /sys/devices/platform/110f0000.drmdp/drm-displayport/link_status
|
||||||
|
chmod 664 /sys/devices/platform/110f0000.drmdp/drm-displayport/usbc_cable_disconnect
|
||||||
chmod 664 /sys/devices/platform/google,pogo/enable_usb
|
chmod 664 /sys/devices/platform/google,pogo/enable_usb
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue