device: rockchip sdk for rk3576 (rkr6-e372411b)

Signed-off-by: hmz007 <hmz007@gmail.com>
master
hmz007 10 months ago
parent 7d2988df2a
commit 84a2514075

@ -0,0 +1,4 @@
rk3576_ebook
rk3576_ebookcolor
rk3576_projector
rk3576m_u

@ -0,0 +1,3 @@
LOCAL_PATH := $(call my-dir)
include $(call all-makefiles-under,$(LOCAL_PATH))

@ -0,0 +1,140 @@
#
# Copyright (c) 2023 Rockchip Electronics Co., Ltd
#
CURRENT_SDK_VERSION := RK3576_ANDROID14.0_MID_V1.0
# RK3576 freezes on Android 14 + Linux 6.1, here set to 34 U,
# From now on, this property should never be changed.
BOARD_SHIPPING_API_LEVEL := 34
TARGET_ARCH := arm64
TARGET_ARCH_VARIANT := armv8-a
TARGET_CPU_ABI := arm64-v8a
TARGET_CPU_ABI2 :=
TARGET_CPU_VARIANT := generic
TARGET_CPU_VARIANT_RUNTIME := cortex-a72
TARGET_2ND_ARCH := arm
TARGET_2ND_ARCH_VARIANT := armv8-a
TARGET_2ND_CPU_ABI := armeabi-v7a
TARGET_2ND_CPU_ABI2 := armeabi
TARGET_2ND_CPU_VARIANT := generic
TARGET_2ND_CPU_VARIANT_RUNTIME := cortex-a53
PRODUCT_UBOOT_CONFIG ?= rk3576_defconfig
PRODUCT_KERNEL_ARCH ?= arm64
PRODUCT_KERNEL_DTS ?= rk3576-evb1-v10
PRODUCT_KERNEL_CONFIG += rk3576.config
#BOARD_AVB_ENABLE := true
# used for fstab_generator, sdmmc controller address
PRODUCT_BOOT_DEVICE := 2a2d0000.ufs,2a330000.mmc
PRODUCT_SDMMC_DEVICE := 2a310000.mmc
SF_PRIMARY_DISPLAY_ORIENTATION := 0
# Disable emulator for "make dist" until there is a 64-bit qemu kernel
BUILD_EMULATOR := false
TARGET_BOARD_PLATFORM := rk3576
TARGET_BOARD_PLATFORM_GPU := mali-G52
TARGET_BOARD_CPU ?= RK3576
TARGET_RK_GRALLOC_AIDL := true
TARGET_RK_GRALLOC_VERSION := 4
BOARD_USE_DRM := true
# Use Vulkan Skia
TARGET_USES_VULKAN := true
# RenderScript
# OVERRIDE_RS_DRIVER := libnvRSDriver.so
BOARD_OVERRIDE_RS_CPU_VARIANT_32 := cortex-a53
BOARD_OVERRIDE_RS_CPU_VARIANT_64 := cortex-a72
# DISABLE_RS_64_BIT_DRIVER := true
TARGET_USES_64_BIT_BCMDHD := true
TARGET_USES_64_BIT_BINDER := true
# HACK: Build apps as 64b for volantis_64_only
ifneq (,$(filter ro.zygote=zygote64, $(PRODUCT_DEFAULT_PROPERTY_OVERRIDES)))
TARGET_PREFER_32_BIT_APPS :=
TARGET_SUPPORTS_64_BIT_APPS := true
endif
# Sensors
BOARD_SENSOR_ST := true
BOARD_SENSOR_MPU_VR := false
BOARD_SENSOR_MPU_PAD := false
BOARD_USES_GENERIC_INVENSENSE := false
TARGET_BOARD_PLATFORM_PRODUCT ?= tablet
ENABLE_CPUSETS := true
# Enable Dex compile opt as default
WITH_DEXPREOPT := true
BOARD_NFC_SUPPORT := false
BOARD_HAS_GPS := false
BOARD_GRAVITY_SENSOR_SUPPORT := true
BOARD_COMPASS_SENSOR_SUPPORT := false
BOARD_GYROSCOPE_SENSOR_SUPPORT := false
BOARD_PROXIMITY_SENSOR_SUPPORT := false
BOARD_LIGHT_SENSOR_SUPPORT := false
BOARD_PRESSURE_SENSOR_SUPPORT := false
BOARD_TEMPERATURE_SENSOR_SUPPORT := false
BOARD_USB_HOST_SUPPORT := true
BOARD_USE_SPARSE_SYSTEM_IMAGE := true
# Google Service and frp overlay
BUILD_WITH_GOOGLE_MARKET ?= false
BUILD_WITH_GOOGLE_MARKET_ALL ?= false
BUILD_WITH_GOOGLE_FRP := true
BUILD_WITH_GOOGLE_GMS_EXPRESS ?= false
#rknn
BOARD_RKNN_SUPPORT := false
# Add widevine L3 support
BOARD_WIDEVINE_OEMCRYPTO_LEVEL := 3
# camera enable
BOARD_CAMERA_SUPPORT := true
BOARD_CAMERA_SUPPORT_EXT := true
BOARD_CAMERA_AIDL := true
ALLOW_MISSING_DEPENDENCIES=true
#Config omx to support codec type.
BOARD_SUPPORT_VP9 := true
BOARD_SUPPORT_VP6 := false
BOARD_SUPPORT_HEVC_ENC := true
# Allow deprecated BUILD_ module types to get DDK building
BUILD_BROKEN_USES_BUILD_COPY_HEADERS := true
BUILD_BROKEN_USES_BUILD_HOST_EXECUTABLE := true
BUILD_BROKEN_USES_BUILD_HOST_SHARED_LIBRARY := true
BUILD_BROKEN_USES_BUILD_HOST_STATIC_LIBRARY := true
BOARD_SHOW_HDMI_SETTING ?= true
# for dynamaic afbc target
BOARD_HS_DYNAMIC_AFBC_TARGET := false
PRODUCT_HAVE_OPTEE := true
#trust is merging into uboot
BOARD_ROCKCHIP_TRUST_MERGE_TO_UBOOT := true
BOARD_BASEPARAMETER_SUPPORT := true
#pcie ethernet
PRODUCT_HAVE_PCIE_ETHERNET := true
#BOARD_HDMI_IN_SUPPORT := true
#BOARD_SUPPORT_MULTIAUDIO := true
#healthd alarm align to minute
BUILD_WITH_RK_HEALTHD_ALARM_ALIGN := true

@ -0,0 +1,25 @@
/*
* Copyright (C) 2023 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef _BDROID_BUILDCFG_H
#define _BDROID_BUILDCFG_H
#define BTM_DEF_LOCAL_NAME "rk3576"
#define BTA_DM_COD {0x1A, 0x01, 0x10}
#define BLE_PRIVACY_SPT FALSE
#endif

@ -0,0 +1,94 @@
#
# Copyright (c) 2023 Rockchip Electronics Co., Ltd
#
# GPU Profiling
PRODUCT_VENDOR_PROPERTIES += graphics.gpu.profiler.support=true
PRODUCT_PACKAGES += \
displayd \
libion
PRODUCT_PACKAGES += \
RockchipPinnerService
# hdcp2
PRODUCT_PACKAGES += \
hdcp2_tx_rx
# enable this for support f2fs with data partion
BOARD_USERDATAIMAGE_FILE_SYSTEM_TYPE := f2fs
# This ensures the needed build tools are available.
# TODO: make non-linux builds happy with external/f2fs-tool; system/extras/f2fs_utils
ifeq ($(HOST_OS),linux)
TARGET_USERIMAGES_USE_F2FS := true
endif
PRODUCT_COPY_FILES += \
vendor/rockchip/common/bin/$(TARGET_ARCH)/busybox:recovery/root/sbin/busybox
PRODUCT_COPY_FILES += \
$(LOCAL_PATH)/init.rk3576.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/hw/init.rk3576.rc \
$(LOCAL_PATH)/wake_lock_filter.xml:system/etc/wake_lock_filter.xml \
$(LOCAL_PATH)/package_performance.xml:$(TARGET_COPY_OUT_ODM)/etc/package_performance.xml \
$(TARGET_DEVICE_DIR)/media_profiles_default.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_profiles_V1_0.xml\
PRODUCT_COPY_FILES += \
frameworks/native/data/etc/android.hardware.opengles.aep.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.opengles.aep.xml
# copy xml files for Vulkan features.
PRODUCT_COPY_FILES += \
frameworks/native/data/etc/android.hardware.vulkan.compute-0.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.compute-0.xml \
frameworks/native/data/etc/android.hardware.vulkan.level-0.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.level-0.xml \
frameworks/native/data/etc/android.hardware.vulkan.level-1.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.level-1.xml \
frameworks/native/data/etc/android.hardware.vulkan.version-1_0_3.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.version-1_0_3.xml \
frameworks/native/data/etc/android.hardware.vulkan.version-1_1.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.version-1_1.xml \
frameworks/native/data/etc/android.hardware.vulkan.version-1_3.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.version-1_3.xml \
frameworks/native/data/etc/android.software.vulkan.deqp.level-2019-03-01.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.vulkan.deqp.level-2019-03-01.xml \
frameworks/native/data/etc/android.software.vulkan.deqp.level-2020-03-01.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.vulkan.deqp.level-2020-03-01.xml \
frameworks/native/data/etc/android.software.vulkan.deqp.level-2021-03-01.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.vulkan.deqp.level-2021-03-01.xml \
frameworks/native/data/etc/android.software.vulkan.deqp.level-2022-03-01.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.vulkan.deqp.level-2022-03-01.xml
# Get the long list of APNs
PRODUCT_COPY_FILES += vendor/rockchip/common/phone/etc/apns-full-conf.xml:system/etc/apns-conf.xml
PRODUCT_COPY_FILES += vendor/rockchip/common/phone/etc/spn-conf.xml:system/etc/spn-conf.xml
PRODUCT_PROPERTY_OVERRIDES += \
ro.product.ota.host = 192.168.1.1:8888 \
ro.vendor.sdkversion = $(CURRENT_SDK_VERSION) \
vendor.gralloc.disable_afbc = 0
PRODUCT_COPY_FILES += \
$(LOCAL_PATH)/public.libraries.txt:vendor/etc/public.libraries.txt
USE_PRODUCT_HDCP2_HDMI_FW := $(shell test -f $(LOCAL_PATH)/hdcp2_hdmi.fw && echo true)
ifeq ($(strip $(USE_PRODUCT_HDCP2_HDMI_FW)), true)
PRODUCT_COPY_FILES += \
$(LOCAL_PATH)/hdcp2_hdmi.fw:vendor/firmware/hdcp2_hdmi.fw
endif
#
# add Rockchip properties here
#
PRODUCT_PROPERTY_OVERRIDES += \
ro.ril.ecclist=112,911 \
ro.opengles.version=196610 \
wifi.interface=wlan0 \
ro.audio.monitorOrientation=true \
debug.nfc.fw_download=false \
debug.nfc.se=false \
vendor.hwc.compose_policy=1 \
sys.wallpaper.rgb565=0 \
sf.power.control=2073600 \
sys.rkadb.root=0 \
ro.sf.fakerotation=false \
ro.tether.denied=false \
sys.resolution.changed=false \
ro.default.size=100 \
ro.product.usbfactory=rockchip_usb \
wifi.supplicant_scan_interval=15 \
ro.factory.tool=0 \
ro.kernel.android.checkjni=0 \
ro.build.shutdown_timeout=6 \
persist.enable_task_snapshots=false \
ro.vendor.frameratelock=true

@ -0,0 +1,7 @@
on init
write /sys/devices/platform/23000000.usb/power/control auto
write /sys/devices/platform/23000000.usb/power/autosuspend_delay_ms 1000
write /sys/devices/platform/23400000.usb/power/control auto
write /sys/devices/platform/23400000.usb/power/autosuspend_delay_ms 1000

@ -0,0 +1,84 @@
import /vendor/etc/init/hw/init.gki.rc
on property:sys.boot_completed=1
chown system system /sys/class/devfreq/27800000.gpu/governor
chown system system /sys/class/devfreq/27800000.gpu/min_freq
chown system system /sys/class/devfreq/27800000.gpu/max_freq
chmod 0664 /sys/class/devfreq/27800000.gpu/governor
chmod 0664 /sys/class/devfreq/27800000.gpu/min_freq
chmod 0664 /sys/class/devfreq/27800000.gpu/max_freq
write /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq 0
write /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq 0
write /sys/devices/system/cpu/cpufreq/policy0/scaling_governor schedutil
write /sys/devices/system/cpu/cpufreq/policy4/scaling_governor schedutil
write /sys/class/devfreq/dmc/governor dmc_ondemand
write /dev/vehicle 88
on charger
chown system system /sys/class/devfreq/27800000.gpu/governor
chown system system /sys/class/devfreq/27800000.gpu/min_freq
chown system system /sys/class/devfreq/27800000.gpu/max_freq
chmod 0664 /sys/class/devfreq/27800000.gpu/governor
chmod 0664 /sys/class/devfreq/27800000.gpu/min_freq
chmod 0664 /sys/class/devfreq/27800000.gpu/max_freq
write /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq 0
write /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq 0
write /sys/devices/system/cpu/cpufreq/policy0/scaling_governor schedutil
write /sys/devices/system/cpu/cpufreq/policy4/scaling_governor schedutil
write /sys/class/devfreq/dmc/governor dmc_ondemand
on boot
chown system system /sys/class/thermal/thermal_zone0/policy
chown system system /sys/class/thermal/thermal_zone1/policy
chown system system /sys/class/thermal/thermal_zone2/policy
write /dev/cpuset/foreground/cpus 0-7
write /dev/cpuset/foreground/boost/cpus 0-7
write /dev/cpuset/background/cpus 0-7
write /dev/cpuset/system-background/cpus 0-7
write /dev/cpuset/top-app/cpus 0-7
# reduce schedul time to improve io performance
write /sys/kernel/debug/sched_features NO_ENERGY_AWARE
chown system system /sys/devices/platform/2602e000.syscon/2602e000.syscon:usb2-phy@0/otg_mode
chmod 0660 /sys/devices/platform/2602e000.syscon/2602e000.syscon:usb2-phy@0/otg_mode
# The initial load of RT process, set the range of 0-1024, set the RT task above 300 will preferentially run on the cpuB(cpu4-cpu7)
write /proc/sys/kernel/sched_util_clamp_min_rt_default 0
write /proc/sys/vm/dirty_ratio 10
write /proc/sys/vm/dirty_background_ratio 1
write /proc/sys/vm/dirty_writeback_centisecs 100
write /proc/sys/vm/dirty_expire_centisecs 500
on init
# Increased power consumption and CPU in exchange for memory
write /proc/sys/vm/swappiness 100
write /sys/block/zram0/comp_algorithm lz4
chown system system /sys/system_monitor/system_status
chmod 0666 /sys/system_monitor/system_status
chown system system /sys/class/devfreq/dmc/system_status
chmod 0666 /sys/class/devfreq/dmc/system_status
on early-init
write /sys/devices/system/cpu/cpufreq/policy0/scaling_governor performance
write /sys/devices/system/cpu/cpufreq/policy4/scaling_governor performance
write /sys/class/devfreq/dmc/governor performance
chown system system /sys/power/mem_sleep
chmod 0660 /sys/power/mem_sleep
# usb controller
setprop sys.usb.controller "23000000.usb"

@ -0,0 +1,2 @@
将需要升级的loader以RK*Loader*.bin格式放到device/rockchip/rk**/loader/目录下
OTA打包时即会加入到升级包中。

@ -0,0 +1,14 @@
一、目前谷歌标准ota包方式升级能支持parameter更新但有一些限制
1. 更新parameter只能使用ota完整包升级不支持差异升级parameter。
2. 根据RK29 Parameter File Format Ver1.1.pdf 描述backup区不能改大只能改小。如果想改大backup区必须擦除idb所以本机升级不能去改大backup区。
3. backup区以及之前的分区大小和位置不能改变。之后的分区能随意改变和增加分区。
4. user区可能被改变所以不支持升级包放在内部falsh的升级只能放在外部sd卡升级。或者能保证其所在分区位置大小不变。
5. recovery区的地址不能改变否则重启后就找不到recovery了
二、parameter升级操作步骤
1. 拷贝最新的parameter文件到device/rockchip/rk**/parameter/目录下以parameter名称开头即可如parameter_sdk。该目录下只能存在一个parameter文件。
2. make otapackage 编译ota完整包
3. 拷贝到sd卡或flash根目录下重命名update.zip系统能自动检测到该升级包能自动完成升级。升级过程中先烧写新的parameter然后会重启一次接着继续更新其他部分。

@ -0,0 +1,67 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
/*
** Copyright 2009, The Android Open Source Project
**
** Licensed under the Apache License, Version 2.0 (the "License");
** you may not use this file except in compliance with the License.
** You may obtain a copy of the License at
**
** http://www.apache.org/licenses/LICENSE-2.0
**
** Unless required by applicable law or agreed to in writing, software
** distributed under the License is distributed on an "AS IS" BASIS,
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
** See the License for the specific language governing permissions and
** limitations under the License.
*/
-->
<resources>
<!-- This string array should be overridden by the device to present a list of network
attributes. This is used by the connectivity manager to decide which networks can coexist
based on the hardware -->
<!-- An Array of "[Connection name],[ConnectivityManager connection type],
[associated radio-type],[priority],[restoral-timer(ms)],[dependencyMet] -->
<!-- the 5th element "resore-time" indicates the number of milliseconds to delay
before automatically restore the default connection. Set -1 if the connection
does not require auto-restore. -->
<!-- the 6th element indicates boot-time dependency-met value. -->
<string-array translatable="false" name="networkAttributes">
<item>"wifi,1,1,2,-1,true"</item>
<item>"bluetooth,7,7,0,-1,true"</item>
<item>"ethernet,9,9,9,-1,true"</item>
</string-array>
<!-- Screen brightness used to dim the screen when the user activity
timeout expires. May be less than the minimum allowed brightness setting
that can be set by the user. -->
<integer name="config_screenBrightnessDim">2</integer>
<!-- Set this to true to enable the platform's auto-power-save modes like doze and
app standby. These are not enabled by default because they require a standard
cloud-to-device messaging service for apps to interact correctly with the modes
(such as to be able to deliver an instant message to the device even when it is
dozing). This should be enabled if you have such services and expect apps to
correctly use them when installed on your device. Otherwise, keep this disabled
so that applications can still use their own mechanisms. -->
<bool name="config_enableAutoPowerModes">true</bool>
<!-- Boolean indicating whether or not wifi firmware debugging is enabled -->
<bool translatable="false" name="config_wifi_enable_wifi_firmware_debugging">false</bool>
<!-- Integer size limit, in KB, for a single WifiLogger ringbuffer, in default logging mode -->
<integer translatable="false" name="config_wifi_logger_ring_buffer_verbose_size_limit_kb">64</integer>
<string translatable="false" name="config_ntpServer">asia.pool.ntp.org</string>
<!-- Maximum number of supported users -->
<integer name="config_multiuserMaximumUsers">3</integer>
<!-- Controls the navigation bar interaction mode:
0: 3 button mode (back, home, overview buttons)
1: 2 button mode (back, home buttons + swipe up for overview)
2: gestures only for back, home and overview -->
<integer name="config_navBarInteractionMode">0</integer>
<bool name="config_swipe_up_gesture_setting_available">true</bool>
</resources>

@ -0,0 +1,41 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
/**
* Copyright (c) 2009, The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-->
<resources>
<integer name="def_screen_off_timeout">60000</integer>
<!-- Initial value for the Settings.Secure.IMMERSIVE_MODE_CONFIRMATIONS setting,
which is a comma separated list of packages that no longer need confirmation
for immersive mode.
Override to disable immersive mode confirmation for certain packages. -->
<string name="def_immersive_mode_confirmations" translatable="false">confirmed</string>
<bool name="def_bluetooth_on">false</bool>
<bool name="def_accelerometer_rotation">false</bool>
<!-- 0 == Always sleep
1 == Do not sleep when plugged in
2 == Never sleep
When the screen is off, it will enter the sleep policy.
You can configure persist.wifi.sleep.delay.ms to delay closing wifi.
The default is 15 minutes, 0 means that the wifi is turned off
immediately after the screen is off. -->
<integer name="def_wifi_sleep_policy">2</integer>
<!-- Decrease animation duration. -->
<fraction name="def_window_animation_scale">50%</fraction>
<fraction name="def_window_transition_scale">50%</fraction>
</resources>

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
/*
** Copyright 2009, The Android Open Source Project
**
** Licensed under the Apache License, Version 2.0 (the "License");
** you may not use this file except in compliance with the License.
** You may obtain a copy of the License at
**
** http://www.apache.org/licenses/LICENSE-2.0
**
** Unless required by applicable law or agreed to in writing, software
** distributed under the License is distributed on an "AS IS" BASIS,
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
** See the License for the specific language governing permissions and
** limitations under the License.
*/
-->
<!-- These resources are around just to allow their values to be customized
for different hardware and product builds. -->
<resources>
<!-- Whether to enable dimming navigation buttons when wallpaper is not visible, should be
enabled for OLED devices to reduce/prevent burn in on the navigation bar (because of the
black background and static button placements) and disabled for all other devices to
prevent wasting cpu cycles on the dimming animation -->
<bool name="config_navigation_bar_enable_auto_dim_no_visible_wallpaper">false</bool>
<!-- If true, enable the advance anti-falsing classifier on the lockscreen. On
some devices it does not work well, particularly with noisy touchscreens. Note
that disabling it may increase the rate of unintentional unlocks. -->
<bool name="config_lockscreenAntiFalsingClassifierEnabled">false</bool>
</resources>

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
/*
** Copyright 2009, The Android Open Source Project
**
** Licensed under the Apache License, Version 2.0 (the "License");
** you may not use this file except in compliance with the License.
** You may obtain a copy of the License at
**
** http://www.apache.org/licenses/LICENSE-2.0
**
** Unless required by applicable law or agreed to in writing, software
** distributed under the License is distributed on an "AS IS" BASIS,
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
** See the License for the specific language governing permissions and
** limitations under the License.
*/
-->
<!-- These resources are around just to allow their values to be customized
for different hardware and product builds. -->
<resources>
<bool name="config_navigation_bar_enable_auto_dim_no_visible_wallpaper">false</bool>
</resources>

@ -0,0 +1,6 @@
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<performance-package>
<app package="com.antutu.ABenchMark" mode="1"/>
<app package="com.antutu.benchmark.full" mode="1"/>
<app package="com.android.server.cts.device.graphicsstats" mode="1"/>
</performance-package>

@ -0,0 +1,3 @@
LOCAL_PATH := $(call my-dir)
include $(call all-makefiles-under,$(LOCAL_PATH))

@ -0,0 +1,7 @@
# generate fstab file for device
-include device/rockchip/common/build/rockchip/RebuildFstab.mk
# generate dtbo image for device
-include device/rockchip/common/build/rockchip/RebuildDtboImg.mk
# generate parameter.txt for device
-include device/rockchip/common/build/rockchip/RebuildParameter.mk

@ -0,0 +1,22 @@
#
# Copyright 2023 The Android Open-Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
PRODUCT_MAKEFILES := \
$(LOCAL_DIR)/rk3576_u.mk
COMMON_LUNCH_CHOICES := \
rk3576_u-userdebug \
rk3576_u-user

@ -0,0 +1,34 @@
#
# Copyright 2023 The Android Open-Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
BUILD_WITH_GO_OPT := false
BOARD_BUILD_GKI := false
BOARD_GRAVITY_SENSOR_SUPPORT := true
BOARD_COMPASS_SENSOR_SUPPORT := true
BOARD_SENSOR_COMPASS_AK8963-64 := true
BOARD_GYROSCOPE_SENSOR_SUPPORT := true
BOARD_PROXIMITY_SENSOR_SUPPORT := true
BOARD_LIGHT_SENSOR_SUPPORT := true
PRODUCT_KERNEL_DTS := rk3576-evb1-v10
PRODUCT_KERNEL_CONFIG += pcie_wifi.config
BOARD_GSENSOR_MXC6655XA_SUPPORT := true
BOARD_CAMERA_SUPPORT_EXT := true
BOARD_HS_ETHERNET := true
BOARD_SEPOLICY_DIRS += $(TARGET_DEVICE_DIR)/sepolicy
include device/rockchip/rk3576/BoardConfig.mk

@ -0,0 +1,5 @@
# UART device port where Bluetooth controller is attached
UartPort = /dev/ttyS4
# Firmware patch file location
FwPatchFilePath = /vendor/etc/firmware/

@ -0,0 +1,11 @@
/dts-v1/;
/plugin/;
&reboot_mode {
mode-bootloader = <0x5242C309>;
mode-charge = <0x5242C30B>;
mode-fastboot = <0x5242C303>;
mode-loader = <0x5242C301>;
mode-normal = <0x5242C300>;
mode-recovery = <0x5242C303>;
};

@ -0,0 +1,689 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2010 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<!DOCTYPE MediaSettings [
<!ELEMENT MediaSettings (CamcorderProfiles,
EncoderOutputFileFormat+,
VideoEncoderCap+,
AudioEncoderCap+,
VideoDecoderCap,
AudioDecoderCap)>
<!ELEMENT CamcorderProfiles (EncoderProfile+, ImageEncoding+, ImageDecoding, Camera)>
<!ELEMENT EncoderProfile (Video, Audio)>
<!ATTLIST EncoderProfile quality (high|low) #REQUIRED>
<!ATTLIST EncoderProfile fileFormat (mp4|3gp) #REQUIRED>
<!ATTLIST EncoderProfile duration (30|60) #REQUIRED>
<!ATTLIST EncoderProfile cameraId (0|1) #REQUIRED>
<!ELEMENT Video EMPTY>
<!ATTLIST Video codec (h264|h263|m4v) #REQUIRED>
<!ATTLIST Video bitRate CDATA #REQUIRED>
<!ATTLIST Video width CDATA #REQUIRED>
<!ATTLIST Video height CDATA #REQUIRED>
<!ATTLIST Video frameRate CDATA #REQUIRED>
<!ELEMENT Audio EMPTY>
<!ATTLIST Audio codec (amrnb|amrwb|aac) #REQUIRED>
<!ATTLIST Audio bitRate CDATA #REQUIRED>
<!ATTLIST Audio sampleRate CDATA #REQUIRED>
<!ATTLIST Audio channels (1|2) #REQUIRED>
<!ELEMENT ImageEncoding EMPTY>
<!ATTLIST ImageEncoding quality (90|80|70|60|50|40) #REQUIRED>
<!ELEMENT ImageDecoding EMPTY>
<!ATTLIST ImageDecoding memCap CDATA #REQUIRED>
<!ELEMENT Camera EMPTY>
<!ELEMENT EncoderOutputFileFormat EMPTY>
<!ATTLIST EncoderOutputFileFormat name (mp4|3gp) #REQUIRED>
<!ELEMENT VideoEncoderCap EMPTY>
<!ATTLIST VideoEncoderCap name (h264|h263|m4v|wmv) #REQUIRED>
<!ATTLIST VideoEncoderCap enabled (true|false) #REQUIRED>
<!ATTLIST VideoEncoderCap minBitRate CDATA #REQUIRED>
<!ATTLIST VideoEncoderCap maxBitRate CDATA #REQUIRED>
<!ATTLIST VideoEncoderCap minFrameWidth CDATA #REQUIRED>
<!ATTLIST VideoEncoderCap maxFrameWidth CDATA #REQUIRED>
<!ATTLIST VideoEncoderCap minFrameHeight CDATA #REQUIRED>
<!ATTLIST VideoEncoderCap maxFrameHeight CDATA #REQUIRED>
<!ATTLIST VideoEncoderCap minFrameRate CDATA #REQUIRED>
<!ATTLIST VideoEncoderCap maxFrameRate CDATA #REQUIRED>
<!ELEMENT AudioEncoderCap EMPTY>
<!ATTLIST AudioEncoderCap name (amrnb|amrwb|aac|wma) #REQUIRED>
<!ATTLIST AudioEncoderCap enabled (true|false) #REQUIRED>
<!ATTLIST AudioEncoderCap minBitRate CDATA #REQUIRED>
<!ATTLIST AudioEncoderCap maxBitRate CDATA #REQUIRED>
<!ATTLIST AudioEncoderCap minSampleRate CDATA #REQUIRED>
<!ATTLIST AudioEncoderCap maxSampleRate CDATA #REQUIRED>
<!ATTLIST AudioEncoderCap minChannels (1|2) #REQUIRED>
<!ATTLIST AudioEncoderCap maxChannels (1|2) #REQUIRED>
<!ELEMENT VideoDecoderCap EMPTY>
<!ATTLIST VideoDecoderCap name (wmv) #REQUIRED>
<!ATTLIST VideoDecoderCap enabled (true|false) #REQUIRED>
<!ELEMENT AudioDecoderCap EMPTY>
<!ATTLIST AudioDecoderCap name (wma) #REQUIRED>
<!ATTLIST AudioDecoderCap enabled (true|false) #REQUIRED>
<!ELEMENT VideoEditorCap EMPTY>
<!ATTLIST VideoEditorCap maxInputFrameWidth CDATA #REQUIRED>
<!ATTLIST VideoEditorCap maxInputFrameHeight CDATA #REQUIRED>
<!ATTLIST VideoEditorCap maxOutputFrameWidth CDATA #REQUIRED>
<!ATTLIST VideoEditorCap maxOutputFrameHeight CDATA #REQUIRED>
<!ATTLIST VideoEditorCap maxPrefetchYUVFrames CDATA #REQUIRED>
<!ELEMENT ExportVideoProfile EMPTY>
<!ATTLIST ExportVideoProfile name (h264|h263|m4v) #REQUIRED>
<!ATTLIST ExportVideoProfile profile CDATA #REQUIRED>
<!ATTLIST ExportVideoProfile level CDATA #REQUIRED>
]>
<!--
This file is used to declare the multimedia profiles and capabilities
on an android-powered device.
-->
<MediaSettings>
<!-- Each camcorder profile defines a set of predefined configuration parameters -->
<CamcorderProfiles cameraId="0">
<EncoderProfile quality="qcif" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="128000"
width="176"
height="144"
frameRate="30" />
<Audio codec="aac"
bitRate="61000"
sampleRate="44100"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="qvga" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="256000"
width="320"
height="240"
frameRate="30" />
<Audio codec="amrnb"
bitRate="12200"
sampleRate="8000"
channels="1" />
</EncoderProfile>
<!--
<EncoderProfile quality="cif" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="1200000"
width="352"
height="288"
frameRate="30" />
<Audio codec="aac"
bitRate="61000"
sampleRate="44100"
channels="1" />
</EncoderProfile>
-->
<!-- If your sensor driver don't support 720p and 480p stream, Please fill this element according as
your sensor max resolution for preview(Not Capture resolution) -->
<EncoderProfile quality="480p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="3000000"
width="640"
height="480"
frameRate="30" />
<Audio codec="aac"
bitRate="61000"
sampleRate="44100"
channels="1" />
</EncoderProfile>
<!-- If your sensor driver don't support 480p stream, Please turn off this element -->
<!--
<EncoderProfile quality="480p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="3000000"
width="720"
height="480"
frameRate="30" />
<Audio codec="aac"
bitRate="61000"
sampleRate="44100"
channels="1" />
</EncoderProfile>
-->
<!-- If your sensor driver don't support 480p stream, Please turn off this element -->
<!--
<EncoderProfile quality="480p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="3000000"
width="800"
height="600"
frameRate="30" />
<Audio codec="aac"
bitRate="61000"
sampleRate="44100"
channels="1" />
</EncoderProfile>
-->
<!-- If your sensor driver don't support 576p stream, Please turn off this element -->
<!--
<EncoderProfile quality="576p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="3000000"
width="720"
height="576"
frameRate="30" />
<Audio codec="aac"
bitRate="61000"
sampleRate="44100"
channels="1" />
</EncoderProfile>
-->
<!-- If your sensor driver don't support 720p stream, Please turn off this element -->
<EncoderProfile quality="720p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="6000000"
width="1280"
height="720"
frameRate="30" />
<Audio codec="aac"
bitRate="61000"
sampleRate="44100"
channels="1" />
</EncoderProfile>
<!-- If your sensor driver don't support 1080p stream, Please turn off this element -->
<EncoderProfile quality="timelapseqcif" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="192000"
width="176"
height="144"
frameRate="30" />
<Audio codec="aac"
bitRate="61000"
sampleRate="44100"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="timelapseqvga" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="128000"
width="320"
height="240"
frameRate="30" />
<Audio codec="amrnb"
bitRate="12200"
sampleRate="8000"
channels="1" />
</EncoderProfile>
<!--
<EncoderProfile quality="timelapsecif" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="1200000"
width="352"
height="288"
frameRate="30" />
<Audio codec="aac"
bitRate="61000"
sampleRate="44100"
channels="1" />
</EncoderProfile>
-->
<!-- If your sensor driver don't support 720p and 480p stream, Please fill this element according as
your sensor max resolution for preview(Not Capture resolution) -->
<EncoderProfile quality="timelapse480p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="1200000"
width="640"
height="480"
frameRate="30" />
<Audio codec="aac"
bitRate="61000"
sampleRate="44100"
channels="1" />
</EncoderProfile>
<!-- If your sensor driver don't support 480p stream, Please turn off this element -->
<!--
<EncoderProfile quality="timelapse480p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="256000"
width="720"
height="480"
frameRate="30" />
<Audio codec="aac"
bitRate="61000"
sampleRate="44100"
channels="1" />
</EncoderProfile>
-->
<!-- If your sensor driver don't support 480p stream, Please turn off this element -->
<!--
<EncoderProfile quality="timelapse480p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="256000"
width="800"
height="600"
frameRate="30" />
<Audio codec="aac"
bitRate="61000"
sampleRate="44100"
channels="1" />
</EncoderProfile>
-->
<!-- If your sensor driver don't support 720p and 480p stream, Please fill this element according as
your sensor max resolution for preview(Not Capture resolution) -->
<!--
<EncoderProfile quality="timelapse480p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="1200000"
width="800"
height="600"
frameRate="30" />
<Audio codec="aac"
bitRate="61000"
sampleRate="44100"
channels="1" />
</EncoderProfile>
-->
<!-- If your sensor driver don't support 576p stream, Please fill this element according as
your sensor max resolution for preview(Not Capture resolution) -->
<!--
<EncoderProfile quality="timelapse576p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="1200000"
width="720"
height="576"
frameRate="30" />
<Audio codec="aac"
bitRate="61000"
sampleRate="44100"
channels="1" />
</EncoderProfile>
-->
<!-- If your sensor driver don't support 720p stream, Please turn off this element -->
<!--
<EncoderProfile quality="timelapse720p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="3000000"
width="1280"
height="720"
frameRate="30" />
<Audio codec="aac"
bitRate="61000"
sampleRate="44100"
channels="1" />
</EncoderProfile>
-->
<!-- If your sensor driver don't support 108p stream, Please turn off this element -->
<ImageEncoding quality="90" />
<ImageEncoding quality="80" />
<ImageEncoding quality="70" />
<ImageDecoding memCap="20000000" />
</CamcorderProfiles>
<CamcorderProfiles cameraId="1">
<EncoderProfile quality="qcif" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="128000"
width="176"
height="144"
frameRate="30" />
<Audio codec="aac"
bitRate="61000"
sampleRate="44100"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="qvga" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="256000"
width="320"
height="240"
frameRate="30" />
<Audio codec="amrnb"
bitRate="12200"
sampleRate="8000"
channels="1" />
</EncoderProfile>
<!--
<EncoderProfile quality="cif" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="1200000"
width="352"
height="288"
frameRate="30" />
<Audio codec="aac"
bitRate="96000"
sampleRate="48000"
channels="1" />
</EncoderProfile>
-->
<!-- If your sensor driver don't support 720p and 480p stream, Please fill this element according as
your sensor max resolution for preview(Not Capture resolution) -->
<EncoderProfile quality="480p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="3000000"
width="640"
height="480"
frameRate="30" />
<Audio codec="aac"
bitRate="61000"
sampleRate="44100"
channels="1" />
</EncoderProfile>
<!-- If your sensor driver don't support 480p stream, Please turn on this element -->
<!--
<EncoderProfile quality="480p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="3000000"
width="720"
height="480"
frameRate="30" />
<Audio codec="aac"
bitRate="61000"
sampleRate="44100"
channels="1" />
</EncoderProfile>
-->
<!-- If your sensor driver don't support 480p stream, Please turn off this element -->
<!--
<EncoderProfile quality="480p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="3000000"
width="800"
height="600"
frameRate="30" />
<Audio codec="aac"
bitRate="61000"
sampleRate="44100"
channels="1" />
</EncoderProfile>
-->
<!-- If your sensor driver don't support 720p stream, Please turn off this element -->
<!--
<EncoderProfile quality="720p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="6000000"
width="1280"
height="720"
frameRate="30" />
<Audio codec="aac"
bitRate="61000"
sampleRate="44100"
channels="1" />
</EncoderProfile>
-->
<!-- If your sensor driver don't support 1080p stream, Please turn off this element -->
<!--
<EncoderProfile quality="1080p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="6000000"
width="1920"
height="1080"
frameRate="30" />
<Audio codec="aac"
bitRate="61000"
sampleRate="44100"
channels="1" />
</EncoderProfile>
-->
<EncoderProfile quality="timelapseqcif" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="192000"
width="176"
height="144"
frameRate="30" />
<Audio codec="aac"
bitRate="61000"
sampleRate="44100"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="timelapseqvga" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="128000"
width="320"
height="240"
frameRate="30" />
<Audio codec="amrnb"
bitRate="12200"
sampleRate="8000"
channels="1" />
</EncoderProfile>
<!--
<EncoderProfile quality="timelapsecif" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="1200000"
width="352"
height="288"
frameRate="30" />
<Audio codec="aac"
bitRate="61000"
sampleRate="44100"
channels="1" />
</EncoderProfile>
-->
<!-- If your sensor driver don't support 720p and 480p stream, Please fill this element according as
your sensor max resolution for preview(Not Capture resolution) -->
<EncoderProfile quality="timelapse480p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="1200000"
width="640"
height="480"
frameRate="30" />
<Audio codec="aac"
bitRate="61000"
sampleRate="44100"
channels="1" />
</EncoderProfile>
<!-- If your sensor driver don't support 480p stream, Please turn on this element -->
<!--
<EncoderProfile quality="timelapse480p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="1200000"
width="720"
height="480"
frameRate="30" />
<Audio codec="aac"
bitRate="61000"
sampleRate="44100"
channels="1" />
</EncoderProfile>
-->
<!-- If your sensor driver don't support 720p and 480p stream, Please fill this element according as
your sensor max resolution for preview(Not Capture resolution) -->
<!--
<EncoderProfile quality="timelapse480p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="1200000"
width="800"
height="600"
frameRate="30" />
<Audio codec="aac"
bitRate="61000"
sampleRate="44100"
channels="1" />
</EncoderProfile>
-->
<!-- If your sensor driver don't support 720p stream, Please turn off this element -->
<!--
<EncoderProfile quality="timelapse720p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="3000000"
width="1280"
height="720"
frameRate="8" />
<Audio codec="aac"
bitRate="61000"
sampleRate="44100"
channels="1" />
</EncoderProfile>
-->
<!-- If your sensor driver don't support 108p stream, Please turn off this element -->
<!--
<EncoderProfile quality="timelapse1080p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="3000000"
width="1920"
height="1080"
frameRate="30" />
<Audio codec="aac"
bitRate="61000"
sampleRate="44100"
channels="1" />
</EncoderProfile>
-->
<ImageEncoding quality="90" />
<ImageEncoding quality="80" />
<ImageEncoding quality="70" />
<ImageDecoding memCap="20000000" />
</CamcorderProfiles>
<EncoderOutputFileFormat name="3gp" />
<EncoderOutputFileFormat name="mp4" />
<!--
If a codec is not enabled, it is invisible to the applications
In other words, the applications won't be able to use the codec
or query the capabilities of the codec at all if it is disabled
-->
<VideoEncoderCap name="h264" enabled="true"
minBitRate="64000" maxBitRate="3000000"
minFrameWidth="176" maxFrameWidth="1920"
minFrameHeight="144" maxFrameHeight="1080"
minFrameRate="1" maxFrameRate="30" />
<VideoEncoderCap name="h263" enabled="true"
minBitRate="64000" maxBitRate="1000000"
minFrameWidth="176" maxFrameWidth="800"
minFrameHeight="144" maxFrameHeight="480"
minFrameRate="1" maxFrameRate="24" />
<VideoEncoderCap name="m4v" enabled="true"
minBitRate="64000" maxBitRate="2000000"
minFrameWidth="176" maxFrameWidth="800"
minFrameHeight="144" maxFrameHeight="480"
minFrameRate="1" maxFrameRate="24" />
<AudioEncoderCap name="aac" enabled="true"
minBitRate="8192" maxBitRate="96000"
minSampleRate="8000" maxSampleRate="44100"
minChannels="1" maxChannels="1" />
<AudioEncoderCap name="amrwb" enabled="true"
minBitRate="6600" maxBitRate="23050"
minSampleRate="16000" maxSampleRate="16000"
minChannels="1" maxChannels="1" />
<AudioEncoderCap name="amrnb" enabled="true"
minBitRate="5525" maxBitRate="12200"
minSampleRate="8000" maxSampleRate="8000"
minChannels="1" maxChannels="1" />
<!--
FIXME:
We do not check decoder capabilities at present
At present, we only check whether windows media is visible
for TEST applications. For other applications, we do
not perform any checks at all.
-->
<VideoDecoderCap name="wmv" enabled="false"/>
<AudioDecoderCap name="wma" enabled="false"/>
<!--
<VideoEditorCap maxInputFrameWidth="1920"
maxInputFrameHeight="1080" maxOutputFrameWidth="1920"
maxOutputFrameHeight="1080" maxPrefetchYUVFrames="1"/>
-->
<!--
The VideoEditor Export codec profile and level values
correspond to the values in OMX_Video.h.
E.g. for h264, profile value 1 means OMX_VIDEO_AVCProfileBaseline
and level 4096 means OMX_VIDEO_AVCLevel41.
Please note that the values are in decimal.
These values are for video encoder.
-->
<!--
Codec = h.264, Hp-High profile, level 4.1
-->
<!--<ExportVideoProfile name="h264" profile= "4" level="4096"/>-->
<!--
Codec = h.263, Baseline profile, level 0
-->
<!--<ExportVideoProfile name="h263" profile= "1" level="1"/>-->
<!--
Codec = mpeg4, Simple profile, level 3
-->
<!--<ExportVideoProfile name="m4v" profile= "1" level="16"/>-->
</MediaSettings>

@ -0,0 +1,4 @@
将需要升级的loader以RK*Loader*.bin格式放到该目录下
OTA打包时即会加入到升级包中。
也就是说只要将需要升级的loader以以RK*Loader*.bin格式命名然后放到该目录下就可实现loader升级功能。

@ -0,0 +1,46 @@
#
# Copyright 2023 The Android Open-Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# First lunching is U, api_level is 34
PRODUCT_SHIPPING_API_LEVEL := 34
PRODUCT_DTBO_TEMPLATE := $(LOCAL_PATH)/dt-overlay.in
include device/rockchip/common/build/rockchip/DynamicPartitions.mk
include device/rockchip/rk3576/rk3576_u/BoardConfig.mk
include device/rockchip/common/BoardConfig.mk
$(call inherit-product, device/rockchip/rk3576/device.mk)
$(call inherit-product, device/rockchip/common/device.mk)
$(call inherit-product, frameworks/native/build/tablet-10in-xhdpi-2048-dalvik-heap.mk)
DEVICE_PACKAGE_OVERLAYS += $(LOCAL_PATH)/../overlay
PRODUCT_CHARACTERISTICS := tablet
PRODUCT_NAME := rk3576_u
PRODUCT_DEVICE := rk3576_u
PRODUCT_BRAND := rockchip
PRODUCT_MODEL := rk3576_u
PRODUCT_MANUFACTURER := rockchip
PRODUCT_AAPT_PREF_CONFIG := mdpi
#
## add Rockchip properties
#
PRODUCT_PROPERTY_OVERRIDES += ro.sf.lcd_density=320
PRODUCT_PROPERTY_OVERRIDES += ro.wifi.sleep.power.down=true
PRODUCT_PROPERTY_OVERRIDES += persist.wifi.sleep.delay.ms=0
PRODUCT_PROPERTY_OVERRIDES += persist.bt.power.down=true
PRODUCT_PROPERTY_OVERRIDES += vendor.hwc.device.primary=DSI
PRODUCT_PROPERTY_OVERRIDES += vendor.hwc.device.extend=HDMI-A,eDP

@ -0,0 +1,13 @@
# add for rk3576-tablet-v10
genfscon sysfs /devices/platform/2ac40000.i2c/i2c-1/1-0023/rk805-pwrkey.1.auto/wakeup u:object_r:sysfs_wakeup:s0
genfscon sysfs /devices/platform/2ac90000.i2c/i2c-6/6-003b/power_supply/sgm4154x-charger u:object_r:sysfs_batteryinfo:s0
genfscon sysfs /devices/platform/2ac90000.i2c/i2c-6/6-003b/power_supply/sgm4154x-charger/wakeup5 u:object_r:sysfs_wakeup:s0
genfscon sysfs /devices/platform/2ac90000.i2c/i2c-6/6-003b/wakeup u:object_r:sysfs_wakeup:s0
genfscon sysfs /devices/platform/2ac90000.i2c/i2c-6/6-004e/power_supply/tcpm-source-psy-6-004e u:object_r:sysfs_batteryinfo:s0
genfscon sysfs /devices/platform/2ac90000.i2c/i2c-6/6-004e/power_supply/tcpm-source-psy-6-004e/wakeup6 u:object_r:sysfs_wakeup:s0
genfscon sysfs /devices/platform/2ac90000.i2c/i2c-6/6-004e/wakeup u:object_r:sysfs_wakeup:s0
genfscon sysfs /devices/platform/2ac90000.i2c/i2c-6/6-0051/rtc/rtc0 u:object_r:sysfs_rtc:s0
genfscon sysfs /devices/platform/2ac90000.i2c/i2c-6/6-0051/rtc/rtc0/alarmtimer.4.auto/wakeup u:object_r:sysfs_wakeup:s0
genfscon sysfs /devices/platform/2ac90000.i2c/i2c-6/6-0051/wakeup u:object_r:sysfs_wakeup:s0
genfscon sysfs /devices/platform/2ac90000.i2c/i2c-6/6-0064/power_supply/cw221X-bat u:object_r:sysfs_batteryinfo:s0
genfscon sysfs /devices/platform/2ac90000.i2c/i2c-6/6-0064/power_supply/cw221X-bat/wakeup3 u:object_r:sysfs_wakeup:s0

@ -0,0 +1,3 @@
LOCAL_PATH := $(call my-dir)
include $(call all-makefiles-under,$(LOCAL_PATH))

@ -0,0 +1,7 @@
# generate fstab file for device
-include device/rockchip/common/build/rockchip/RebuildFstab.mk
# generate dtbo image for device
-include device/rockchip/common/build/rockchip/RebuildDtboImg.mk
# generate parameter.txt for device
-include device/rockchip/common/build/rockchip/RebuildParameter.mk

@ -0,0 +1,22 @@
#
# Copyright 2023 The Android Open-Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
PRODUCT_MAKEFILES := \
$(LOCAL_DIR)/rk3576s_u.mk
COMMON_LUNCH_CHOICES := \
rk3576s_u-userdebug \
rk3576s_u-user

@ -0,0 +1,52 @@
#
# Copyright 2023 The Android Open-Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
BUILD_WITH_GO_OPT := false
BOARD_BUILD_GKI := false
TARGET_BOARD_CPU ?= RK3576S
#64-bit onlye
DEVICE_IS_64BIT_ONLY := true
TARGET_2ND_ARCH :=
TARGET_2ND_ARCH_VARIANT :=
TARGET_2ND_CPU_ABI :=
TARGET_2ND_CPU_ABI2 :=
TARGET_2ND_CPU_VARIANT :=
BOARD_GRAVITY_SENSOR_SUPPORT := true
BOARD_COMPASS_SENSOR_SUPPORT := true
BOARD_SENSOR_COMPASS_AK8963-64 := true
BOARD_GYROSCOPE_SENSOR_SUPPORT := true
BOARD_PROXIMITY_SENSOR_SUPPORT := true
BOARD_LIGHT_SENSOR_SUPPORT := true
PRODUCT_KERNEL_DTS := rk3576s-tablet-v10
PRODUCT_KERNEL_CONFIG += pcie_wifi.config
BOARD_GRAVITY_SENSOR_SUPPORT := true
BOARD_COMPASS_SENSOR_SUPPORT := true
BOARD_SENSOR_COMPASS_AK8963-64 := true
BOARD_GYROSCOPE_SENSOR_SUPPORT := true
BOARD_PROXIMITY_SENSOR_SUPPORT := true
BOARD_LIGHT_SENSOR_SUPPORT := true
BOARD_GSENSOR_MXC6655XA_SUPPORT := true
BOARD_CAMERA_SUPPORT_EXT := true
BOARD_HS_ETHERNET := true
BOARD_SEPOLICY_DIRS += $(TARGET_DEVICE_DIR)/sepolicy
include device/rockchip/rk3576/BoardConfig.mk

@ -0,0 +1,5 @@
# UART device port where Bluetooth controller is attached
UartPort = /dev/ttyS4
# Firmware patch file location
FwPatchFilePath = /vendor/etc/firmware/

@ -0,0 +1,11 @@
/dts-v1/;
/plugin/;
&reboot_mode {
mode-bootloader = <0x5242C309>;
mode-charge = <0x5242C30B>;
mode-fastboot = <0x5242C303>;
mode-loader = <0x5242C301>;
mode-normal = <0x5242C300>;
mode-recovery = <0x5242C303>;
};

@ -0,0 +1,689 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2010 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<!DOCTYPE MediaSettings [
<!ELEMENT MediaSettings (CamcorderProfiles,
EncoderOutputFileFormat+,
VideoEncoderCap+,
AudioEncoderCap+,
VideoDecoderCap,
AudioDecoderCap)>
<!ELEMENT CamcorderProfiles (EncoderProfile+, ImageEncoding+, ImageDecoding, Camera)>
<!ELEMENT EncoderProfile (Video, Audio)>
<!ATTLIST EncoderProfile quality (high|low) #REQUIRED>
<!ATTLIST EncoderProfile fileFormat (mp4|3gp) #REQUIRED>
<!ATTLIST EncoderProfile duration (30|60) #REQUIRED>
<!ATTLIST EncoderProfile cameraId (0|1) #REQUIRED>
<!ELEMENT Video EMPTY>
<!ATTLIST Video codec (h264|h263|m4v) #REQUIRED>
<!ATTLIST Video bitRate CDATA #REQUIRED>
<!ATTLIST Video width CDATA #REQUIRED>
<!ATTLIST Video height CDATA #REQUIRED>
<!ATTLIST Video frameRate CDATA #REQUIRED>
<!ELEMENT Audio EMPTY>
<!ATTLIST Audio codec (amrnb|amrwb|aac) #REQUIRED>
<!ATTLIST Audio bitRate CDATA #REQUIRED>
<!ATTLIST Audio sampleRate CDATA #REQUIRED>
<!ATTLIST Audio channels (1|2) #REQUIRED>
<!ELEMENT ImageEncoding EMPTY>
<!ATTLIST ImageEncoding quality (90|80|70|60|50|40) #REQUIRED>
<!ELEMENT ImageDecoding EMPTY>
<!ATTLIST ImageDecoding memCap CDATA #REQUIRED>
<!ELEMENT Camera EMPTY>
<!ELEMENT EncoderOutputFileFormat EMPTY>
<!ATTLIST EncoderOutputFileFormat name (mp4|3gp) #REQUIRED>
<!ELEMENT VideoEncoderCap EMPTY>
<!ATTLIST VideoEncoderCap name (h264|h263|m4v|wmv) #REQUIRED>
<!ATTLIST VideoEncoderCap enabled (true|false) #REQUIRED>
<!ATTLIST VideoEncoderCap minBitRate CDATA #REQUIRED>
<!ATTLIST VideoEncoderCap maxBitRate CDATA #REQUIRED>
<!ATTLIST VideoEncoderCap minFrameWidth CDATA #REQUIRED>
<!ATTLIST VideoEncoderCap maxFrameWidth CDATA #REQUIRED>
<!ATTLIST VideoEncoderCap minFrameHeight CDATA #REQUIRED>
<!ATTLIST VideoEncoderCap maxFrameHeight CDATA #REQUIRED>
<!ATTLIST VideoEncoderCap minFrameRate CDATA #REQUIRED>
<!ATTLIST VideoEncoderCap maxFrameRate CDATA #REQUIRED>
<!ELEMENT AudioEncoderCap EMPTY>
<!ATTLIST AudioEncoderCap name (amrnb|amrwb|aac|wma) #REQUIRED>
<!ATTLIST AudioEncoderCap enabled (true|false) #REQUIRED>
<!ATTLIST AudioEncoderCap minBitRate CDATA #REQUIRED>
<!ATTLIST AudioEncoderCap maxBitRate CDATA #REQUIRED>
<!ATTLIST AudioEncoderCap minSampleRate CDATA #REQUIRED>
<!ATTLIST AudioEncoderCap maxSampleRate CDATA #REQUIRED>
<!ATTLIST AudioEncoderCap minChannels (1|2) #REQUIRED>
<!ATTLIST AudioEncoderCap maxChannels (1|2) #REQUIRED>
<!ELEMENT VideoDecoderCap EMPTY>
<!ATTLIST VideoDecoderCap name (wmv) #REQUIRED>
<!ATTLIST VideoDecoderCap enabled (true|false) #REQUIRED>
<!ELEMENT AudioDecoderCap EMPTY>
<!ATTLIST AudioDecoderCap name (wma) #REQUIRED>
<!ATTLIST AudioDecoderCap enabled (true|false) #REQUIRED>
<!ELEMENT VideoEditorCap EMPTY>
<!ATTLIST VideoEditorCap maxInputFrameWidth CDATA #REQUIRED>
<!ATTLIST VideoEditorCap maxInputFrameHeight CDATA #REQUIRED>
<!ATTLIST VideoEditorCap maxOutputFrameWidth CDATA #REQUIRED>
<!ATTLIST VideoEditorCap maxOutputFrameHeight CDATA #REQUIRED>
<!ATTLIST VideoEditorCap maxPrefetchYUVFrames CDATA #REQUIRED>
<!ELEMENT ExportVideoProfile EMPTY>
<!ATTLIST ExportVideoProfile name (h264|h263|m4v) #REQUIRED>
<!ATTLIST ExportVideoProfile profile CDATA #REQUIRED>
<!ATTLIST ExportVideoProfile level CDATA #REQUIRED>
]>
<!--
This file is used to declare the multimedia profiles and capabilities
on an android-powered device.
-->
<MediaSettings>
<!-- Each camcorder profile defines a set of predefined configuration parameters -->
<CamcorderProfiles cameraId="0">
<EncoderProfile quality="qcif" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="128000"
width="176"
height="144"
frameRate="30" />
<Audio codec="aac"
bitRate="61000"
sampleRate="44100"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="qvga" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="256000"
width="320"
height="240"
frameRate="30" />
<Audio codec="amrnb"
bitRate="12200"
sampleRate="8000"
channels="1" />
</EncoderProfile>
<!--
<EncoderProfile quality="cif" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="1200000"
width="352"
height="288"
frameRate="30" />
<Audio codec="aac"
bitRate="61000"
sampleRate="44100"
channels="1" />
</EncoderProfile>
-->
<!-- If your sensor driver don't support 720p and 480p stream, Please fill this element according as
your sensor max resolution for preview(Not Capture resolution) -->
<EncoderProfile quality="480p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="3000000"
width="640"
height="480"
frameRate="30" />
<Audio codec="aac"
bitRate="61000"
sampleRate="44100"
channels="1" />
</EncoderProfile>
<!-- If your sensor driver don't support 480p stream, Please turn off this element -->
<!--
<EncoderProfile quality="480p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="3000000"
width="720"
height="480"
frameRate="30" />
<Audio codec="aac"
bitRate="61000"
sampleRate="44100"
channels="1" />
</EncoderProfile>
-->
<!-- If your sensor driver don't support 480p stream, Please turn off this element -->
<!--
<EncoderProfile quality="480p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="3000000"
width="800"
height="600"
frameRate="30" />
<Audio codec="aac"
bitRate="61000"
sampleRate="44100"
channels="1" />
</EncoderProfile>
-->
<!-- If your sensor driver don't support 576p stream, Please turn off this element -->
<!--
<EncoderProfile quality="576p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="3000000"
width="720"
height="576"
frameRate="30" />
<Audio codec="aac"
bitRate="61000"
sampleRate="44100"
channels="1" />
</EncoderProfile>
-->
<!-- If your sensor driver don't support 720p stream, Please turn off this element -->
<EncoderProfile quality="720p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="6000000"
width="1280"
height="720"
frameRate="30" />
<Audio codec="aac"
bitRate="61000"
sampleRate="44100"
channels="1" />
</EncoderProfile>
<!-- If your sensor driver don't support 1080p stream, Please turn off this element -->
<EncoderProfile quality="timelapseqcif" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="192000"
width="176"
height="144"
frameRate="30" />
<Audio codec="aac"
bitRate="61000"
sampleRate="44100"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="timelapseqvga" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="128000"
width="320"
height="240"
frameRate="30" />
<Audio codec="amrnb"
bitRate="12200"
sampleRate="8000"
channels="1" />
</EncoderProfile>
<!--
<EncoderProfile quality="timelapsecif" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="1200000"
width="352"
height="288"
frameRate="30" />
<Audio codec="aac"
bitRate="61000"
sampleRate="44100"
channels="1" />
</EncoderProfile>
-->
<!-- If your sensor driver don't support 720p and 480p stream, Please fill this element according as
your sensor max resolution for preview(Not Capture resolution) -->
<EncoderProfile quality="timelapse480p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="1200000"
width="640"
height="480"
frameRate="30" />
<Audio codec="aac"
bitRate="61000"
sampleRate="44100"
channels="1" />
</EncoderProfile>
<!-- If your sensor driver don't support 480p stream, Please turn off this element -->
<!--
<EncoderProfile quality="timelapse480p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="256000"
width="720"
height="480"
frameRate="30" />
<Audio codec="aac"
bitRate="61000"
sampleRate="44100"
channels="1" />
</EncoderProfile>
-->
<!-- If your sensor driver don't support 480p stream, Please turn off this element -->
<!--
<EncoderProfile quality="timelapse480p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="256000"
width="800"
height="600"
frameRate="30" />
<Audio codec="aac"
bitRate="61000"
sampleRate="44100"
channels="1" />
</EncoderProfile>
-->
<!-- If your sensor driver don't support 720p and 480p stream, Please fill this element according as
your sensor max resolution for preview(Not Capture resolution) -->
<!--
<EncoderProfile quality="timelapse480p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="1200000"
width="800"
height="600"
frameRate="30" />
<Audio codec="aac"
bitRate="61000"
sampleRate="44100"
channels="1" />
</EncoderProfile>
-->
<!-- If your sensor driver don't support 576p stream, Please fill this element according as
your sensor max resolution for preview(Not Capture resolution) -->
<!--
<EncoderProfile quality="timelapse576p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="1200000"
width="720"
height="576"
frameRate="30" />
<Audio codec="aac"
bitRate="61000"
sampleRate="44100"
channels="1" />
</EncoderProfile>
-->
<!-- If your sensor driver don't support 720p stream, Please turn off this element -->
<!--
<EncoderProfile quality="timelapse720p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="3000000"
width="1280"
height="720"
frameRate="30" />
<Audio codec="aac"
bitRate="61000"
sampleRate="44100"
channels="1" />
</EncoderProfile>
-->
<!-- If your sensor driver don't support 108p stream, Please turn off this element -->
<ImageEncoding quality="90" />
<ImageEncoding quality="80" />
<ImageEncoding quality="70" />
<ImageDecoding memCap="20000000" />
</CamcorderProfiles>
<CamcorderProfiles cameraId="1">
<EncoderProfile quality="qcif" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="128000"
width="176"
height="144"
frameRate="30" />
<Audio codec="aac"
bitRate="61000"
sampleRate="44100"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="qvga" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="256000"
width="320"
height="240"
frameRate="30" />
<Audio codec="amrnb"
bitRate="12200"
sampleRate="8000"
channels="1" />
</EncoderProfile>
<!--
<EncoderProfile quality="cif" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="1200000"
width="352"
height="288"
frameRate="30" />
<Audio codec="aac"
bitRate="96000"
sampleRate="48000"
channels="1" />
</EncoderProfile>
-->
<!-- If your sensor driver don't support 720p and 480p stream, Please fill this element according as
your sensor max resolution for preview(Not Capture resolution) -->
<EncoderProfile quality="480p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="3000000"
width="640"
height="480"
frameRate="30" />
<Audio codec="aac"
bitRate="61000"
sampleRate="44100"
channels="1" />
</EncoderProfile>
<!-- If your sensor driver don't support 480p stream, Please turn on this element -->
<!--
<EncoderProfile quality="480p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="3000000"
width="720"
height="480"
frameRate="30" />
<Audio codec="aac"
bitRate="61000"
sampleRate="44100"
channels="1" />
</EncoderProfile>
-->
<!-- If your sensor driver don't support 480p stream, Please turn off this element -->
<!--
<EncoderProfile quality="480p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="3000000"
width="800"
height="600"
frameRate="30" />
<Audio codec="aac"
bitRate="61000"
sampleRate="44100"
channels="1" />
</EncoderProfile>
-->
<!-- If your sensor driver don't support 720p stream, Please turn off this element -->
<!--
<EncoderProfile quality="720p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="6000000"
width="1280"
height="720"
frameRate="30" />
<Audio codec="aac"
bitRate="61000"
sampleRate="44100"
channels="1" />
</EncoderProfile>
-->
<!-- If your sensor driver don't support 1080p stream, Please turn off this element -->
<!--
<EncoderProfile quality="1080p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="6000000"
width="1920"
height="1080"
frameRate="30" />
<Audio codec="aac"
bitRate="61000"
sampleRate="44100"
channels="1" />
</EncoderProfile>
-->
<EncoderProfile quality="timelapseqcif" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="192000"
width="176"
height="144"
frameRate="30" />
<Audio codec="aac"
bitRate="61000"
sampleRate="44100"
channels="1" />
</EncoderProfile>
<EncoderProfile quality="timelapseqvga" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="128000"
width="320"
height="240"
frameRate="30" />
<Audio codec="amrnb"
bitRate="12200"
sampleRate="8000"
channels="1" />
</EncoderProfile>
<!--
<EncoderProfile quality="timelapsecif" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="1200000"
width="352"
height="288"
frameRate="30" />
<Audio codec="aac"
bitRate="61000"
sampleRate="44100"
channels="1" />
</EncoderProfile>
-->
<!-- If your sensor driver don't support 720p and 480p stream, Please fill this element according as
your sensor max resolution for preview(Not Capture resolution) -->
<EncoderProfile quality="timelapse480p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="1200000"
width="640"
height="480"
frameRate="30" />
<Audio codec="aac"
bitRate="61000"
sampleRate="44100"
channels="1" />
</EncoderProfile>
<!-- If your sensor driver don't support 480p stream, Please turn on this element -->
<!--
<EncoderProfile quality="timelapse480p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="1200000"
width="720"
height="480"
frameRate="30" />
<Audio codec="aac"
bitRate="61000"
sampleRate="44100"
channels="1" />
</EncoderProfile>
-->
<!-- If your sensor driver don't support 720p and 480p stream, Please fill this element according as
your sensor max resolution for preview(Not Capture resolution) -->
<!--
<EncoderProfile quality="timelapse480p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="1200000"
width="800"
height="600"
frameRate="30" />
<Audio codec="aac"
bitRate="61000"
sampleRate="44100"
channels="1" />
</EncoderProfile>
-->
<!-- If your sensor driver don't support 720p stream, Please turn off this element -->
<!--
<EncoderProfile quality="timelapse720p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="3000000"
width="1280"
height="720"
frameRate="8" />
<Audio codec="aac"
bitRate="61000"
sampleRate="44100"
channels="1" />
</EncoderProfile>
-->
<!-- If your sensor driver don't support 108p stream, Please turn off this element -->
<!--
<EncoderProfile quality="timelapse1080p" fileFormat="mp4" duration="30">
<Video codec="h264"
bitRate="3000000"
width="1920"
height="1080"
frameRate="30" />
<Audio codec="aac"
bitRate="61000"
sampleRate="44100"
channels="1" />
</EncoderProfile>
-->
<ImageEncoding quality="90" />
<ImageEncoding quality="80" />
<ImageEncoding quality="70" />
<ImageDecoding memCap="20000000" />
</CamcorderProfiles>
<EncoderOutputFileFormat name="3gp" />
<EncoderOutputFileFormat name="mp4" />
<!--
If a codec is not enabled, it is invisible to the applications
In other words, the applications won't be able to use the codec
or query the capabilities of the codec at all if it is disabled
-->
<VideoEncoderCap name="h264" enabled="true"
minBitRate="64000" maxBitRate="3000000"
minFrameWidth="176" maxFrameWidth="1920"
minFrameHeight="144" maxFrameHeight="1080"
minFrameRate="1" maxFrameRate="30" />
<VideoEncoderCap name="h263" enabled="true"
minBitRate="64000" maxBitRate="1000000"
minFrameWidth="176" maxFrameWidth="800"
minFrameHeight="144" maxFrameHeight="480"
minFrameRate="1" maxFrameRate="24" />
<VideoEncoderCap name="m4v" enabled="true"
minBitRate="64000" maxBitRate="2000000"
minFrameWidth="176" maxFrameWidth="800"
minFrameHeight="144" maxFrameHeight="480"
minFrameRate="1" maxFrameRate="24" />
<AudioEncoderCap name="aac" enabled="true"
minBitRate="8192" maxBitRate="96000"
minSampleRate="8000" maxSampleRate="44100"
minChannels="1" maxChannels="1" />
<AudioEncoderCap name="amrwb" enabled="true"
minBitRate="6600" maxBitRate="23050"
minSampleRate="16000" maxSampleRate="16000"
minChannels="1" maxChannels="1" />
<AudioEncoderCap name="amrnb" enabled="true"
minBitRate="5525" maxBitRate="12200"
minSampleRate="8000" maxSampleRate="8000"
minChannels="1" maxChannels="1" />
<!--
FIXME:
We do not check decoder capabilities at present
At present, we only check whether windows media is visible
for TEST applications. For other applications, we do
not perform any checks at all.
-->
<VideoDecoderCap name="wmv" enabled="false"/>
<AudioDecoderCap name="wma" enabled="false"/>
<!--
<VideoEditorCap maxInputFrameWidth="1920"
maxInputFrameHeight="1080" maxOutputFrameWidth="1920"
maxOutputFrameHeight="1080" maxPrefetchYUVFrames="1"/>
-->
<!--
The VideoEditor Export codec profile and level values
correspond to the values in OMX_Video.h.
E.g. for h264, profile value 1 means OMX_VIDEO_AVCProfileBaseline
and level 4096 means OMX_VIDEO_AVCLevel41.
Please note that the values are in decimal.
These values are for video encoder.
-->
<!--
Codec = h.264, Hp-High profile, level 4.1
-->
<!--<ExportVideoProfile name="h264" profile= "4" level="4096"/>-->
<!--
Codec = h.263, Baseline profile, level 0
-->
<!--<ExportVideoProfile name="h263" profile= "1" level="1"/>-->
<!--
Codec = mpeg4, Simple profile, level 3
-->
<!--<ExportVideoProfile name="m4v" profile= "1" level="16"/>-->
</MediaSettings>

@ -0,0 +1,4 @@
将需要升级的loader以RK*Loader*.bin格式放到该目录下
OTA打包时即会加入到升级包中。
也就是说只要将需要升级的loader以以RK*Loader*.bin格式命名然后放到该目录下就可实现loader升级功能。

@ -0,0 +1,46 @@
#
# Copyright 2023 The Android Open-Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# First lunching is U, api_level is 34
PRODUCT_SHIPPING_API_LEVEL := 34
PRODUCT_DTBO_TEMPLATE := $(LOCAL_PATH)/dt-overlay.in
include device/rockchip/common/build/rockchip/DynamicPartitions.mk
include device/rockchip/rk3576/rk3576s_u/BoardConfig.mk
include device/rockchip/common/BoardConfig.mk
$(call inherit-product, device/rockchip/rk3576/device.mk)
$(call inherit-product, device/rockchip/common/device.mk)
$(call inherit-product, frameworks/native/build/tablet-10in-xhdpi-2048-dalvik-heap.mk)
DEVICE_PACKAGE_OVERLAYS += $(LOCAL_PATH)/../overlay
PRODUCT_CHARACTERISTICS := tablet
PRODUCT_NAME := rk3576s_u
PRODUCT_DEVICE := rk3576s_u
PRODUCT_BRAND := rockchip
PRODUCT_MODEL := rk3576s_u
PRODUCT_MANUFACTURER := rockchip
PRODUCT_AAPT_PREF_CONFIG := mdpi
#
## add Rockchip properties
#
PRODUCT_PROPERTY_OVERRIDES += ro.sf.lcd_density=320
PRODUCT_PROPERTY_OVERRIDES += ro.wifi.sleep.power.down=true
PRODUCT_PROPERTY_OVERRIDES += persist.wifi.sleep.delay.ms=0
PRODUCT_PROPERTY_OVERRIDES += persist.bt.power.down=true
PRODUCT_PROPERTY_OVERRIDES += vendor.hwc.device.primary=DSI
PRODUCT_PROPERTY_OVERRIDES += vendor.hwc.device.extend=HDMI-A,eDP

@ -0,0 +1,13 @@
# add for rk3576-tablet-v10
genfscon sysfs /devices/platform/2ac40000.i2c/i2c-1/1-0023/rk805-pwrkey.1.auto/wakeup u:object_r:sysfs_wakeup:s0
genfscon sysfs /devices/platform/2ac90000.i2c/i2c-6/6-003b/power_supply/sgm4154x-charger u:object_r:sysfs_batteryinfo:s0
genfscon sysfs /devices/platform/2ac90000.i2c/i2c-6/6-003b/power_supply/sgm4154x-charger/wakeup5 u:object_r:sysfs_wakeup:s0
genfscon sysfs /devices/platform/2ac90000.i2c/i2c-6/6-003b/wakeup u:object_r:sysfs_wakeup:s0
genfscon sysfs /devices/platform/2ac90000.i2c/i2c-6/6-004e/power_supply/tcpm-source-psy-6-004e u:object_r:sysfs_batteryinfo:s0
genfscon sysfs /devices/platform/2ac90000.i2c/i2c-6/6-004e/power_supply/tcpm-source-psy-6-004e/wakeup6 u:object_r:sysfs_wakeup:s0
genfscon sysfs /devices/platform/2ac90000.i2c/i2c-6/6-004e/wakeup u:object_r:sysfs_wakeup:s0
genfscon sysfs /devices/platform/2ac90000.i2c/i2c-6/6-0051/rtc/rtc0 u:object_r:sysfs_rtc:s0
genfscon sysfs /devices/platform/2ac90000.i2c/i2c-6/6-0051/rtc/rtc0/alarmtimer.4.auto/wakeup u:object_r:sysfs_wakeup:s0
genfscon sysfs /devices/platform/2ac90000.i2c/i2c-6/6-0051/wakeup u:object_r:sysfs_wakeup:s0
genfscon sysfs /devices/platform/2ac90000.i2c/i2c-6/6-0064/power_supply/cw221X-bat u:object_r:sysfs_batteryinfo:s0
genfscon sysfs /devices/platform/2ac90000.i2c/i2c-6/6-0064/power_supply/cw221X-bat/wakeup3 u:object_r:sysfs_wakeup:s0

@ -0,0 +1,3 @@
/vendor/lib(64)?/hw/vulkan.rk3576.so u:object_r:same_process_hal_file:s0
/sys/devices/platform/2a580000.otp/rockchip-otp0/nvmem u:object_r:sysfs_nvmem:s0

@ -0,0 +1,28 @@
genfscon sysfs /devices/platform/27910000.jpegd/wakeup u:object_r:sysfs_wakeup:s0
genfscon sysfs /devices/platform/27910800.jpege/wakeup u:object_r:sysfs_wakeup:s0
genfscon sysfs /devices/platform/27920000.rga/wakeup u:object_r:sysfs_wakeup:s0
genfscon sysfs /devices/platform/27930000.rga/wakeup u:object_r:sysfs_wakeup:s0
genfscon sysfs /devices/platform/27960000.iep/wakeup u:object_r:sysfs_wakeup:s0
genfscon sysfs /devices/platform/27961000.vdpp/wakeup u:object_r:sysfs_wakeup:s0
genfscon sysfs /devices/platform/27a00000.rkvenc-core/wakeup u:object_r:sysfs_wakeup:s0
genfscon sysfs /devices/platform/27a10000.rkvenc-core/wakeup u:object_r:sysfs_wakeup:s0
genfscon sysfs /devices/platform/27b00100.rkvdec/wakeup u:object_r:sysfs_wakeup:s0
genfscon sysfs /devices/platform/2a580000.otp/rockchip-otp0/nvmem u:object_r:sysfs_hdmi:s0
genfscon sysfs /devices/platform/2602e000.syscon/2602e000.syscon:usb2-phy@0/extcon u:object_r:sysfs_extcon:s0
genfscon sysfs /devices/platform/2602e000.syscon/2602e000.syscon:usb2-phy@0/uevent u:object_r:sysfs_extcon:s0
genfscon sysfs /devices/platform/2a200000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/wakeup u:object_r:sysfs_wakeup:s0
genfscon sysfs /devices/platform/2a200000.pcie/wakeup u:object_r:sysfs_wakeup:s0
genfscon sysfs /devices/platform/2a310000.mmc/mmc_host/mmc1 u:object_r:sysfs_mmc:s0
genfscon sysfs /devices/platform/2a330000.mmc/mmc_host/mmc0 u:object_r:sysfs_mmc:s0
genfscon sysfs /devices/platform/27da0000.hdmi/extcon u:object_r:sysfs_extcon:s0
genfscon sysfs /devices/platform/27da0000.hdmi/uevent u:object_r:sysfs_extcon:s0
genfscon sysfs /devices/platform/27e40000.dp/extcon u:object_r:sysfs_extcon:s0
genfscon sysfs /devices/platform/27e40000.dp/uevent u:object_r:sysfs_extcon:s0
genfscon sysfs /devices/platform/2a2d0000.ufs/host0/target0:0:0/0:0:0:0/wakeup u:object_r:sysfs_wakeup:s0
genfscon sysfs /devices/platform/2a2d0000.ufs/host0/target0:0:0/0:0:0:1/wakeup u:object_r:sysfs_wakeup:s0
genfscon sysfs /devices/platform/2a2d0000.ufs/host0/target0:0:0/0:0:0:2/wakeup u:object_r:sysfs_wakeup:s0
genfscon sysfs /devices/platform/2a2d0000.ufs/host0/target0:0:0/0:0:0:3/wakeup u:object_r:sysfs_wakeup:s0
genfscon sysfs /devices/platform/2a220000.ethernet/net u:object_r:sysfs_net:s0
genfscon sysfs /devices/platform/2a230000.ethernet/net u:object_r:sysfs_net:s0
genfscon sysfs /devices/platform/23000000.usb u:object_r:sysfs_net:s0
genfscon sysfs /devices/platform/23400000.usb u:object_r:sysfs_net:s0

@ -0,0 +1,9 @@
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<wakelock-package>
<app package="com.google.android.gms"/>
<!--
<app package="com.google.android.youtube"/>
<app package="com.android.vending"/>
<app package="com.google.android.partnersetup"/>
-->
</wakelock-package>

@ -0,0 +1,43 @@
#
# wifi bt config
#
#
# BOARD_CONNECTIVITY_VENDOR:
# for broadcom, realteck wifi, bt
# Broadcom:
# rk90x,
# ap6xxx,
# ap6xxx_gps, #like ap6476
# ap6xxx_nfc, #like ap6441 & ap6493
#
# for mtk wifi, bt
# MediaTek:
# combo_mt66xx,
# mt5931_6622,
#
# for realtek wifi, bt & rda587x bt
# RealTek:
#
# rtl81xx, #only wifi
# rtl8723as, #like rtl8723as sdio
# rtl8723bs, #like rtl8723bs sdio
# rtl8723au, #like rtl8723au usb
# rtl8723bu, #like rtl8723bu usb
# rda587x, #like rtl8188+rda587x
# mt6622, #like rtl8188+mt6622
#
# for Espressif wifi & Beken bt
# Espressif:
# esp8089_bk3515,
# esp8089, #only wifi
# mt6622, #like esp8089+mt6622
# rda587x, #like esp8089+rda587x
#
# MediaTek_mt7601:
# mt7601 #only wifi
# rda587x, #like rtl8188+rda587x
# mt6622, #like rtl8188+mt6622
#
BOARD_CONNECTIVITY_VENDOR := Broadcom
BOARD_CONNECTIVITY_MODULE := ap6xxx
Loading…
Cancel
Save