mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-29 13:46:49 +00:00
Merge pull request #2646 from Kwiboo/rockchip-part6
Rockchip: update linux and some packages
This commit is contained in:
commit
b62904b717
@ -2,7 +2,7 @@
|
||||
# Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="mali-rockchip"
|
||||
PKG_VERSION="12daf22"
|
||||
PKG_VERSION="12daf22c405a4f8faf6cbc4d2e88b85b36dc61d9"
|
||||
PKG_SHA256="e6004e0f5a8a4aba098d301b3f964e2a9a961bb79f180d55ea6e9e73cd6eb874"
|
||||
PKG_ARCH="arm aarch64"
|
||||
PKG_LICENSE="nonfree"
|
||||
@ -86,11 +86,4 @@ makeinstall_target() {
|
||||
ln -sfv libmali.so $INSTALL/usr/lib/libGLESv2.so
|
||||
ln -sfv libmali.so $INSTALL/usr/lib/libGLESv2.so.2
|
||||
ln -sfv libmali.so $INSTALL/usr/lib/libgbm.so
|
||||
|
||||
mkdir -p $INSTALL/usr/lib/modules-load.d
|
||||
if [ "$MALI_FAMILY" = "t760" -o "$MALI_FAMILY" = "t860" ]; then
|
||||
echo "midgard_kbase" > $INSTALL/usr/lib/modules-load.d/mali.conf
|
||||
elif [ "$MALI_FAMILY" = "450" -o "$MALI_FAMILY" = "400" ]; then
|
||||
echo "mali" > $INSTALL/usr/lib/modules-load.d/mali.conf
|
||||
fi
|
||||
}
|
||||
|
@ -53,6 +53,7 @@ make_target() {
|
||||
sed -e 's/CONFIG_IR_NUVOTON=m/# CONFIG_IR_NUVOTON is not set/g' -i v4l/.config
|
||||
fi
|
||||
elif [ "$PROJECT" = Rockchip ]; then
|
||||
sed -e 's/CONFIG_DVB_CXD2820R=m/# CONFIG_DVB_CXD2820R is not set/g' -i v4l/.config
|
||||
sed -e 's/CONFIG_DVB_LGDT3306A=m/# CONFIG_DVB_LGDT3306A is not set/g' -i v4l/.config
|
||||
fi
|
||||
|
||||
|
@ -24,4 +24,7 @@ makeinstall_target() {
|
||||
cp -v $(get_build_dir rkbin)/firmware/bluetooth/BCM4354A2.hcd $INSTALL/$(get_full_firmware_dir)/brcm
|
||||
cp -v $(get_build_dir rkbin)/firmware/wifi/fw_bcm4356a2_ag.bin $INSTALL/$(get_full_firmware_dir)/brcm
|
||||
cp -v $(get_build_dir rkbin)/firmware/wifi/nvram_ap6356.txt $INSTALL/$(get_full_firmware_dir)/brcm
|
||||
|
||||
mkdir -p $INSTALL/$(get_full_firmware_dir)/rockchip
|
||||
cp -v $(get_build_dir rkbin)/firmware/rockchip/dptx.bin $INSTALL/$(get_full_firmware_dir)/rockchip
|
||||
}
|
||||
|
@ -35,8 +35,8 @@ case "$LINUX" in
|
||||
PKG_BUILD_PERF="no"
|
||||
;;
|
||||
rockchip-4.4)
|
||||
PKG_VERSION="eae92ae2b930999857df47c3057327c1c490454b"
|
||||
PKG_SHA256="da453ca6ecefc3719a1165bc7b08fe00fc2b50ab64f6289ef6f3670a9fc1ceca"
|
||||
PKG_VERSION="bca2464422eb8dd734f9218265dae256a82299be"
|
||||
PKG_SHA256="baaea04ca4a1b34e0bfce36bfcf74d65b06ae371e29fa2ef96d26327e55b690d"
|
||||
PKG_URL="https://github.com/rockchip-linux/kernel/archive/$PKG_VERSION.tar.gz"
|
||||
PKG_SOURCE_DIR="kernel-$PKG_VERSION"
|
||||
;;
|
||||
|
@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="rkmpp"
|
||||
PKG_VERSION="c8a41a6"
|
||||
PKG_SHA256="01b84eecde7cae98035ecce866b48f903f9deaa7e19b048ff9cb87edf6446659"
|
||||
PKG_VERSION="93824dc71392b9ac94ee8ca157d9f2d4739e8f8f"
|
||||
PKG_SHA256="14c49ceebd6c45dbb4c601bb4815de9a27d71d47f551c998ba9d3ff255572ad8"
|
||||
PKG_ARCH="arm aarch64"
|
||||
PKG_LICENSE="APL"
|
||||
PKG_SITE="https://github.com/rockchip-linux/mpp"
|
||||
@ -21,13 +21,5 @@ else
|
||||
fi
|
||||
|
||||
PKG_CMAKE_OPTS_TARGET="-DRKPLATFORM=ON \
|
||||
-DENABLE_AVSD=OFF \
|
||||
-DENABLE_H263D=OFF \
|
||||
-DENABLE_H264D=ON \
|
||||
-DENABLE_H265D=ON \
|
||||
-DENABLE_MPEG2D=ON \
|
||||
-DENABLE_MPEG4D=ON \
|
||||
-DENABLE_VP8D=ON \
|
||||
-DENABLE_VP9D=$PKG_ENABLE_VP9D \
|
||||
-DENABLE_JPEGD=OFF \
|
||||
-DHAVE_DRM=ON"
|
||||
|
@ -1,4 +1,4 @@
|
||||
From e9c9f2619bb2344f9947ccbbdcf15be9d0f55b1f Mon Sep 17 00:00:00 2001
|
||||
From d207d3da1107f642be937ad14d5b3cfff7780155 Mon Sep 17 00:00:00 2001
|
||||
From: Jakob Unterwurzacher <jakob.unterwurzacher@theobroma-systems.com>
|
||||
Date: Mon, 29 May 2017 14:08:43 +0200
|
||||
Subject: [PATCH] fix 32-bit mmap issue on 64-bit kernels
|
||||
@ -16,7 +16,7 @@ For details see https://github.com/rockchip-linux/kernel/issues/17
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/osal/allocator/allocator_drm.c b/osal/allocator/allocator_drm.c
|
||||
index 48735c90..a3a16a55 100644
|
||||
index a29bf3f5..58891b28 100644
|
||||
--- a/osal/allocator/allocator_drm.c
|
||||
+++ b/osal/allocator/allocator_drm.c
|
||||
@@ -15,6 +15,8 @@
|
||||
|
@ -0,0 +1,31 @@
|
||||
From e2a70002f9a0a37f5c6297f1cc5e6604e9f9d964 Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Karlman <jonas@kwiboo.se>
|
||||
Date: Sun, 24 Jun 2018 11:07:44 +0200
|
||||
Subject: [PATCH] disable unit tests by default
|
||||
|
||||
---
|
||||
test/CMakeLists.txt | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
|
||||
index 257a3efa..961086ae 100644
|
||||
--- a/test/CMakeLists.txt
|
||||
+++ b/test/CMakeLists.txt
|
||||
@@ -10,7 +10,7 @@ macro(add_mpp_test module)
|
||||
#message(STATUS "test_name : ${test_name}")
|
||||
#message(STATUS "test_tag : ${test_tag}")
|
||||
|
||||
- option(${test_tag} "Build mpp ${module} unit test" ON)
|
||||
+ option(${test_tag} "Build mpp ${module} unit test" OFF)
|
||||
if(${test_tag})
|
||||
add_executable(${test_name} ${test_name}.c mpp_event_trigger.c mpp_parse_cfg.c)
|
||||
target_link_libraries(${test_name} ${MPP_SHARED} utils)
|
||||
@@ -54,7 +54,7 @@ macro(add_legacy_test module)
|
||||
#message(STATUS "test_name : ${test_name}")
|
||||
#message(STATUS "test_tag : ${test_tag}")
|
||||
|
||||
- option(${test_tag} "Build legacy ${module} unit test" ON)
|
||||
+ option(${test_tag} "Build legacy ${module} unit test" OFF)
|
||||
if(${test_tag})
|
||||
add_executable(${test_name} ${test_name}.c)
|
||||
target_link_libraries(${test_name} ${VPU_SHARED} utils)
|
@ -1,25 +0,0 @@
|
||||
From 322efafd1f760c73accda1a7025b007f211916f7 Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Karlman <jonas@kwiboo.se>
|
||||
Date: Sat, 3 Mar 2018 10:10:01 +0100
|
||||
Subject: [PATCH] [mpp_dec]: sleep when there is nothing to parse
|
||||
|
||||
---
|
||||
mpp/codec/mpp_dec.cpp | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/mpp/codec/mpp_dec.cpp b/mpp/codec/mpp_dec.cpp
|
||||
index 424604e1..dded58c6 100644
|
||||
--- a/mpp/codec/mpp_dec.cpp
|
||||
+++ b/mpp/codec/mpp_dec.cpp
|
||||
@@ -600,8 +600,10 @@ void *mpp_dec_parser_thread(void *data)
|
||||
}
|
||||
parser->unlock();
|
||||
|
||||
- if (try_proc_dec_task(mpp, &task))
|
||||
+ if (try_proc_dec_task(mpp, &task)) {
|
||||
+ msleep(1);
|
||||
continue;
|
||||
+ }
|
||||
|
||||
}
|
||||
|
@ -0,0 +1,140 @@
|
||||
From ccd837fab6ab41ee3cb63b0e9ae1db824f96d4dc Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Karlman <jonas@kwiboo.se>
|
||||
Date: Tue, 7 Aug 2018 18:14:57 +0200
|
||||
Subject: [PATCH] [h264d]: revert vdpu fast mode code
|
||||
|
||||
---
|
||||
mpp/hal/rkdec/h264d/hal_h264d_vdpu1.c | 18 +++++-------------
|
||||
mpp/hal/rkdec/h264d/hal_h264d_vdpu2.c | 18 +++++-------------
|
||||
2 files changed, 10 insertions(+), 26 deletions(-)
|
||||
|
||||
diff --git a/mpp/hal/rkdec/h264d/hal_h264d_vdpu1.c b/mpp/hal/rkdec/h264d/hal_h264d_vdpu1.c
|
||||
index 1cddfc45..660e41f3 100644
|
||||
--- a/mpp/hal/rkdec/h264d/hal_h264d_vdpu1.c
|
||||
+++ b/mpp/hal/rkdec/h264d/hal_h264d_vdpu1.c
|
||||
@@ -416,7 +416,8 @@ static MPP_RET vdpu1_set_vlc_regs(H264dHalCtx_t *p_hal,
|
||||
//!< set poc to buffer
|
||||
{
|
||||
H264dVdpuRegCtx_t *reg_ctx = (H264dVdpuRegCtx_t *)p_hal->reg_ctx;
|
||||
- RK_U32 *pocBase = (RK_U32 *)mpp_buffer_get_ptr(reg_ctx->poc_buf);
|
||||
+ RK_U32 *pocBase = (RK_U32 *)((RK_U8 *)mpp_buffer_get_ptr(reg_ctx->cabac_buf)
|
||||
+ + VDPU_CABAC_TAB_SIZE);
|
||||
|
||||
//!< set reference reorder poc
|
||||
for (i = 0; i < 32; i++) {
|
||||
@@ -620,7 +621,8 @@ static MPP_RET vdpu1_set_asic_regs(H264dHalCtx_t *p_hal,
|
||||
H264dVdpuRegCtx_t *reg_ctx = (H264dVdpuRegCtx_t *)p_hal->reg_ctx;
|
||||
if (p_hal->pp->scaleing_list_enable_flag) {
|
||||
RK_U32 temp = 0;
|
||||
- RK_U32 *ptr = (RK_U32 *)mpp_buffer_get_ptr(reg_ctx->sclst_buf);
|
||||
+ RK_U32 *ptr = (RK_U32 *)((RK_U8 *)mpp_buffer_get_ptr(reg_ctx->cabac_buf)
|
||||
+ + VDPU_CABAC_TAB_SIZE + VDPU_POC_BUF_SIZE);
|
||||
|
||||
for (i = 0; i < 6; i++) {
|
||||
for (j = 0; j < 4; j++) {
|
||||
@@ -722,21 +724,15 @@ MPP_RET vdpu1_h264d_init(void *hal, MppHalCfg *cfg)
|
||||
H264dVdpuRegCtx_t *reg_ctx = (H264dVdpuRegCtx_t *)p_hal->reg_ctx;
|
||||
//!< malloc buffers
|
||||
FUN_CHECK(ret = mpp_buffer_get(p_hal->buf_group,
|
||||
- ®_ctx->cabac_buf, VDPU_CABAC_TAB_SIZE));
|
||||
+ ®_ctx->cabac_buf, VDPU_CABAC_TAB_SIZE + VDPU_POC_BUF_SIZE + VDPU_SCALING_LIST_SIZE));
|
||||
RK_U32 i = 0;
|
||||
RK_U32 loop = p_hal->fast_mode ? MPP_ARRAY_ELEMS(reg_ctx->reg_buf) : 1;
|
||||
for (i = 0; i < loop; i++) {
|
||||
reg_ctx->reg_buf[i].regs = mpp_calloc_size(void, sizeof(H264dVdpu1Regs_t));
|
||||
- FUN_CHECK(ret = mpp_buffer_get(p_hal->buf_group,
|
||||
- ®_ctx->reg_buf[i].poc, VDPU_POC_BUF_SIZE));
|
||||
- FUN_CHECK(ret = mpp_buffer_get(p_hal->buf_group,
|
||||
- ®_ctx->reg_buf[i].sclst, VDPU_SCALING_LIST_SIZE));
|
||||
}
|
||||
|
||||
if (!p_hal->fast_mode) {
|
||||
reg_ctx->regs = reg_ctx->reg_buf[0].regs;
|
||||
- reg_ctx->poc_buf = reg_ctx->reg_buf[0].poc;
|
||||
- reg_ctx->sclst_buf = reg_ctx->reg_buf[0].sclst;
|
||||
}
|
||||
//!< copy cabac table bytes
|
||||
FUN_CHECK(ret = mpp_buffer_write(reg_ctx->cabac_buf, 0,
|
||||
@@ -771,8 +767,6 @@ MPP_RET vdpu1_h264d_deinit(void *hal)
|
||||
RK_U32 loop = p_hal->fast_mode ? MPP_ARRAY_ELEMS(reg_ctx->reg_buf) : 1;
|
||||
for (i = 0; i < loop; i++) {
|
||||
MPP_FREE(reg_ctx->reg_buf[i].regs);
|
||||
- mpp_buffer_put(reg_ctx->reg_buf[i].poc);
|
||||
- mpp_buffer_put(reg_ctx->reg_buf[i].sclst);
|
||||
}
|
||||
mpp_buffer_put(reg_ctx->cabac_buf);
|
||||
MPP_FREE(p_hal->reg_ctx);
|
||||
@@ -809,8 +803,6 @@ MPP_RET vdpu1_h264d_gen_regs(void *hal, HalTaskInfo *task)
|
||||
for (i = 0; i < MPP_ARRAY_ELEMS(reg_ctx->reg_buf); i++) {
|
||||
if (!reg_ctx->reg_buf[i].valid) {
|
||||
task->dec.reg_index = i;
|
||||
- reg_ctx->poc_buf = reg_ctx->reg_buf[i].poc;
|
||||
- reg_ctx->sclst_buf = reg_ctx->reg_buf[i].sclst;
|
||||
reg_ctx->regs = reg_ctx->reg_buf[i].regs;
|
||||
reg_ctx->reg_buf[i].valid = 1;
|
||||
break;
|
||||
diff --git a/mpp/hal/rkdec/h264d/hal_h264d_vdpu2.c b/mpp/hal/rkdec/h264d/hal_h264d_vdpu2.c
|
||||
index fa55e635..9b22c1d9 100644
|
||||
--- a/mpp/hal/rkdec/h264d/hal_h264d_vdpu2.c
|
||||
+++ b/mpp/hal/rkdec/h264d/hal_h264d_vdpu2.c
|
||||
@@ -451,7 +451,8 @@ static MPP_RET set_vlc_regs(H264dHalCtx_t *p_hal, H264dVdpuRegs_t *p_regs)
|
||||
//!< set poc to buffer
|
||||
{
|
||||
H264dVdpuRegCtx_t *reg_ctx = (H264dVdpuRegCtx_t *)p_hal->reg_ctx;
|
||||
- RK_U32 *ptr = (RK_U32 *)mpp_buffer_get_ptr(reg_ctx->poc_buf);
|
||||
+ RK_U32 *ptr = (RK_U32 *)((RK_U8 *)mpp_buffer_get_ptr(reg_ctx->cabac_buf)
|
||||
+ + VDPU_CABAC_TAB_SIZE);
|
||||
//!< set reference reorder poc
|
||||
for (i = 0; i < 32; i++) {
|
||||
if (pp->RefFrameList[i / 2].bPicEntry != 0xff) {
|
||||
@@ -636,7 +637,8 @@ static MPP_RET set_asic_regs(H264dHalCtx_t *p_hal, H264dVdpuRegs_t *p_regs)
|
||||
H264dVdpuRegCtx_t *reg_ctx = (H264dVdpuRegCtx_t *)p_hal->reg_ctx;
|
||||
if (p_hal->pp->scaleing_list_enable_flag) {
|
||||
RK_U32 temp = 0;
|
||||
- RK_U32 *ptr = (RK_U32 *)mpp_buffer_get_ptr(reg_ctx->cabac_buf);
|
||||
+ RK_U32 *ptr = (RK_U32 *)((RK_U8 *)mpp_buffer_get_ptr(reg_ctx->cabac_buf)
|
||||
+ + VDPU_CABAC_TAB_SIZE + VDPU_POC_BUF_SIZE);
|
||||
|
||||
for (i = 0; i < 6; i++) {
|
||||
for (j = 0; j < 4; j++) {
|
||||
@@ -686,21 +688,15 @@ MPP_RET vdpu2_h264d_init(void *hal, MppHalCfg *cfg)
|
||||
H264dVdpuRegCtx_t *reg_ctx = (H264dVdpuRegCtx_t *)p_hal->reg_ctx;
|
||||
//!< malloc buffers
|
||||
FUN_CHECK(ret = mpp_buffer_get(p_hal->buf_group,
|
||||
- ®_ctx->cabac_buf, VDPU_CABAC_TAB_SIZE));
|
||||
+ ®_ctx->cabac_buf, VDPU_CABAC_TAB_SIZE + VDPU_POC_BUF_SIZE + VDPU_SCALING_LIST_SIZE));
|
||||
RK_U32 i = 0;
|
||||
RK_U32 loop = p_hal->fast_mode ? MPP_ARRAY_ELEMS(reg_ctx->reg_buf) : 1;
|
||||
for (i = 0; i < loop; i++) {
|
||||
reg_ctx->reg_buf[i].regs = mpp_calloc_size(void, sizeof(H264dVdpuRegs_t));
|
||||
- FUN_CHECK(ret = mpp_buffer_get(p_hal->buf_group,
|
||||
- ®_ctx->reg_buf[i].poc, VDPU_POC_BUF_SIZE));
|
||||
- FUN_CHECK(ret = mpp_buffer_get(p_hal->buf_group,
|
||||
- ®_ctx->reg_buf[i].sclst, VDPU_SCALING_LIST_SIZE));
|
||||
}
|
||||
|
||||
if (!p_hal->fast_mode) {
|
||||
reg_ctx->regs = reg_ctx->reg_buf[0].regs;
|
||||
- reg_ctx->poc_buf = reg_ctx->reg_buf[0].poc;
|
||||
- reg_ctx->sclst_buf = reg_ctx->reg_buf[0].sclst;
|
||||
}
|
||||
//!< copy cabac table bytes
|
||||
FUN_CHECK(ret = mpp_buffer_write(reg_ctx->cabac_buf, 0,
|
||||
@@ -735,8 +731,6 @@ MPP_RET vdpu2_h264d_deinit(void *hal)
|
||||
RK_U32 loop = p_hal->fast_mode ? MPP_ARRAY_ELEMS(reg_ctx->reg_buf) : 1;
|
||||
for (i = 0; i < loop; i++) {
|
||||
MPP_FREE(reg_ctx->reg_buf[i].regs);
|
||||
- mpp_buffer_put(reg_ctx->reg_buf[i].poc);
|
||||
- mpp_buffer_put(reg_ctx->reg_buf[i].sclst);
|
||||
}
|
||||
mpp_buffer_put(reg_ctx->cabac_buf);
|
||||
MPP_FREE(p_hal->reg_ctx);
|
||||
@@ -773,8 +767,6 @@ MPP_RET vdpu2_h264d_gen_regs(void *hal, HalTaskInfo *task)
|
||||
for (i = 0; i < MPP_ARRAY_ELEMS(reg_ctx->reg_buf); i++) {
|
||||
if (!reg_ctx->reg_buf[i].valid) {
|
||||
task->dec.reg_index = i;
|
||||
- reg_ctx->poc_buf = reg_ctx->reg_buf[i].poc;
|
||||
- reg_ctx->sclst_buf = reg_ctx->reg_buf[i].sclst;
|
||||
reg_ctx->regs = reg_ctx->reg_buf[i].regs;
|
||||
reg_ctx->reg_buf[i].valid = 1;
|
||||
break;
|
@ -1,25 +0,0 @@
|
||||
diff --git a/mpp/hal/rkdec/h265d/hal_h265d_reg.h b/mpp/hal/rkdec/h265d/hal_h265d_reg.h
|
||||
index 1bccb02..432b8db 100644
|
||||
--- a/mpp/hal/rkdec/h265d/hal_h265d_reg.h
|
||||
+++ b/mpp/hal/rkdec/h265d/hal_h265d_reg.h
|
||||
@@ -50,7 +50,8 @@ typedef struct {
|
||||
struct swreg_int {
|
||||
RK_U32 sw_dec_e : 1 ;
|
||||
RK_U32 sw_dec_clkgate_e : 1 ;
|
||||
- RK_U32 reserve0 : 2 ;
|
||||
+ RK_U32 reserve0 : 1 ;
|
||||
+ RK_U32 sw_timeout_mode : 1 ;
|
||||
RK_U32 sw_dec_irq_dis : 1 ;
|
||||
RK_U32 sw_dec_timeout_e : 1 ;
|
||||
RK_U32 sw_buf_empty_en : 1 ;
|
||||
@@ -61,8 +62,9 @@ typedef struct {
|
||||
RK_U32 sw_dec_rdy_sta : 1 ;
|
||||
RK_U32 sw_dec_bus_sta : 1 ;
|
||||
RK_U32 sw_dec_error_sta : 1 ;
|
||||
+ RK_U32 sw_dec_timeout_sta : 1 ;
|
||||
RK_U32 sw_dec_empty_sta : 1 ;
|
||||
- RK_U32 reserve4 : 4 ;
|
||||
+ RK_U32 reserve3 : 3 ;
|
||||
RK_U32 sw_softrst_en_p : 1 ;
|
||||
RK_U32 sw_force_softreset_valid: 1 ;
|
||||
RK_U32 sw_softreset_rdy : 1 ;
|
@ -2,8 +2,9 @@
|
||||
# Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="rkbin"
|
||||
PKG_VERSION="f64ded6"
|
||||
PKG_SHA256="7b858ac964058da83cd96314184d2c5f834a9b2cc6b805be424a661fd9836b54"
|
||||
# Version is: Kwiboo/tag:libreelec-b3a2661
|
||||
PKG_VERSION="b3a2661830dd7e1800b755373b02ac892863ef9b"
|
||||
PKG_SHA256="e69637c354afb008373eea5d4fe58dc17161e3a6091cefc0a76be247a595ce8b"
|
||||
PKG_ARCH="arm aarch64"
|
||||
PKG_LICENSE="nonfree"
|
||||
PKG_SITE="https://github.com/rockchip-linux/rkbin"
|
||||
|
@ -1,818 +0,0 @@
|
||||
From 10b2468096e88f0c68ec87be8bd26a6f3af53050 Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Karlman <jonas@kwiboo.se>
|
||||
Date: Mon, 25 Dec 2017 15:33:57 +0100
|
||||
Subject: [PATCH] rk3328: add ddr v1.08 and miniloader v2.44
|
||||
|
||||
---
|
||||
rk33/rk3328_ddr_786MHz_v1.08.bin | Bin 0 -> 23684 bytes
|
||||
rk33/rk3328_miniloader_v2.44.bin | Bin 0 -> 60164 bytes
|
||||
2 files changed, 0 insertions(+), 0 deletions(-)
|
||||
create mode 100644 rk33/rk3328_ddr_786MHz_v1.08.bin
|
||||
create mode 100644 rk33/rk3328_miniloader_v2.44.bin
|
||||
|
||||
diff --git a/rk33/rk3328_ddr_786MHz_v1.08.bin b/rk33/rk3328_ddr_786MHz_v1.08.bin
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..0b0ffa2ab6bf1553118baac2faf9e3a903664a9e
|
||||
GIT binary patch
|
||||
literal 23684
|
||||
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
|
||||
Vjt*$Hfn&wxadiFeaO7{1|36XHr^)~T
|
||||
|
||||
literal 0
|
||||
HcmV?d00001
|
||||
|
||||
diff --git a/rk33/rk3328_miniloader_v2.44.bin b/rk33/rk3328_miniloader_v2.44.bin
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..9663aa598733db25cfc1cfc0b1555f0f8269bfb5
|
||||
GIT binary patch
|
||||
literal 60164
|
||||
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
|
||||
CP?<Ua
|
||||
|
||||
literal 0
|
||||
HcmV?d00001
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -18,8 +18,8 @@ PKG_NEED_UNPACK="$PROJECT_DIR/$PROJECT/bootloader"
|
||||
|
||||
case "$PROJECT" in
|
||||
Rockchip)
|
||||
PKG_VERSION="5ecf0ee"
|
||||
PKG_SHA256="fba1d26583d446a5bbb5713fe37848e05b546d125384c2c2d2883414d61b7cad"
|
||||
PKG_VERSION="ac5a8f08e811581376e731c898c21e4f79177ec2"
|
||||
PKG_SHA256="e3ca0d99fef24649c75c4fe7cb0c6de069f98424a7dbf9d397f65b79b8749866"
|
||||
PKG_URL="https://github.com/rockchip-linux/u-boot/archive/$PKG_VERSION.tar.gz"
|
||||
PKG_PATCH_DIRS="rockchip"
|
||||
PKG_DEPENDS_TARGET+=" rkbin"
|
||||
|
@ -1,65 +1,37 @@
|
||||
From 85f5dd7511d2eaea04a6ba53dc60d1879060568b Mon Sep 17 00:00:00 2001
|
||||
From de094e01bb6876d7025e8c1b665828f6764e2c70 Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Karlman <jonas@kwiboo.se>
|
||||
Date: Sat, 2 Dec 2017 11:47:07 +0100
|
||||
Subject: [PATCH] dont build libfdt
|
||||
|
||||
---
|
||||
Makefile | 2 +-
|
||||
scripts/Makefile.spl | 4 ++--
|
||||
tools/Makefile | 4 ----
|
||||
scripts/Makefile.spl | 2 +-
|
||||
scripts/dtc/Makefile | 2 +-
|
||||
tools/dtoc/fdt.py | 2 +-
|
||||
4 files changed, 4 insertions(+), 8 deletions(-)
|
||||
3 files changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/Makefile b/Makefile
|
||||
index 8086f3c93e..4796b488ae 100644
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -1379,7 +1379,7 @@ $(timestamp_h): $(srctree)/Makefile FORCE
|
||||
$(call filechk,timestamp.h)
|
||||
|
||||
checkbinman: tools
|
||||
- @if ! ( echo 'import libfdt' | ( PYTHONPATH=tools $(PYTHON) )); then \
|
||||
+ @if ! ( echo 'from pylibfdt import libfdt' | ( python )); then \
|
||||
echo >&2; \
|
||||
echo >&2 '*** binman needs the Python libfdt library.'; \
|
||||
echo >&2 '*** Either install it on your system, or try:'; \
|
||||
diff --git a/scripts/Makefile.spl b/scripts/Makefile.spl
|
||||
index b86ea76bab..ea54f9098c 100644
|
||||
index e2f0741db6..9264103366 100644
|
||||
--- a/scripts/Makefile.spl
|
||||
+++ b/scripts/Makefile.spl
|
||||
@@ -246,7 +246,7 @@ quiet_cmd_fdtgrep = FDTGREP $@
|
||||
$(obj)/$(SPL_BIN).dtb: dts/dt.dtb $(objtree)/tools/fdtgrep FORCE
|
||||
$(call if_changed,fdtgrep)
|
||||
@@ -249,7 +249,7 @@ $(obj)/$(SPL_BIN)-pad.bin: $(obj)/$(SPL_BIN)
|
||||
$(obj)/$(SPL_BIN).dtb: dts/dt-spl.dtb FORCE
|
||||
$(call if_changed,copy)
|
||||
|
||||
-pythonpath = PYTHONPATH=tools
|
||||
-pythonpath = PYTHONPATH=scripts/dtc/pylibfdt
|
||||
+pythonpath = python
|
||||
|
||||
quiet_cmd_dtocc = DTOC C $@
|
||||
cmd_dtocc = $(pythonpath) $(srctree)/tools/dtoc/dtoc -d $(obj)/$(SPL_BIN).dtb -o $@ platdata
|
||||
@@ -370,7 +370,7 @@ ifneq ($(cmd_files),)
|
||||
endif
|
||||
diff --git a/scripts/dtc/Makefile b/scripts/dtc/Makefile
|
||||
index 90ef2db85c..077acd50d9 100644
|
||||
--- a/scripts/dtc/Makefile
|
||||
+++ b/scripts/dtc/Makefile
|
||||
@@ -31,4 +31,4 @@ $(obj)/dtc-lexer.lex.o: $(obj)/dtc-parser.tab.h
|
||||
clean-files := dtc-lexer.lex.c dtc-parser.tab.c dtc-parser.tab.h
|
||||
|
||||
checkdtoc: tools
|
||||
- @if ! ( echo 'import libfdt' | ( PYTHONPATH=tools $(PYTHON) )); then \
|
||||
+ @if ! ( echo 'from pylibfdt import libfdt' | ( python )); then \
|
||||
echo '*** dtoc needs the Python libfdt library. Either '; \
|
||||
echo '*** install it on your system, or try:'; \
|
||||
echo '***'; \
|
||||
diff --git a/tools/Makefile b/tools/Makefile
|
||||
index 8e1009bf6c..459c71ef1f 100644
|
||||
--- a/tools/Makefile
|
||||
+++ b/tools/Makefile
|
||||
@@ -232,10 +232,6 @@ clean-dirs := lib common
|
||||
|
||||
always := $(hostprogs-y)
|
||||
|
||||
-# Build a libfdt Python module if swig is available
|
||||
-# Use 'sudo apt-get install swig libpython-dev' to enable this
|
||||
-always += $(if $(shell which swig 2> /dev/null),_libfdt.so)
|
||||
-
|
||||
# Generated LCD/video logo
|
||||
LOGO_H = $(objtree)/include/bmp_logo.h
|
||||
LOGO_DATA_H = $(objtree)/include/bmp_logo_data.h
|
||||
# Added for U-Boot
|
||||
-subdir-$(CONFIG_PYLIBFDT) += pylibfdt
|
||||
+#subdir-$(CONFIG_PYLIBFDT) += pylibfdt
|
||||
diff --git a/tools/dtoc/fdt.py b/tools/dtoc/fdt.py
|
||||
index dbc338653b..04f3c5935c 100644
|
||||
--- a/tools/dtoc/fdt.py
|
||||
|
@ -0,0 +1,35 @@
|
||||
From dfdfa7fb1a50c21a784a67e5f99d8714ca853c07 Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Karlman <jonas@kwiboo.se>
|
||||
Date: Mon, 20 Aug 2018 22:55:34 +0200
|
||||
Subject: [PATCH] rockchip: board: save cpuid to env
|
||||
|
||||
---
|
||||
arch/arm/mach-rockchip/board.c | 8 ++++++++
|
||||
1 file changed, 8 insertions(+)
|
||||
|
||||
diff --git a/arch/arm/mach-rockchip/board.c b/arch/arm/mach-rockchip/board.c
|
||||
index 233f0b6f9a..6c2021e32a 100644
|
||||
--- a/arch/arm/mach-rockchip/board.c
|
||||
+++ b/arch/arm/mach-rockchip/board.c
|
||||
@@ -44,6 +44,7 @@ DECLARE_GLOBAL_DATA_PTR;
|
||||
static int rockchip_set_serialno(void)
|
||||
{
|
||||
char serialno_str[VENDOR_SN_MAX];
|
||||
+ char cpuid_str[CPUID_LEN * 2 + 1];
|
||||
int ret = 0, i;
|
||||
u8 cpuid[CPUID_LEN] = {0};
|
||||
u8 low[CPUID_LEN / 2], high[CPUID_LEN / 2];
|
||||
@@ -89,6 +90,13 @@ static int rockchip_set_serialno(void)
|
||||
snprintf(serialno_str, sizeof(serialno_str), "%llx", serialno);
|
||||
|
||||
env_set("serial#", serialno_str);
|
||||
+
|
||||
+ memset(cpuid_str, 0, sizeof(cpuid_str));
|
||||
+ for (i = 0; i < CPUID_LEN; i++) {
|
||||
+ sprintf(&cpuid_str[i * 2], "%02x", cpuid[i]);
|
||||
+ }
|
||||
+
|
||||
+ env_set("cpuid#", cpuid_str);
|
||||
#ifdef CONFIG_ROCKCHIP_VENDOR_PARTITION
|
||||
}
|
||||
#endif
|
@ -1,25 +0,0 @@
|
||||
From 39dfedae58057500912a6f933fced3edb9376b3b Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Karlman <jonas@kwiboo.se>
|
||||
Date: Sun, 22 Oct 2017 12:48:24 +0200
|
||||
Subject: [PATCH] rockchip: tinker: enable rockchip video driver
|
||||
|
||||
---
|
||||
configs/tinker-rk3288_defconfig | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
diff --git a/configs/tinker-rk3288_defconfig b/configs/tinker-rk3288_defconfig
|
||||
index 00e2d81954..62cae4f21e 100644
|
||||
--- a/configs/tinker-rk3288_defconfig
|
||||
+++ b/configs/tinker-rk3288_defconfig
|
||||
@@ -80,6 +80,11 @@ CONFIG_G_DNL_PRODUCT_NUM=0x320a
|
||||
CONFIG_USB_HOST_ETHER=y
|
||||
CONFIG_USB_ETHER_ASIX=y
|
||||
CONFIG_USB_ETHER_SMSC95XX=y
|
||||
+CONFIG_DM_VIDEO=y
|
||||
+CONFIG_DISPLAY=y
|
||||
+CONFIG_VIDEO_ROCKCHIP=y
|
||||
+CONFIG_DISPLAY_ROCKCHIP_HDMI=y
|
||||
+CONFIG_CONSOLE_SCROLL_LINES=10
|
||||
CONFIG_USE_TINY_PRINTF=y
|
||||
CONFIG_CMD_DHRYSTONE=y
|
||||
CONFIG_ERRNO_STR=y
|
@ -1,126 +0,0 @@
|
||||
From dd6e1ab93a92e133c41a8665f6d8aca9450bdca8 Mon Sep 17 00:00:00 2001
|
||||
From: Kamil Trzcinski <ayufan@ayufan.eu>
|
||||
Date: Sun, 20 Aug 2017 01:52:34 +0200
|
||||
Subject: [PATCH] Add rk3328-efuse support
|
||||
|
||||
---
|
||||
arch/arm/dts/rk3328.dtsi | 25 ++++++++++++++++++++
|
||||
drivers/misc/rockchip-efuse.c | 55 +++++++++++++++++++++++++++++++++++++++++++
|
||||
2 files changed, 80 insertions(+)
|
||||
|
||||
diff --git a/arch/arm/dts/rk3328.dtsi b/arch/arm/dts/rk3328.dtsi
|
||||
index 2a4c4929d7..611a0d4b21 100644
|
||||
--- a/arch/arm/dts/rk3328.dtsi
|
||||
+++ b/arch/arm/dts/rk3328.dtsi
|
||||
@@ -342,6 +342,31 @@
|
||||
};
|
||||
};
|
||||
|
||||
+ efuse: efuse@ff260000 {
|
||||
+ compatible = "rockchip,rk3328-efuse";
|
||||
+ reg = <0x0 0xff260000 0x0 0x50>;
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <1>;
|
||||
+ clocks = <&cru SCLK_EFUSE>;
|
||||
+ clock-names = "pclk_efuse";
|
||||
+ rockchip,efuse-size = <0x20>;
|
||||
+
|
||||
+ /* Data cells */
|
||||
+ efuse_id: id@7 {
|
||||
+ reg = <0x07 0x10>;
|
||||
+ };
|
||||
+ cpu_leakage: cpu-leakage@17 {
|
||||
+ reg = <0x17 0x1>;
|
||||
+ };
|
||||
+ logic_leakage: logic-leakage@19 {
|
||||
+ reg = <0x19 0x1>;
|
||||
+ };
|
||||
+ efuse_cpu_version: cpu-version@1a {
|
||||
+ reg = <0x1a 0x1>;
|
||||
+ bits = <3 3>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
saradc: saradc@ff280000 {
|
||||
compatible = "rockchip,rk3328-saradc", "rockchip,saradc";
|
||||
reg = <0x0 0xff280000 0x0 0x100>;
|
||||
diff --git a/drivers/misc/rockchip-efuse.c b/drivers/misc/rockchip-efuse.c
|
||||
index b4ad19cfe8..81b78f9b2c 100644
|
||||
--- a/drivers/misc/rockchip-efuse.c
|
||||
+++ b/drivers/misc/rockchip-efuse.c
|
||||
@@ -16,6 +16,14 @@
|
||||
#include <linux/delay.h>
|
||||
#include <misc.h>
|
||||
|
||||
+#define RK3328_INT_CON 0x0014
|
||||
+#define RK3328_INT_STATUS 0x0018
|
||||
+#define RK3328_DOUT 0x0020
|
||||
+#define RK3328_AUTO_CTRL 0x0024
|
||||
+#define RK3328_INT_FINISH BIT(0)
|
||||
+#define RK3328_AUTO_ENB BIT(0)
|
||||
+#define RK3328_AUTO_RD BIT(1)
|
||||
+
|
||||
#define RK3399_A_SHIFT 16
|
||||
#define RK3399_A_MASK 0x3ff
|
||||
#define RK3399_NFUSES 32
|
||||
@@ -95,6 +103,49 @@ U_BOOT_CMD(
|
||||
);
|
||||
#endif
|
||||
|
||||
+static int rockchip_rk3328_efuse_read(struct udevice *dev, int offset,
|
||||
+ void *buf, int size)
|
||||
+{
|
||||
+ struct rockchip_efuse_platdata *plat = dev_get_platdata(dev);
|
||||
+
|
||||
+ unsigned int addr_start, addr_end, addr_offset;
|
||||
+ u32 out_value, status;
|
||||
+ u8 bytes[RK3399_NFUSES * RK3399_BYTES_PER_FUSE];
|
||||
+ int i = 0;
|
||||
+ u32 addr;
|
||||
+
|
||||
+ /* 128 Byte efuse, 96 Byte for secure, 32 Byte for non-secure */
|
||||
+ offset += 96;
|
||||
+
|
||||
+ addr_start = offset / RK3399_BYTES_PER_FUSE;
|
||||
+ addr_offset = offset % RK3399_BYTES_PER_FUSE;
|
||||
+ addr_end = DIV_ROUND_UP(offset + size, RK3399_BYTES_PER_FUSE);
|
||||
+
|
||||
+ /* cap to the size of the efuse block */
|
||||
+ if (addr_end > RK3399_NFUSES)
|
||||
+ addr_end = RK3399_NFUSES;
|
||||
+
|
||||
+ for (addr = addr_start; addr < addr_end; addr++) {
|
||||
+ writel(RK3328_AUTO_RD | RK3328_AUTO_ENB |
|
||||
+ ((addr & RK3399_A_MASK) << RK3399_A_SHIFT),
|
||||
+ plat->base + RK3328_AUTO_CTRL);
|
||||
+ udelay(10);
|
||||
+ status = readl(plat->base + RK3328_INT_STATUS);
|
||||
+ if (!(status & RK3328_INT_FINISH)) {
|
||||
+ return -EIO;
|
||||
+ }
|
||||
+ out_value = readl(plat->base + RK3328_DOUT);
|
||||
+ writel(RK3328_INT_FINISH, plat->base + RK3328_INT_STATUS);
|
||||
+
|
||||
+ memcpy(&bytes[i], &out_value, RK3399_BYTES_PER_FUSE);
|
||||
+ i += RK3399_BYTES_PER_FUSE;
|
||||
+ }
|
||||
+
|
||||
+ memcpy(buf, bytes + addr_offset, size);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
static int rockchip_rk3399_efuse_read(struct udevice *dev, int offset,
|
||||
void *buf, int size)
|
||||
{
|
||||
@@ -223,6 +274,10 @@ static const struct udevice_id rockchip_efuse_ids[] = {
|
||||
.compatible = "rockchip,rk322x-efuse",
|
||||
.data = (ulong)&rockchip_rk3288_efuse_read,
|
||||
},
|
||||
+ {
|
||||
+ .compatible = "rockchip,rk3328-efuse",
|
||||
+ .data = (ulong)rockchip_rk3328_efuse_read,
|
||||
+ },
|
||||
{
|
||||
.compatible = "rockchip,rk3399-efuse",
|
||||
.data = (ulong)&rockchip_rk3399_efuse_read,
|
@ -0,0 +1,48 @@
|
||||
From e44f2ddac6099a0947c4182a0f4296d8df2be4a8 Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Karlman <jonas@kwiboo.se>
|
||||
Date: Sat, 18 Aug 2018 17:26:35 +0200
|
||||
Subject: [PATCH] rockchip: rk3328: add efuse support
|
||||
|
||||
---
|
||||
arch/arm/dts/rk3328.dtsi | 14 ++++++++++++++
|
||||
configs/evb-rk3328_defconfig | 2 ++
|
||||
2 files changed, 16 insertions(+)
|
||||
|
||||
diff --git a/arch/arm/dts/rk3328.dtsi b/arch/arm/dts/rk3328.dtsi
|
||||
index 94d39b1b35..35db0ccf4d 100644
|
||||
--- a/arch/arm/dts/rk3328.dtsi
|
||||
+++ b/arch/arm/dts/rk3328.dtsi
|
||||
@@ -341,6 +341,20 @@
|
||||
};
|
||||
};
|
||||
|
||||
+ efuse: efuse@ff260000 {
|
||||
+ compatible = "rockchip,rk3328-efuse";
|
||||
+ reg = <0x0 0xff260000 0x0 0x80>;
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <1>;
|
||||
+ clocks = <&cru SCLK_EFUSE>;
|
||||
+ clock-names = "pclk_efuse";
|
||||
+
|
||||
+ /* Data cells */
|
||||
+ cpu_id: cpu-id@7 {
|
||||
+ reg = <0x07 0x10>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
saradc: saradc@ff280000 {
|
||||
compatible = "rockchip,rk3328-saradc", "rockchip,saradc";
|
||||
reg = <0x0 0xff280000 0x0 0x100>;
|
||||
diff --git a/configs/evb-rk3328_defconfig b/configs/evb-rk3328_defconfig
|
||||
index 79535c760d..0897a28e1d 100644
|
||||
--- a/configs/evb-rk3328_defconfig
|
||||
+++ b/configs/evb-rk3328_defconfig
|
||||
@@ -52,6 +52,8 @@ CONFIG_SPL_CLK=y
|
||||
CONFIG_ROCKCHIP_GPIO=y
|
||||
CONFIG_SYS_I2C_ROCKCHIP=y
|
||||
CONFIG_DM_KEY=y
|
||||
+CONFIG_MISC=y
|
||||
+CONFIG_ROCKCHIP_EFUSE=y
|
||||
CONFIG_MMC_DW=y
|
||||
CONFIG_MMC_DW_ROCKCHIP=y
|
||||
CONFIG_PHY=y
|
@ -1,184 +0,0 @@
|
||||
From 77349a847b0649e8ead1dba3a297607b2a674aaa Mon Sep 17 00:00:00 2001
|
||||
From: Kamil Trzcinski <ayufan@ayufan.eu>
|
||||
Date: Sat, 19 Aug 2017 20:38:50 +0200
|
||||
Subject: [PATCH] Get serial and ethaddr from efuse
|
||||
|
||||
---
|
||||
board/rockchip/evb_rk3328/evb-rk3328.c | 124 +++++++++++++++++++++++++++++++++
|
||||
configs/evb-rk3328_defconfig | 2 +
|
||||
include/configs/rk3328_common.h | 2 +
|
||||
3 files changed, 128 insertions(+)
|
||||
|
||||
diff --git a/board/rockchip/evb_rk3328/evb-rk3328.c b/board/rockchip/evb_rk3328/evb-rk3328.c
|
||||
index d6fc57cd8e..1d0f7e9c95 100644
|
||||
--- a/board/rockchip/evb_rk3328/evb-rk3328.c
|
||||
+++ b/board/rockchip/evb_rk3328/evb-rk3328.c
|
||||
@@ -7,14 +7,20 @@
|
||||
#include <common.h>
|
||||
#include <asm/arch/hardware.h>
|
||||
#include <asm/arch/grf_rk3328.h>
|
||||
+#include <dm.h>
|
||||
#include <asm/armv8/mmu.h>
|
||||
#include <asm/io.h>
|
||||
#include <dwc3-uboot.h>
|
||||
#include <power/regulator.h>
|
||||
#include <usb.h>
|
||||
+#include <misc.h>
|
||||
+#include <u-boot/sha256.h>
|
||||
|
||||
DECLARE_GLOBAL_DATA_PTR;
|
||||
|
||||
+#define RK3328_CPUID_OFF 0x7
|
||||
+#define RK3328_CPUID_LEN 0x10
|
||||
+
|
||||
int board_init(void)
|
||||
{
|
||||
int ret;
|
||||
@@ -80,3 +86,121 @@ int board_usb_cleanup(int index, enum usb_init_type init)
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
+
|
||||
+static void setup_macaddr(void)
|
||||
+{
|
||||
+#if CONFIG_IS_ENABLED(CMD_NET)
|
||||
+ int ret;
|
||||
+ const char *cpuid = env_get("cpuid#");
|
||||
+ u8 hash[SHA256_SUM_LEN];
|
||||
+ int size = sizeof(hash);
|
||||
+ u8 mac_addr[6];
|
||||
+
|
||||
+ /* Only generate a MAC address, if none is set in the environment */
|
||||
+ if (env_get("ethaddr"))
|
||||
+ return;
|
||||
+
|
||||
+ if (!cpuid) {
|
||||
+ debug("%s: could not retrieve 'cpuid#'\n", __func__);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ ret = hash_block("sha256", (void *)cpuid, strlen(cpuid), hash, &size);
|
||||
+ if (ret) {
|
||||
+ debug("%s: failed to calculate SHA256\n", __func__);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ /* Copy 6 bytes of the hash to base the MAC address on */
|
||||
+ memcpy(mac_addr, hash, 6);
|
||||
+
|
||||
+ /* Make this a valid MAC address and set it */
|
||||
+ mac_addr[0] &= 0xfe; /* clear multicast bit */
|
||||
+ mac_addr[0] |= 0x02; /* set local assignment bit (IEEE802) */
|
||||
+ eth_env_set_enetaddr("ethaddr", mac_addr);
|
||||
+
|
||||
+ /* Make a valid MAC address for eth1 */
|
||||
+ mac_addr[5] += 0x20;
|
||||
+ mac_addr[5] &= 0xff;
|
||||
+ eth_env_set_enetaddr("eth1addr", mac_addr);
|
||||
+#endif
|
||||
+
|
||||
+ return;
|
||||
+}
|
||||
+
|
||||
+static void setup_serial(void)
|
||||
+{
|
||||
+#if CONFIG_IS_ENABLED(ROCKCHIP_EFUSE)
|
||||
+ struct udevice *dev;
|
||||
+ int ret, i;
|
||||
+ u8 cpuid[RK3328_CPUID_LEN];
|
||||
+ u8 low[RK3328_CPUID_LEN/2], high[RK3328_CPUID_LEN/2];
|
||||
+ char cpuid_str[RK3328_CPUID_LEN * 2 + 1];
|
||||
+ u64 serialno;
|
||||
+ char serialno_str[16];
|
||||
+
|
||||
+ /* retrieve the device */
|
||||
+ ret = uclass_get_device_by_driver(UCLASS_MISC,
|
||||
+ DM_GET_DRIVER(rockchip_efuse), &dev);
|
||||
+ if (ret) {
|
||||
+ debug("%s: could not find efuse device\n", __func__);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ /* read the cpu_id range from the efuses */
|
||||
+ ret = misc_read(dev, RK3328_CPUID_OFF, &cpuid, sizeof(cpuid));
|
||||
+ if (ret) {
|
||||
+ debug("%s: reading cpuid from the efuses failed\n",
|
||||
+ __func__);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ memset(cpuid_str, 0, sizeof(cpuid_str));
|
||||
+ for (i = 0; i < 16; i++)
|
||||
+ sprintf(&cpuid_str[i * 2], "%02x", cpuid[i]);
|
||||
+
|
||||
+ debug("cpuid: %s\n", cpuid_str);
|
||||
+
|
||||
+ /*
|
||||
+ * Mix the cpuid bytes using the same rules as in
|
||||
+ * ${linux}/drivers/soc/rockchip/rockchip-cpuinfo.c
|
||||
+ */
|
||||
+ for (i = 0; i < 8; i++) {
|
||||
+ low[i] = cpuid[1 + (i << 1)];
|
||||
+ high[i] = cpuid[i << 1];
|
||||
+ }
|
||||
+
|
||||
+ serialno = crc32_no_comp(0, low, 8);
|
||||
+ serialno |= (u64)crc32_no_comp(serialno, high, 8) << 32;
|
||||
+ snprintf(serialno_str, sizeof(serialno_str), "%llx", serialno);
|
||||
+
|
||||
+ env_set("cpuid#", cpuid_str);
|
||||
+ env_set("serial#", serialno_str);
|
||||
+#endif
|
||||
+
|
||||
+ return;
|
||||
+}
|
||||
+
|
||||
+int misc_init_r(void)
|
||||
+{
|
||||
+ setup_serial();
|
||||
+ setup_macaddr();
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+#ifdef CONFIG_SERIAL_TAG
|
||||
+void get_board_serial(struct tag_serialnr *serialnr)
|
||||
+{
|
||||
+ char *serial_string;
|
||||
+ u64 serial = 0;
|
||||
+
|
||||
+ serial_string = env_get("serial#");
|
||||
+
|
||||
+ if (serial_string)
|
||||
+ serial = simple_strtoull(serial_string, NULL, 16);
|
||||
+
|
||||
+ serialnr->high = (u32)(serial >> 32);
|
||||
+ serialnr->low = (u32)(serial & 0xffffffff);
|
||||
+}
|
||||
+#endif
|
||||
diff --git a/configs/evb-rk3328_defconfig b/configs/evb-rk3328_defconfig
|
||||
index d4a00718c5..9107c020b7 100644
|
||||
--- a/configs/evb-rk3328_defconfig
|
||||
+++ b/configs/evb-rk3328_defconfig
|
||||
@@ -55,6 +55,8 @@ CONFIG_SPL_CLK=y
|
||||
CONFIG_ROCKCHIP_GPIO=y
|
||||
CONFIG_SYS_I2C_ROCKCHIP=y
|
||||
CONFIG_DM_KEY=y
|
||||
+CONFIG_MISC=y
|
||||
+CONFIG_ROCKCHIP_EFUSE=y
|
||||
CONFIG_MMC_DW=y
|
||||
CONFIG_MMC_DW_ROCKCHIP=y
|
||||
CONFIG_PHY=y
|
||||
diff --git a/include/configs/rk3328_common.h b/include/configs/rk3328_common.h
|
||||
index b7971782b5..a2af5a7989 100644
|
||||
--- a/include/configs/rk3328_common.h
|
||||
+++ b/include/configs/rk3328_common.h
|
||||
@@ -9,6 +9,8 @@
|
||||
|
||||
#include "rockchip-common.h"
|
||||
|
||||
+#define CONFIG_MISC_INIT_R
|
||||
+
|
||||
#define CONFIG_SYS_MALLOC_LEN (32 << 20)
|
||||
#define CONFIG_SYS_CBSIZE 1024
|
||||
#define CONFIG_SKIP_LOWLEVEL_INIT
|
@ -0,0 +1,66 @@
|
||||
From c4068865306726939489b961fd8e04f9a2a7b1ce Mon Sep 17 00:00:00 2001
|
||||
From: Kamil Trzcinski <ayufan@ayufan.eu>
|
||||
Date: Sat, 19 Aug 2017 20:38:50 +0200
|
||||
Subject: [PATCH] rk3328-evb: get ethaddr from efuse
|
||||
|
||||
---
|
||||
board/rockchip/evb_rk3328/evb-rk3328.c | 49 ++++++++++++++++++++++++++
|
||||
1 file changed, 49 insertions(+)
|
||||
|
||||
diff --git a/board/rockchip/evb_rk3328/evb-rk3328.c b/board/rockchip/evb_rk3328/evb-rk3328.c
|
||||
index c8e7a3ad64..8829f50327 100644
|
||||
--- a/board/rockchip/evb_rk3328/evb-rk3328.c
|
||||
+++ b/board/rockchip/evb_rk3328/evb-rk3328.c
|
||||
@@ -3,3 +3,52 @@
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
+
|
||||
+#include <common.h>
|
||||
+#include <u-boot/sha256.h>
|
||||
+
|
||||
+static void setup_macaddr(void)
|
||||
+{
|
||||
+#if CONFIG_IS_ENABLED(CMD_NET)
|
||||
+ int ret;
|
||||
+ const char *cpuid = env_get("cpuid#");
|
||||
+ u8 hash[SHA256_SUM_LEN];
|
||||
+ int size = sizeof(hash);
|
||||
+ u8 mac_addr[6];
|
||||
+
|
||||
+ /* Only generate a MAC address, if none is set in the environment */
|
||||
+ if (env_get("ethaddr"))
|
||||
+ return;
|
||||
+
|
||||
+ if (!cpuid) {
|
||||
+ debug("%s: could not retrieve 'cpuid#'\n", __func__);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ ret = hash_block("sha256", (void *)cpuid, strlen(cpuid), hash, &size);
|
||||
+ if (ret) {
|
||||
+ debug("%s: failed to calculate SHA256\n", __func__);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ /* Copy 6 bytes of the hash to base the MAC address on */
|
||||
+ memcpy(mac_addr, hash, 6);
|
||||
+
|
||||
+ /* Make this a valid MAC address and set it */
|
||||
+ mac_addr[0] &= 0xfe; /* clear multicast bit */
|
||||
+ mac_addr[0] |= 0x02; /* set local assignment bit (IEEE802) */
|
||||
+ eth_env_set_enetaddr("ethaddr", mac_addr);
|
||||
+
|
||||
+ /* Make a valid MAC address for eth1 */
|
||||
+ mac_addr[5] += 0x20;
|
||||
+ mac_addr[5] &= 0xff;
|
||||
+ eth_env_set_enetaddr("eth1addr", mac_addr);
|
||||
+#endif
|
||||
+}
|
||||
+
|
||||
+int rk_board_late_init(void)
|
||||
+{
|
||||
+ setup_macaddr();
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
@ -1,17 +1,31 @@
|
||||
From b6c47bd9f6a8965ab538f168086d4fd99fcf3066 Mon Sep 17 00:00:00 2001
|
||||
From 46d72af5faa7f12a057294356eb353d38c56b5fe Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Karlman <jonas@kwiboo.se>
|
||||
Date: Wed, 10 Jan 2018 19:56:16 +0100
|
||||
Subject: [PATCH] rk3328-evb: add sdmmc vmmc-supply
|
||||
|
||||
---
|
||||
arch/arm/dts/rk3328-evb.dts | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
arch/arm/dts/rk3328-evb.dts | 7 +++++--
|
||||
arch/arm/dts/rk3328.dtsi | 10 ++++++----
|
||||
2 files changed, 11 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/arch/arm/dts/rk3328-evb.dts b/arch/arm/dts/rk3328-evb.dts
|
||||
index 4b13a8da64..586c58659d 100644
|
||||
index aafafec649..497b040f56 100644
|
||||
--- a/arch/arm/dts/rk3328-evb.dts
|
||||
+++ b/arch/arm/dts/rk3328-evb.dts
|
||||
@@ -61,6 +61,7 @@
|
||||
@@ -28,8 +28,10 @@
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vcc3v3";
|
||||
gpio = <&gpio0 30 GPIO_ACTIVE_LOW>;
|
||||
- regulator-always-on;
|
||||
- regulator-boot-on;
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&sdmmc0m1_gpio>;
|
||||
+ regulator-min-microvolt = <3300000>;
|
||||
+ regulator-max-microvolt = <3300000>;
|
||||
};
|
||||
|
||||
vcc5v0_otg: vcc5v0-otg-drv {
|
||||
@@ -75,6 +77,7 @@
|
||||
num-slots = <1>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&sdmmc0_clk>, <&sdmmc0_cmd>, <&sdmmc0_dectn>, <&sdmmc0_bus4>;
|
||||
@ -19,3 +33,31 @@ index 4b13a8da64..586c58659d 100644
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
diff --git a/arch/arm/dts/rk3328.dtsi b/arch/arm/dts/rk3328.dtsi
|
||||
index 35db0ccf4d..231e66788d 100644
|
||||
--- a/arch/arm/dts/rk3328.dtsi
|
||||
+++ b/arch/arm/dts/rk3328.dtsi
|
||||
@@ -481,8 +481,9 @@
|
||||
compatible = "rockchip,rk3328-dw-mshc", "rockchip,rk3288-dw-mshc";
|
||||
reg = <0x0 0xff500000 0x0 0x4000>;
|
||||
max-frequency = <150000000>;
|
||||
- clocks = <&cru HCLK_SDMMC>, <&cru SCLK_SDMMC>;
|
||||
- clock-names = "biu", "ciu";
|
||||
+ clocks = <&cru HCLK_SDMMC>, <&cru SCLK_SDMMC>,
|
||||
+ <&cru SCLK_SDMMC_DRV>, <&cru SCLK_SDMMC_SAMPLE>;
|
||||
+ clock-names = "biu", "ciu", "ciu-drv", "ciu-sample";
|
||||
fifo-depth = <0x100>;
|
||||
interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
|
||||
status = "disabled";
|
||||
@@ -504,8 +505,9 @@
|
||||
compatible = "rockchip,rk3328-dw-mshc", "rockchip,rk3288-dw-mshc";
|
||||
reg = <0x0 0xff520000 0x0 0x4000>;
|
||||
max-frequency = <150000000>;
|
||||
- clocks = <&cru HCLK_EMMC>, <&cru SCLK_EMMC>;
|
||||
- clock-names = "biu", "ciu";
|
||||
+ clocks = <&cru HCLK_EMMC>, <&cru SCLK_EMMC>,
|
||||
+ <&cru SCLK_EMMC_DRV>, <&cru SCLK_EMMC_SAMPLE>;
|
||||
+ clock-names = "biu", "ciu", "ciu-drv", "ciu-sample";
|
||||
fifo-depth = <0x100>;
|
||||
interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
|
||||
status = "disabled";
|
||||
|
@ -1,38 +0,0 @@
|
||||
From 0f59425a214329eda9080f186bfa82780fce75e6 Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Karlman <jonas@kwiboo.se>
|
||||
Date: Sun, 28 Jan 2018 15:42:23 +0100
|
||||
Subject: [PATCH] rk3399-evb: prefer sdcard boot
|
||||
|
||||
---
|
||||
arch/arm/dts/rk3399-evb.dts | 2 +-
|
||||
arch/arm/dts/rk3399.dtsi | 4 ++--
|
||||
2 files changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/arch/arm/dts/rk3399-evb.dts b/arch/arm/dts/rk3399-evb.dts
|
||||
index a0ea589015..ae28bded64 100644
|
||||
--- a/arch/arm/dts/rk3399-evb.dts
|
||||
+++ b/arch/arm/dts/rk3399-evb.dts
|
||||
@@ -17,7 +17,7 @@
|
||||
|
||||
chosen {
|
||||
stdout-path = &uart2;
|
||||
- u-boot,spl-boot-order = &sdhci, &sdmmc;
|
||||
+ u-boot,spl-boot-order = &sdmmc, &sdhci;
|
||||
};
|
||||
|
||||
vdd_center: vdd-center {
|
||||
diff --git a/arch/arm/dts/rk3399.dtsi b/arch/arm/dts/rk3399.dtsi
|
||||
index 68221b47f7..cfb99c9e16 100644
|
||||
--- a/arch/arm/dts/rk3399.dtsi
|
||||
+++ b/arch/arm/dts/rk3399.dtsi
|
||||
@@ -35,8 +35,8 @@
|
||||
serial2 = &uart2;
|
||||
serial3 = &uart3;
|
||||
serial4 = &uart4;
|
||||
- mmc0 = &sdhci;
|
||||
- mmc1 = &sdmmc;
|
||||
+ mmc0 = &sdmmc;
|
||||
+ mmc1 = &sdhci;
|
||||
};
|
||||
|
||||
cpus {
|
@ -0,0 +1,52 @@
|
||||
From 180c7b262f17a58de6865b7b7a5df609e1449ce8 Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Karlman <jonas@kwiboo.se>
|
||||
Date: Sun, 5 Aug 2018 20:58:54 +0200
|
||||
Subject: [PATCH] rockchip: rk3288: add efuse support
|
||||
|
||||
---
|
||||
arch/arm/dts/rk3288.dtsi | 5 ++---
|
||||
configs/miqi-rk3288_defconfig | 2 ++
|
||||
configs/tinker-rk3288_defconfig | 1 +
|
||||
3 files changed, 5 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/arch/arm/dts/rk3288.dtsi b/arch/arm/dts/rk3288.dtsi
|
||||
index 20adb0dece..8b085ee6dc 100644
|
||||
--- a/arch/arm/dts/rk3288.dtsi
|
||||
+++ b/arch/arm/dts/rk3288.dtsi
|
||||
@@ -936,9 +936,8 @@
|
||||
};
|
||||
|
||||
efuse: efuse@ffb40000 {
|
||||
- compatible = "rockchip,rk3288-efuse";
|
||||
- reg = <0xffb40000 0x10000>;
|
||||
- status = "disabled";
|
||||
+ compatible = "rockchip,rockchip-efuse";
|
||||
+ reg = <0xffb40000 0x20>;
|
||||
};
|
||||
|
||||
gic: interrupt-controller@ffc01000 {
|
||||
diff --git a/configs/miqi-rk3288_defconfig b/configs/miqi-rk3288_defconfig
|
||||
index 09d5979dff..ffbe701cfd 100644
|
||||
--- a/configs/miqi-rk3288_defconfig
|
||||
+++ b/configs/miqi-rk3288_defconfig
|
||||
@@ -48,6 +48,8 @@ CONFIG_ROCKCHIP_GPIO=y
|
||||
CONFIG_SYS_I2C_ROCKCHIP=y
|
||||
CONFIG_DM_KEY=y
|
||||
CONFIG_ADC_KEY=y
|
||||
+CONFIG_MISC=y
|
||||
+CONFIG_ROCKCHIP_EFUSE=y
|
||||
CONFIG_MMC_DW=y
|
||||
CONFIG_MMC_DW_ROCKCHIP=y
|
||||
CONFIG_DM_ETH=y
|
||||
diff --git a/configs/tinker-rk3288_defconfig b/configs/tinker-rk3288_defconfig
|
||||
index 3abf7c1088..0afc0a35e1 100644
|
||||
--- a/configs/tinker-rk3288_defconfig
|
||||
+++ b/configs/tinker-rk3288_defconfig
|
||||
@@ -46,6 +46,7 @@ CONFIG_SPL_CLK=y
|
||||
CONFIG_ROCKCHIP_GPIO=y
|
||||
CONFIG_SYS_I2C_ROCKCHIP=y
|
||||
CONFIG_MISC=y
|
||||
+CONFIG_ROCKCHIP_EFUSE=y
|
||||
CONFIG_I2C_EEPROM=y
|
||||
CONFIG_MMC_DW=y
|
||||
CONFIG_MMC_DW_ROCKCHIP=y
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,73 @@
|
||||
From 99854fa357a70ce160f7db78c383642c119cbad7 Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Karlman <jonas@kwiboo.se>
|
||||
Date: Sun, 5 Aug 2018 20:58:54 +0200
|
||||
Subject: [PATCH] rk3288-miqi: get ethaddr from efuse
|
||||
|
||||
---
|
||||
board/mqmaker/miqi_rk3288/miqi-rk3288.c | 43 +++++++++++++++++++++++++
|
||||
configs/miqi-rk3288_defconfig | 1 -
|
||||
2 files changed, 43 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/board/mqmaker/miqi_rk3288/miqi-rk3288.c b/board/mqmaker/miqi_rk3288/miqi-rk3288.c
|
||||
index 846deddb80..f719218eb6 100644
|
||||
--- a/board/mqmaker/miqi_rk3288/miqi-rk3288.c
|
||||
+++ b/board/mqmaker/miqi_rk3288/miqi-rk3288.c
|
||||
@@ -6,3 +6,46 @@
|
||||
|
||||
#include <common.h>
|
||||
#include <spl.h>
|
||||
+#include <hash.h>
|
||||
+#include <u-boot/sha256.h>
|
||||
+
|
||||
+static void setup_macaddr(void)
|
||||
+{
|
||||
+#if CONFIG_IS_ENABLED(CMD_NET)
|
||||
+ int ret;
|
||||
+ const char *cpuid = env_get("cpuid#");
|
||||
+ u8 hash[SHA256_SUM_LEN];
|
||||
+ int size = sizeof(hash);
|
||||
+ u8 mac_addr[6];
|
||||
+
|
||||
+ /* Only generate a MAC address, if none is set in the environment */
|
||||
+ if (env_get("ethaddr"))
|
||||
+ return;
|
||||
+
|
||||
+ if (!cpuid) {
|
||||
+ debug("%s: could not retrieve 'cpuid#'\n", __func__);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ ret = hash_block("sha256", (void *)cpuid, strlen(cpuid), hash, &size);
|
||||
+ if (ret) {
|
||||
+ debug("%s: failed to calculate SHA256\n", __func__);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ /* Copy 6 bytes of the hash to base the MAC address on */
|
||||
+ memcpy(mac_addr, hash, 6);
|
||||
+
|
||||
+ /* Make this a valid MAC address and set it */
|
||||
+ mac_addr[0] &= 0xfe; /* clear multicast bit */
|
||||
+ mac_addr[0] |= 0x02; /* set local assignment bit (IEEE802) */
|
||||
+ eth_env_set_enetaddr("ethaddr", mac_addr);
|
||||
+#endif
|
||||
+}
|
||||
+
|
||||
+int rk3288_board_late_init(void)
|
||||
+{
|
||||
+ setup_macaddr();
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
diff --git a/configs/miqi-rk3288_defconfig b/configs/miqi-rk3288_defconfig
|
||||
index ffbe701cfd..746d8035ee 100644
|
||||
--- a/configs/miqi-rk3288_defconfig
|
||||
+++ b/configs/miqi-rk3288_defconfig
|
||||
@@ -36,7 +36,6 @@ CONFIG_SPL_PARTITION_UUIDS=y
|
||||
CONFIG_SPL_OF_CONTROL=y
|
||||
CONFIG_OF_SPL_REMOVE_PROPS="pinctrl-0 pinctrl-names clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents"
|
||||
CONFIG_ENV_IS_IN_MMC=y
|
||||
-CONFIG_NET_RANDOM_ETHADDR=y
|
||||
CONFIG_REGMAP=y
|
||||
CONFIG_SPL_REGMAP=y
|
||||
CONFIG_SYSCON=y
|
@ -0,0 +1,142 @@
|
||||
From ea235722e95630c3d5da5403e660a8bc20e2b8d0 Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Karlman <jonas@kwiboo.se>
|
||||
Date: Mon, 20 Aug 2018 23:01:10 +0200
|
||||
Subject: [PATCH] rk3399-evb: fixup get serial and ethaddr from efuse
|
||||
|
||||
---
|
||||
board/rockchip/evb_rk3399/evb-rk3399.c | 80 +-------------------------
|
||||
include/configs/evb_rk3399.h | 3 -
|
||||
2 files changed, 2 insertions(+), 81 deletions(-)
|
||||
|
||||
diff --git a/board/rockchip/evb_rk3399/evb-rk3399.c b/board/rockchip/evb_rk3399/evb-rk3399.c
|
||||
index b6f730852a..c0a38d5143 100644
|
||||
--- a/board/rockchip/evb_rk3399/evb-rk3399.c
|
||||
+++ b/board/rockchip/evb_rk3399/evb-rk3399.c
|
||||
@@ -6,13 +6,12 @@
|
||||
|
||||
#include <common.h>
|
||||
#include <dm.h>
|
||||
-#include <misc.h>
|
||||
#include <ram.h>
|
||||
#include <dm/pinctrl.h>
|
||||
#include <dm/uclass-internal.h>
|
||||
-#include <asm/setup.h>
|
||||
#include <asm/arch/periph.h>
|
||||
#include <power/regulator.h>
|
||||
+#include <hash.h>
|
||||
#include <u-boot/sha256.h>
|
||||
#include <usb.h>
|
||||
#include <dwc3-uboot.h>
|
||||
@@ -20,9 +19,6 @@
|
||||
|
||||
DECLARE_GLOBAL_DATA_PTR;
|
||||
|
||||
-#define RK3399_CPUID_OFF 0x7
|
||||
-#define RK3399_CPUID_LEN 0x10
|
||||
-
|
||||
int rk_board_init(void)
|
||||
{
|
||||
struct udevice *pinctrl, *regulator;
|
||||
@@ -106,87 +102,15 @@ static void setup_macaddr(void)
|
||||
mac_addr[0] |= 0x02; /* set local assignment bit (IEEE802) */
|
||||
eth_env_set_enetaddr("ethaddr", mac_addr);
|
||||
#endif
|
||||
-
|
||||
- return;
|
||||
}
|
||||
|
||||
-static void setup_serial(void)
|
||||
+int rk_board_late_init(void)
|
||||
{
|
||||
-#if CONFIG_IS_ENABLED(ROCKCHIP_EFUSE)
|
||||
- struct udevice *dev;
|
||||
- int ret, i;
|
||||
- u8 cpuid[RK3399_CPUID_LEN];
|
||||
- u8 low[RK3399_CPUID_LEN/2], high[RK3399_CPUID_LEN/2];
|
||||
- char cpuid_str[RK3399_CPUID_LEN * 2 + 1];
|
||||
- u64 serialno;
|
||||
- char serialno_str[16];
|
||||
-
|
||||
- /* retrieve the device */
|
||||
- ret = uclass_get_device_by_driver(UCLASS_MISC,
|
||||
- DM_GET_DRIVER(rockchip_efuse), &dev);
|
||||
- if (ret) {
|
||||
- debug("%s: could not find efuse device\n", __func__);
|
||||
- return;
|
||||
- }
|
||||
-
|
||||
- /* read the cpu_id range from the efuses */
|
||||
- ret = misc_read(dev, RK3399_CPUID_OFF, &cpuid, sizeof(cpuid));
|
||||
- if (ret) {
|
||||
- debug("%s: reading cpuid from the efuses failed\n",
|
||||
- __func__);
|
||||
- return;
|
||||
- }
|
||||
-
|
||||
- memset(cpuid_str, 0, sizeof(cpuid_str));
|
||||
- for (i = 0; i < 16; i++)
|
||||
- sprintf(&cpuid_str[i * 2], "%02x", cpuid[i]);
|
||||
-
|
||||
- debug("cpuid: %s\n", cpuid_str);
|
||||
-
|
||||
- /*
|
||||
- * Mix the cpuid bytes using the same rules as in
|
||||
- * ${linux}/drivers/soc/rockchip/rockchip-cpuinfo.c
|
||||
- */
|
||||
- for (i = 0; i < 8; i++) {
|
||||
- low[i] = cpuid[1 + (i << 1)];
|
||||
- high[i] = cpuid[i << 1];
|
||||
- }
|
||||
-
|
||||
- serialno = crc32_no_comp(0, low, 8);
|
||||
- serialno |= (u64)crc32_no_comp(serialno, high, 8) << 32;
|
||||
- snprintf(serialno_str, sizeof(serialno_str), "%llx", serialno);
|
||||
-
|
||||
- env_set("cpuid#", cpuid_str);
|
||||
- env_set("serial#", serialno_str);
|
||||
-#endif
|
||||
-
|
||||
- return;
|
||||
-}
|
||||
-
|
||||
-int misc_init_r(void)
|
||||
-{
|
||||
- setup_serial();
|
||||
setup_macaddr();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
-#ifdef CONFIG_SERIAL_TAG
|
||||
-void get_board_serial(struct tag_serialnr *serialnr)
|
||||
-{
|
||||
- char *serial_string;
|
||||
- u64 serial = 0;
|
||||
-
|
||||
- serial_string = env_get("serial#");
|
||||
-
|
||||
- if (serial_string)
|
||||
- serial = simple_strtoull(serial_string, NULL, 16);
|
||||
-
|
||||
- serialnr->high = (u32)(serial >> 32);
|
||||
- serialnr->low = (u32)(serial & 0xffffffff);
|
||||
-}
|
||||
-#endif
|
||||
-
|
||||
#ifdef CONFIG_USB_DWC3
|
||||
static struct dwc3_device dwc3_device_data = {
|
||||
.maximum_speed = USB_SPEED_HIGH,
|
||||
diff --git a/include/configs/evb_rk3399.h b/include/configs/evb_rk3399.h
|
||||
index 5565c7ce53..840d63ff6d 100644
|
||||
--- a/include/configs/evb_rk3399.h
|
||||
+++ b/include/configs/evb_rk3399.h
|
||||
@@ -18,9 +18,6 @@
|
||||
#define CONFIG_SYS_MMC_ENV_DEV 0
|
||||
|
||||
#define SDRAM_BANK_SIZE (2UL << 30)
|
||||
-#define CONFIG_MISC_INIT_R
|
||||
-#define CONFIG_SERIAL_TAG
|
||||
-#define CONFIG_ENV_OVERWRITE
|
||||
|
||||
#define CONFIG_BMP_16BPP
|
||||
#define CONFIG_BMP_24BPP
|
@ -0,0 +1,175 @@
|
||||
From 37a07ad0222bb19c7fdc03d7679bae47d9875eed Mon Sep 17 00:00:00 2001
|
||||
From: Heinrich Schuchardt <xypron.glpk@gmx.de>
|
||||
Date: Mon, 7 May 2018 22:18:27 +0200
|
||||
Subject: [PATCH] include: update log2 header from the Linux kernel
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Without the patch gcc 8 produces:
|
||||
warning: ignoring attribute ‘noreturn’ because it conflicts with
|
||||
attribute ‘const’ [-Wattributes]
|
||||
int ____ilog2_NaN(void);
|
||||
|
||||
So let's update the include from Linux kernel v4.16.
|
||||
|
||||
This removes static checks of ilog2() arguments.
|
||||
|
||||
Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
|
||||
(cherry picked from commit 4a8e72954e11f2c2c37ee138b88a1d9362dba4da)
|
||||
---
|
||||
include/linux/log2.h | 63 ++++++++++++++++++++++++++------------------
|
||||
1 file changed, 37 insertions(+), 26 deletions(-)
|
||||
|
||||
diff --git a/include/linux/log2.h b/include/linux/log2.h
|
||||
index aa1de63090..b62c07b29f 100644
|
||||
--- a/include/linux/log2.h
|
||||
+++ b/include/linux/log2.h
|
||||
@@ -4,6 +4,11 @@
|
||||
* Written by David Howells (dhowells@redhat.com)
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
+ *
|
||||
+ * This program is free software; you can redistribute it and/or
|
||||
+ * modify it under the terms of the GNU General Public License
|
||||
+ * as published by the Free Software Foundation; either version
|
||||
+ * 2 of the License, or (at your option) any later version.
|
||||
*/
|
||||
|
||||
#ifndef _LINUX_LOG2_H
|
||||
@@ -12,12 +17,6 @@
|
||||
#include <linux/types.h>
|
||||
#include <linux/bitops.h>
|
||||
|
||||
-/*
|
||||
- * deal with unrepresentable constant logarithms
|
||||
- */
|
||||
-extern __attribute__((const, noreturn))
|
||||
-int ____ilog2_NaN(void);
|
||||
-
|
||||
/*
|
||||
* non-constant log of base 2 calculators
|
||||
* - the arch may override these in asm/bitops.h if they can be implemented
|
||||
@@ -40,19 +39,23 @@ int __ilog2_u64(u64 n)
|
||||
}
|
||||
#endif
|
||||
|
||||
-/*
|
||||
- * Determine whether some value is a power of two, where zero is
|
||||
+/**
|
||||
+ * is_power_of_2() - check if a value is a power of two
|
||||
+ * @n: the value to check
|
||||
+ *
|
||||
+ * Determine whether some value is a power of two, where zero is
|
||||
* *not* considered a power of two.
|
||||
+ * Return: true if @n is a power of 2, otherwise false.
|
||||
*/
|
||||
-
|
||||
static inline __attribute__((const))
|
||||
bool is_power_of_2(unsigned long n)
|
||||
{
|
||||
return (n != 0 && ((n & (n - 1)) == 0));
|
||||
}
|
||||
|
||||
-/*
|
||||
- * round up to nearest power of two
|
||||
+/**
|
||||
+ * __roundup_pow_of_two() - round up to nearest power of two
|
||||
+ * @n: value to round up
|
||||
*/
|
||||
static inline __attribute__((const))
|
||||
unsigned long __roundup_pow_of_two(unsigned long n)
|
||||
@@ -60,8 +63,9 @@ unsigned long __roundup_pow_of_two(unsigned long n)
|
||||
return 1UL << fls_long(n - 1);
|
||||
}
|
||||
|
||||
-/*
|
||||
- * round down to nearest power of two
|
||||
+/**
|
||||
+ * __rounddown_pow_of_two() - round down to nearest power of two
|
||||
+ * @n: value to round down
|
||||
*/
|
||||
static inline __attribute__((const))
|
||||
unsigned long __rounddown_pow_of_two(unsigned long n)
|
||||
@@ -70,19 +74,19 @@ unsigned long __rounddown_pow_of_two(unsigned long n)
|
||||
}
|
||||
|
||||
/**
|
||||
- * ilog2 - log of base 2 of 32-bit or a 64-bit unsigned value
|
||||
- * @n - parameter
|
||||
+ * ilog2 - log base 2 of 32-bit or a 64-bit unsigned value
|
||||
+ * @n: parameter
|
||||
*
|
||||
* constant-capable log of base 2 calculation
|
||||
* - this can be used to initialise global variables from constant data, hence
|
||||
- * the massive ternary operator construction
|
||||
+ * the massive ternary operator construction
|
||||
*
|
||||
* selects the appropriately-sized optimised version depending on sizeof(n)
|
||||
*/
|
||||
#define ilog2(n) \
|
||||
( \
|
||||
__builtin_constant_p(n) ? ( \
|
||||
- (n) < 1 ? ____ilog2_NaN() : \
|
||||
+ (n) < 2 ? 0 : \
|
||||
(n) & (1ULL << 63) ? 63 : \
|
||||
(n) & (1ULL << 62) ? 62 : \
|
||||
(n) & (1ULL << 61) ? 61 : \
|
||||
@@ -145,10 +149,7 @@ unsigned long __rounddown_pow_of_two(unsigned long n)
|
||||
(n) & (1ULL << 4) ? 4 : \
|
||||
(n) & (1ULL << 3) ? 3 : \
|
||||
(n) & (1ULL << 2) ? 2 : \
|
||||
- (n) & (1ULL << 1) ? 1 : \
|
||||
- (n) & (1ULL << 0) ? 0 : \
|
||||
- ____ilog2_NaN() \
|
||||
- ) : \
|
||||
+ 1) : \
|
||||
(sizeof(n) <= 4) ? \
|
||||
__ilog2_u32(n) : \
|
||||
__ilog2_u64(n) \
|
||||
@@ -156,7 +157,7 @@ unsigned long __rounddown_pow_of_two(unsigned long n)
|
||||
|
||||
/**
|
||||
* roundup_pow_of_two - round the given value up to nearest power of two
|
||||
- * @n - parameter
|
||||
+ * @n: parameter
|
||||
*
|
||||
* round the given value up to the nearest power of two
|
||||
* - the result is undefined when n == 0
|
||||
@@ -173,7 +174,7 @@ unsigned long __rounddown_pow_of_two(unsigned long n)
|
||||
|
||||
/**
|
||||
* rounddown_pow_of_two - round the given value down to nearest power of two
|
||||
- * @n - parameter
|
||||
+ * @n: parameter
|
||||
*
|
||||
* round the given value down to the nearest power of two
|
||||
* - the result is undefined when n == 0
|
||||
@@ -186,6 +187,12 @@ unsigned long __rounddown_pow_of_two(unsigned long n)
|
||||
__rounddown_pow_of_two(n) \
|
||||
)
|
||||
|
||||
+static inline __attribute_const__
|
||||
+int __order_base_2(unsigned long n)
|
||||
+{
|
||||
+ return n > 1 ? ilog2(n - 1) + 1 : 0;
|
||||
+}
|
||||
+
|
||||
/**
|
||||
* order_base_2 - calculate the (rounded up) base 2 order of the argument
|
||||
* @n: parameter
|
||||
@@ -199,7 +206,11 @@ unsigned long __rounddown_pow_of_two(unsigned long n)
|
||||
* ob2(5) = 3
|
||||
* ... and so on.
|
||||
*/
|
||||
-
|
||||
-#define order_base_2(n) ilog2(roundup_pow_of_two(n))
|
||||
-
|
||||
+#define order_base_2(n) \
|
||||
+( \
|
||||
+ __builtin_constant_p(n) ? ( \
|
||||
+ ((n) == 0 || (n) == 1) ? 0 : \
|
||||
+ ilog2((n) - 1) + 1) : \
|
||||
+ __order_base_2(n) \
|
||||
+)
|
||||
#endif /* _LINUX_LOG2_H */
|
@ -0,0 +1,182 @@
|
||||
From 1ba76e3eb47e865d84e42a6b5484516ef4457bf7 Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Karlman <jonas@kwiboo.se>
|
||||
Date: Sat, 18 Aug 2018 17:27:32 +0200
|
||||
Subject: [PATCH] rockchip: disable android boot and config
|
||||
|
||||
---
|
||||
arch/arm/mach-rockchip/boot_mode.c | 2 +-
|
||||
configs/evb-rk3328_defconfig | 5 ++---
|
||||
configs/evb-rk3399_defconfig | 14 --------------
|
||||
configs/miqi-rk3288_defconfig | 12 +-----------
|
||||
configs/tinker-rk3288_defconfig | 3 ---
|
||||
include/configs/rockchip-common.h | 2 --
|
||||
6 files changed, 4 insertions(+), 34 deletions(-)
|
||||
|
||||
diff --git a/arch/arm/mach-rockchip/boot_mode.c b/arch/arm/mach-rockchip/boot_mode.c
|
||||
index 8a20a3a31e..9441c49477 100644
|
||||
--- a/arch/arm/mach-rockchip/boot_mode.c
|
||||
+++ b/arch/arm/mach-rockchip/boot_mode.c
|
||||
@@ -123,9 +123,9 @@ int setup_boot_mode(void)
|
||||
int boot_mode = BOOT_MODE_NORMAL;
|
||||
char env_preboot[256] = {0};
|
||||
|
||||
+#ifdef CONFIG_RKIMG_BOOTLOADER
|
||||
devtype_num_envset();
|
||||
rockchip_dnl_mode_check();
|
||||
-#ifdef CONFIG_RKIMG_BOOTLOADER
|
||||
boot_mode = rockchip_get_boot_mode();
|
||||
#endif
|
||||
switch (boot_mode) {
|
||||
diff --git a/configs/evb-rk3328_defconfig b/configs/evb-rk3328_defconfig
|
||||
index 0897a28e1d..85ee85741e 100644
|
||||
--- a/configs/evb-rk3328_defconfig
|
||||
+++ b/configs/evb-rk3328_defconfig
|
||||
@@ -39,8 +39,8 @@ CONFIG_TPL_OF_CONTROL=y
|
||||
CONFIG_OF_SPL_REMOVE_PROPS="pinctrl-0 pinctrl-names clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents"
|
||||
CONFIG_TPL_OF_PLATDATA=y
|
||||
CONFIG_ENV_IS_IN_MMC=y
|
||||
-CONFIG_TPL_DM=y
|
||||
CONFIG_NET_RANDOM_ETHADDR=y
|
||||
+CONFIG_TPL_DM=y
|
||||
CONFIG_REGMAP=y
|
||||
CONFIG_SPL_REGMAP=y
|
||||
CONFIG_TPL_REGMAP=y
|
||||
@@ -56,12 +56,11 @@ CONFIG_MISC=y
|
||||
CONFIG_ROCKCHIP_EFUSE=y
|
||||
CONFIG_MMC_DW=y
|
||||
CONFIG_MMC_DW_ROCKCHIP=y
|
||||
-CONFIG_PHY=y
|
||||
-CONFIG_PHY_ROCKCHIP_INNO_USB2=y
|
||||
CONFIG_DM_ETH=y
|
||||
CONFIG_ETH_DESIGNWARE=y
|
||||
CONFIG_GMAC_ROCKCHIP=y
|
||||
CONFIG_PHY=y
|
||||
+CONFIG_PHY_ROCKCHIP_INNO_USB2=y
|
||||
CONFIG_PINCTRL=y
|
||||
CONFIG_DM_PMIC=y
|
||||
CONFIG_PMIC_RK8XX=y
|
||||
diff --git a/configs/evb-rk3399_defconfig b/configs/evb-rk3399_defconfig
|
||||
index 305f0a405d..bd86db31af 100644
|
||||
--- a/configs/evb-rk3399_defconfig
|
||||
+++ b/configs/evb-rk3399_defconfig
|
||||
@@ -5,8 +5,6 @@ CONFIG_SPL_LIBGENERIC_SUPPORT=y
|
||||
CONFIG_SYS_MALLOC_F_LEN=0x4000
|
||||
CONFIG_ROCKCHIP_RK3399=y
|
||||
CONFIG_ROCKCHIP_SPL_RESERVE_IRAM=0x4000
|
||||
-CONFIG_RKIMG_BOOTLOADER=y
|
||||
-# CONFIG_USING_KERNEL_DTB is not set
|
||||
CONFIG_SPL_STACK_R_ADDR=0x80000
|
||||
CONFIG_DEFAULT_DEVICE_TREE="rk3399-evb"
|
||||
CONFIG_DEBUG_UART=y
|
||||
@@ -14,7 +12,6 @@ CONFIG_FIT=y
|
||||
CONFIG_SPL_LOAD_FIT=y
|
||||
CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-rockchip/make_fit_atf.py"
|
||||
# CONFIG_DISPLAY_CPUINFO is not set
|
||||
-CONFIG_ANDROID_BOOTLOADER=y
|
||||
CONFIG_SPL_STACK_R=y
|
||||
CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN=0x4000
|
||||
CONFIG_SPL_ATF=y
|
||||
@@ -26,9 +23,6 @@ CONFIG_FASTBOOT_FLASH_MMC_DEV=0
|
||||
CONFIG_CMD_BOOTZ=y
|
||||
# CONFIG_CMD_IMLS is not set
|
||||
CONFIG_CMD_GPT=y
|
||||
-CONFIG_CMD_LOAD_ANDROID=y
|
||||
-CONFIG_CMD_BOOT_ANDROID=y
|
||||
-CONFIG_CMD_BOOT_ROCKCHIP=y
|
||||
CONFIG_CMD_MMC=y
|
||||
CONFIG_CMD_SF=y
|
||||
CONFIG_CMD_USB=y
|
||||
@@ -94,13 +88,5 @@ CONFIG_USB_ETHER_ASIX88179=y
|
||||
CONFIG_USB_ETHER_MCS7830=y
|
||||
CONFIG_USB_ETHER_RTL8152=y
|
||||
CONFIG_USB_ETHER_SMSC95XX=y
|
||||
-CONFIG_DM_VIDEO=y
|
||||
-CONFIG_DISPLAY=y
|
||||
-CONFIG_DRM_ROCKCHIP=y
|
||||
-CONFIG_DRM_ROCKCHIP_DW_MIPI_DSI=y
|
||||
-CONFIG_DRM_ROCKCHIP_ANALOGIX_DP=y
|
||||
-CONFIG_DRM_ROCKCHIP_LVDS=y
|
||||
-CONFIG_DRM_ROCKCHIP_RGB=y
|
||||
-CONFIG_LCD=y
|
||||
CONFIG_USE_TINY_PRINTF=y
|
||||
CONFIG_ERRNO_STR=y
|
||||
diff --git a/configs/miqi-rk3288_defconfig b/configs/miqi-rk3288_defconfig
|
||||
index 746d8035ee..4826581bf7 100644
|
||||
--- a/configs/miqi-rk3288_defconfig
|
||||
+++ b/configs/miqi-rk3288_defconfig
|
||||
@@ -3,12 +3,11 @@ CONFIG_ARCH_ROCKCHIP=y
|
||||
CONFIG_SYS_MALLOC_F_LEN=0x2000
|
||||
CONFIG_ROCKCHIP_RK3288=y
|
||||
CONFIG_SPL_ROCKCHIP_BACK_TO_BROM=y
|
||||
-CONFIG_RKIMG_BOOTLOADER=y
|
||||
CONFIG_TARGET_MIQI_RK3288=y
|
||||
CONFIG_SPL_STACK_R_ADDR=0x80000
|
||||
CONFIG_DEFAULT_DEVICE_TREE="rk3288-miqi"
|
||||
CONFIG_DEBUG_UART=y
|
||||
-# CONFIG_SILENT_CONSOLE is not set
|
||||
+# CONFIG_ANDROID_BOOT_IMAGE is not set
|
||||
# CONFIG_DISPLAY_CPUINFO is not set
|
||||
CONFIG_SPL_STACK_R=y
|
||||
CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN=0x2000
|
||||
@@ -16,10 +15,6 @@ CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN=0x2000
|
||||
CONFIG_CMD_GPIO=y
|
||||
CONFIG_CMD_GPT=y
|
||||
CONFIG_CMD_I2C=y
|
||||
-CONFIG_ANDROID_BOOT_IMAGE=y
|
||||
-CONFIG_ANDROID_BOOTLOADER=y
|
||||
-CONFIG_CMD_BOOT_ANDROID=y
|
||||
-CONFIG_CMD_BOOT_ROCKCHIP=y
|
||||
CONFIG_CMD_MMC=y
|
||||
CONFIG_CMD_SF=y
|
||||
CONFIG_CMD_SPI=y
|
||||
@@ -79,11 +74,6 @@ CONFIG_G_DNL_PRODUCT_NUM=0x320a
|
||||
CONFIG_USB_HOST_ETHER=y
|
||||
CONFIG_USB_ETHER_ASIX=y
|
||||
CONFIG_USB_ETHER_SMSC95XX=y
|
||||
-CONFIG_DM_VIDEO=y
|
||||
-CONFIG_DISPLAY=y
|
||||
-CONFIG_VIDEO_ROCKCHIP=y
|
||||
-CONFIG_DISPLAY_ROCKCHIP_HDMI=y
|
||||
-CONFIG_CONSOLE_SCROLL_LINES=10
|
||||
CONFIG_USE_TINY_PRINTF=y
|
||||
CONFIG_CMD_DHRYSTONE=y
|
||||
CONFIG_ERRNO_STR=y
|
||||
diff --git a/configs/tinker-rk3288_defconfig b/configs/tinker-rk3288_defconfig
|
||||
index 0afc0a35e1..a6f8c0cb51 100644
|
||||
--- a/configs/tinker-rk3288_defconfig
|
||||
+++ b/configs/tinker-rk3288_defconfig
|
||||
@@ -3,13 +3,11 @@ CONFIG_ARCH_ROCKCHIP=y
|
||||
CONFIG_SYS_MALLOC_F_LEN=0x2000
|
||||
CONFIG_ROCKCHIP_RK3288=y
|
||||
CONFIG_SPL_ROCKCHIP_BACK_TO_BROM=y
|
||||
-CONFIG_RKIMG_BOOTLOADER=y
|
||||
CONFIG_TARGET_TINKER_RK3288=y
|
||||
CONFIG_SPL_STACK_R_ADDR=0x80000
|
||||
CONFIG_DEFAULT_DEVICE_TREE="rk3288-tinker"
|
||||
CONFIG_DEBUG_UART=y
|
||||
# CONFIG_ANDROID_BOOT_IMAGE is not set
|
||||
-# CONFIG_SILENT_CONSOLE is not set
|
||||
CONFIG_CONSOLE_MUX=y
|
||||
# CONFIG_DISPLAY_CPUINFO is not set
|
||||
CONFIG_SPL_STACK_R=y
|
||||
@@ -19,7 +17,6 @@ CONFIG_SPL_I2C_SUPPORT=y
|
||||
CONFIG_CMD_GPIO=y
|
||||
CONFIG_CMD_GPT=y
|
||||
CONFIG_CMD_I2C=y
|
||||
-CONFIG_CMD_BOOT_ROCKCHIP=y
|
||||
CONFIG_CMD_MMC=y
|
||||
CONFIG_CMD_SF=y
|
||||
CONFIG_CMD_SPI=y
|
||||
diff --git a/include/configs/rockchip-common.h b/include/configs/rockchip-common.h
|
||||
index 38ff08a57f..1e8f6c344e 100644
|
||||
--- a/include/configs/rockchip-common.h
|
||||
+++ b/include/configs/rockchip-common.h
|
||||
@@ -99,8 +99,6 @@
|
||||
"fi; \0"
|
||||
|
||||
#define RKIMG_BOOTCOMMAND \
|
||||
- "boot_android ${devtype} ${devnum};" \
|
||||
- "bootrkp;" \
|
||||
"run distro_bootcmd;"
|
||||
|
||||
#endif
|
@ -38,3 +38,4 @@ You may have luck if your device vendor is open source friendly, otherwise keep
|
||||
* `cat /sys/kernel/debug/clk/clk_summary`
|
||||
* `hexdump -C /sys/class/drm/card0-HDMI-A-1/edid`
|
||||
* `edid-decode /sys/class/drm/card0-HDMI-A-1/edid`
|
||||
* `cat /sys/kernel/debug/dma_buf/bufinfo`
|
||||
|
@ -13,15 +13,22 @@ case "$PKG_SOC" in
|
||||
PKG_DATAFILE="spl/u-boot-spl-nodtb.bin"
|
||||
PKG_LOADER="u-boot-dtb.bin"
|
||||
;;
|
||||
rk3288)
|
||||
PKG_DATAFILE="$PKG_RKBIN/rk32/rk3288_ddr_400MHz_v1.06.bin"
|
||||
PKG_LOADER="$PKG_RKBIN/rk32/rk3288_miniloader_v2.36.bin"
|
||||
PKG_LOAD_ADDR="0x0"
|
||||
;;
|
||||
rk3328)
|
||||
PKG_DATAFILE="$PKG_RKBIN/rk33/rk3328_ddr_786MHz_v1.12.bin"
|
||||
PKG_LOADER="$PKG_RKBIN/rk33/rk3328_miniloader_v2.44.bin"
|
||||
PKG_DATAFILE="$PKG_RKBIN/rk33/rk3328_ddr_786MHz_v1.13.bin"
|
||||
PKG_LOADER="$PKG_RKBIN/rk33/rk3328_miniloader_v2.46.bin"
|
||||
PKG_BL31="$PKG_RKBIN/rk33/rk3328_bl31_v1.39.bin"
|
||||
PKG_LOAD_ADDR="0x200000"
|
||||
;;
|
||||
rk3399)
|
||||
PKG_DATAFILE="$PKG_RKBIN/rk33/rk3399_ddr_800MHz_v1.09.bin"
|
||||
PKG_LOADER="$PKG_RKBIN/rk33/rk3399_miniloader_v1.09.bin"
|
||||
PKG_BL31="$PKG_RKBIN/rk33/rk3399_bl31_v1.00.elf"
|
||||
PKG_DATAFILE="$PKG_RKBIN/rk33/rk3399_ddr_800MHz_v1.13.bin"
|
||||
PKG_LOADER="$PKG_RKBIN/rk33/rk3399_miniloader_v1.12.bin"
|
||||
PKG_BL31="$PKG_RKBIN/rk33/rk3399_bl31_v1.17.elf"
|
||||
PKG_LOAD_ADDR="0x200000"
|
||||
;;
|
||||
*)
|
||||
PKG_DATAFILE="spl/u-boot-spl-dtb.bin"
|
||||
@ -35,10 +42,12 @@ if [ -n "$PKG_DATAFILE" -a -n "$PKG_LOADER" ]; then
|
||||
cp -av idbloader.img $INSTALL/usr/share/bootloader
|
||||
fi
|
||||
|
||||
if [ -n "$PKG_BL31" ]; then
|
||||
$PKG_RKBIN/tools/loaderimage --pack --uboot u-boot-dtb.bin uboot.img 0x200000
|
||||
if [ -n "$PKG_LOAD_ADDR" ]; then
|
||||
$PKG_RKBIN/tools/loaderimage --pack --uboot u-boot-dtb.bin uboot.img $PKG_LOAD_ADDR
|
||||
cp -av uboot.img $INSTALL/usr/share/bootloader
|
||||
fi
|
||||
|
||||
if [ -n "$PKG_BL31" ]; then
|
||||
cat >trust.ini <<EOF
|
||||
[BL30_OPTION]
|
||||
SEC=0
|
||||
|
@ -1,6 +1,6 @@
|
||||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# Linux/arm 4.4.114 Kernel Configuration
|
||||
# Linux/arm 4.4.143 Kernel Configuration
|
||||
#
|
||||
CONFIG_ARM=y
|
||||
CONFIG_ARM_HAS_SG_CHAIN=y
|
||||
@ -152,6 +152,7 @@ CONFIG_RD_GZIP=y
|
||||
CONFIG_RD_XZ=y
|
||||
# CONFIG_RD_LZO is not set
|
||||
# CONFIG_RD_LZ4 is not set
|
||||
# CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE is not set
|
||||
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
||||
CONFIG_SYSCTL=y
|
||||
CONFIG_ANON_INODES=y
|
||||
@ -237,6 +238,7 @@ CONFIG_HAVE_MOD_ARCH_SPECIFIC=y
|
||||
CONFIG_MODULES_USE_ELF_REL=y
|
||||
CONFIG_ARCH_HAS_ELF_RANDOMIZE=y
|
||||
CONFIG_HAVE_ARCH_MMAP_RND_BITS=y
|
||||
CONFIG_HAVE_EXIT_THREAD=y
|
||||
CONFIG_ARCH_MMAP_RND_BITS_MIN=8
|
||||
CONFIG_ARCH_MMAP_RND_BITS_MAX=16
|
||||
CONFIG_ARCH_MMAP_RND_BITS=8
|
||||
@ -471,7 +473,6 @@ CONFIG_ARM_CPU_TOPOLOGY=y
|
||||
# CONFIG_SCHED_SMT is not set
|
||||
CONFIG_HAVE_ARM_SCU=y
|
||||
CONFIG_HAVE_ARM_ARCH_TIMER=y
|
||||
CONFIG_HAVE_ARM_TWD=y
|
||||
# CONFIG_MCPM is not set
|
||||
# CONFIG_BIG_LITTLE is not set
|
||||
CONFIG_VMSPLIT_3G=y
|
||||
@ -511,9 +512,11 @@ CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
CONFIG_HAVE_MEMBLOCK=y
|
||||
CONFIG_NO_BOOTMEM=y
|
||||
CONFIG_MEMORY_ISOLATION=y
|
||||
# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# CONFIG_COMPACTION is not set
|
||||
CONFIG_MIGRATION=y
|
||||
# CONFIG_PHYS_ADDR_T_64BIT is not set
|
||||
CONFIG_ZONE_DMA_FLAG=0
|
||||
CONFIG_BOUNCE=y
|
||||
@ -521,11 +524,14 @@ CONFIG_BOUNCE=y
|
||||
CONFIG_DEFAULT_MMAP_MIN_ADDR=32768
|
||||
# CONFIG_CLEANCACHE is not set
|
||||
# CONFIG_FRONTSWAP is not set
|
||||
# CONFIG_CMA is not set
|
||||
CONFIG_CMA=y
|
||||
# CONFIG_CMA_DEBUG is not set
|
||||
CONFIG_CMA_DEBUGFS=y
|
||||
CONFIG_CMA_AREAS=7
|
||||
# CONFIG_ZPOOL is not set
|
||||
# CONFIG_ZBUD is not set
|
||||
CONFIG_ZSMALLOC=y
|
||||
# CONFIG_PGTABLE_MAPPING is not set
|
||||
CONFIG_ZSMALLOC=m
|
||||
CONFIG_PGTABLE_MAPPING=y
|
||||
# CONFIG_ZSMALLOC_STAT is not set
|
||||
# CONFIG_IDLE_PAGE_TRACKING is not set
|
||||
CONFIG_FORCE_MAX_ZONEORDER=11
|
||||
@ -547,7 +553,7 @@ CONFIG_ATAGS=y
|
||||
CONFIG_ZBOOT_ROM_TEXT=0x0
|
||||
CONFIG_ZBOOT_ROM_BSS=0x0
|
||||
# CONFIG_ARM_APPENDED_DTB is not set
|
||||
CONFIG_CMDLINE="root=/dev/ram0 rdinit=/init usbcore.autosuspend=-1"
|
||||
CONFIG_CMDLINE="usbcore.autosuspend=-1"
|
||||
# CONFIG_CMDLINE_FROM_BOOTLOADER is not set
|
||||
CONFIG_CMDLINE_EXTEND=y
|
||||
# CONFIG_CMDLINE_FORCE is not set
|
||||
@ -566,13 +572,13 @@ CONFIG_CPU_FREQ=y
|
||||
CONFIG_CPU_FREQ_GOV_COMMON=y
|
||||
CONFIG_CPU_FREQ_STAT=y
|
||||
# CONFIG_CPU_FREQ_STAT_DETAILS is not set
|
||||
CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
|
||||
CONFIG_CPU_FREQ_TIMES=y
|
||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
|
||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
|
||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
|
||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
|
||||
CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
|
||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
|
||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_INTERACTIVE is not set
|
||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_SCHED is not set
|
||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL is not set
|
||||
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
|
||||
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
|
||||
@ -1016,6 +1022,7 @@ CONFIG_RFKILL_GPIO=y
|
||||
# CONFIG_CEPH_LIB is not set
|
||||
# CONFIG_NFC is not set
|
||||
# CONFIG_LWTUNNEL is not set
|
||||
CONFIG_DST_CACHE=y
|
||||
CONFIG_HAVE_BPF_JIT=y
|
||||
|
||||
#
|
||||
@ -1051,6 +1058,17 @@ CONFIG_REGMAP_MMIO=y
|
||||
CONFIG_REGMAP_IRQ=y
|
||||
CONFIG_DMA_SHARED_BUFFER=y
|
||||
# CONFIG_FENCE_TRACE is not set
|
||||
CONFIG_DMA_CMA=y
|
||||
|
||||
#
|
||||
# Default contiguous memory area size:
|
||||
#
|
||||
CONFIG_CMA_SIZE_MBYTES=64
|
||||
CONFIG_CMA_SIZE_SEL_MBYTES=y
|
||||
# CONFIG_CMA_SIZE_SEL_PERCENTAGE is not set
|
||||
# CONFIG_CMA_SIZE_SEL_MIN is not set
|
||||
# CONFIG_CMA_SIZE_SEL_MAX is not set
|
||||
CONFIG_CMA_ALIGNMENT=8
|
||||
|
||||
#
|
||||
# Bus devices
|
||||
@ -1078,8 +1096,8 @@ CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
|
||||
# CONFIG_PARPORT is not set
|
||||
CONFIG_BLK_DEV=y
|
||||
# CONFIG_BLK_DEV_NULL_BLK is not set
|
||||
CONFIG_ZRAM=y
|
||||
# CONFIG_ZRAM_LZ4_COMPRESS is not set
|
||||
CONFIG_ZRAM=m
|
||||
CONFIG_ZRAM_LZ4_COMPRESS=y
|
||||
# CONFIG_BLK_DEV_COW_COMMON is not set
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
CONFIG_BLK_DEV_LOOP_MIN_COUNT=8
|
||||
@ -1097,7 +1115,7 @@ CONFIG_BLK_DEV_RAM_SIZE=4096
|
||||
#
|
||||
# Misc devices
|
||||
#
|
||||
# CONFIG_ROCKCHIP_SCR is not set
|
||||
CONFIG_ROCKCHIP_SCR=y
|
||||
# CONFIG_SENSORS_LIS3LV02D is not set
|
||||
# CONFIG_AD525X_DPOT is not set
|
||||
# CONFIG_DUMMY_IRQ is not set
|
||||
@ -1329,7 +1347,7 @@ CONFIG_PHYLIB=y
|
||||
# CONFIG_CICADA_PHY is not set
|
||||
# CONFIG_VITESSE_PHY is not set
|
||||
# CONFIG_TERANETICS_PHY is not set
|
||||
# CONFIG_ROCKCHIP_PHY is not set
|
||||
CONFIG_ROCKCHIP_PHY=y
|
||||
# CONFIG_SMSC_PHY is not set
|
||||
# CONFIG_BROADCOM_PHY is not set
|
||||
# CONFIG_BCM7XXX_PHY is not set
|
||||
@ -1434,7 +1452,8 @@ CONFIG_RT2X00_LIB_LEDS=y
|
||||
CONFIG_WL_ROCKCHIP=y
|
||||
CONFIG_WIFI_BUILD_MODULE=y
|
||||
# CONFIG_WIFI_LOAD_DRIVER_WHEN_KERNEL_BOOTUP is not set
|
||||
CONFIG_AP6XXX=m
|
||||
# CONFIG_AP6XXX is not set
|
||||
# CONFIG_CYW_BCMDHD is not set
|
||||
CONFIG_RTL_WIRELESS_SOLUTION=y
|
||||
# CONFIG_RTL8188EU is not set
|
||||
# CONFIG_RTL8188FU is not set
|
||||
@ -1444,6 +1463,12 @@ CONFIG_RTL8723BS=m
|
||||
# CONFIG_RTL8723BU is not set
|
||||
# CONFIG_RTL8723CS is not set
|
||||
# CONFIG_RTL8723DS is not set
|
||||
# CONFIG_MVL88W8977 is not set
|
||||
|
||||
#
|
||||
# SouthSV 6XXX WLAN support
|
||||
#
|
||||
# CONFIG_SSV6051 is not set
|
||||
# CONFIG_WL_TI is not set
|
||||
CONFIG_ZD1211RW=m
|
||||
# CONFIG_ZD1211RW_DEBUG is not set
|
||||
@ -1578,6 +1603,7 @@ CONFIG_TOUCHSCREEN_ATMEL_MXT=y
|
||||
# CONFIG_TOUCHSCREEN_FT6236 is not set
|
||||
# CONFIG_TOUCHSCREEN_FUJITSU is not set
|
||||
# CONFIG_TOUCHSCREEN_GOODIX is not set
|
||||
# CONFIG_TOUCHSCREEN_GSLX680A is not set
|
||||
# CONFIG_TOUCHSCREEN_GSLX680_D708 is not set
|
||||
# CONFIG_TOUCHSCREEN_GSLX680_PAD is not set
|
||||
# CONFIG_TOUCHSCREEN_GSLX680_VR is not set
|
||||
@ -1892,6 +1918,7 @@ CONFIG_GENERIC_PINCONF=y
|
||||
# CONFIG_PINCTRL_AMD is not set
|
||||
CONFIG_PINCTRL_ROCKCHIP=y
|
||||
# CONFIG_PINCTRL_SINGLE is not set
|
||||
# CONFIG_PINCTRL_RK805 is not set
|
||||
CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=y
|
||||
CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
|
||||
CONFIG_ARCH_REQUIRE_GPIOLIB=y
|
||||
@ -2304,6 +2331,7 @@ CONFIG_REGULATOR_RK808=y
|
||||
# CONFIG_REGULATOR_RK818 is not set
|
||||
# CONFIG_REGULATOR_SYR82X is not set
|
||||
# CONFIG_REGULATOR_TPS51632 is not set
|
||||
# CONFIG_REGULATOR_TPS549B22 is not set
|
||||
# CONFIG_REGULATOR_TPS62360 is not set
|
||||
# CONFIG_REGULATOR_TPS65023 is not set
|
||||
# CONFIG_REGULATOR_TPS6507X is not set
|
||||
@ -2311,6 +2339,7 @@ CONFIG_REGULATOR_RK808=y
|
||||
CONFIG_REGULATOR_TPS6586X=y
|
||||
# CONFIG_REGULATOR_XZ3216 is not set
|
||||
CONFIG_CEC_CORE=y
|
||||
CONFIG_CEC_NOTIFIER=y
|
||||
CONFIG_MEDIA_SUPPORT=y
|
||||
|
||||
#
|
||||
@ -2346,15 +2375,15 @@ CONFIG_IR_SHARP_DECODER=y
|
||||
CONFIG_IR_MCE_KBD_DECODER=y
|
||||
CONFIG_IR_XMP_DECODER=y
|
||||
CONFIG_RC_DEVICES=y
|
||||
# CONFIG_RC_ATI_REMOTE is not set
|
||||
# CONFIG_IR_HIX5HD2 is not set
|
||||
# CONFIG_IR_IMON is not set
|
||||
# CONFIG_IR_MCEUSB is not set
|
||||
# CONFIG_IR_REDRAT3 is not set
|
||||
# CONFIG_IR_STREAMZAP is not set
|
||||
# CONFIG_IR_IGORPLUGUSB is not set
|
||||
# CONFIG_IR_IGUANA is not set
|
||||
# CONFIG_IR_TTUSBIR is not set
|
||||
CONFIG_RC_ATI_REMOTE=m
|
||||
CONFIG_IR_HIX5HD2=m
|
||||
CONFIG_IR_IMON=m
|
||||
CONFIG_IR_MCEUSB=m
|
||||
CONFIG_IR_REDRAT3=m
|
||||
CONFIG_IR_STREAMZAP=m
|
||||
CONFIG_IR_IGORPLUGUSB=m
|
||||
CONFIG_IR_IGUANA=m
|
||||
CONFIG_IR_TTUSBIR=m
|
||||
# CONFIG_RC_LOOPBACK is not set
|
||||
CONFIG_IR_GPIO_CIR=y
|
||||
CONFIG_MEDIA_USB_SUPPORT=y
|
||||
@ -2364,6 +2393,7 @@ CONFIG_MEDIA_USB_SUPPORT=y
|
||||
#
|
||||
CONFIG_USB_PULSE8_CEC=y
|
||||
CONFIG_USB_RAINSHADOW_CEC=y
|
||||
# CONFIG_ROCKCHIP_TSP is not set
|
||||
|
||||
#
|
||||
# Supported MMC/SDIO adapters
|
||||
@ -2399,7 +2429,7 @@ CONFIG_DRM_KMS_FB_HELPER=y
|
||||
CONFIG_DRM_FBDEV_EMULATION=y
|
||||
# CONFIG_DRM_LOAD_EDID_FIRMWARE is not set
|
||||
# CONFIG_DRM_SCDC_HELPER is not set
|
||||
CONFIG_DRM_DMA_SYNC=y
|
||||
# CONFIG_DRM_DMA_SYNC is not set
|
||||
|
||||
#
|
||||
# I2C encoder or helper chips
|
||||
@ -2411,13 +2441,14 @@ CONFIG_DRM_DMA_SYNC=y
|
||||
# CONFIG_DRM_VGEM is not set
|
||||
# CONFIG_DRM_EXYNOS is not set
|
||||
CONFIG_DRM_ROCKCHIP=y
|
||||
# CONFIG_ROCKCHIP_DRM_DEBUG is not set
|
||||
# CONFIG_ROCKCHIP_CDN_DP is not set
|
||||
CONFIG_ROCKCHIP_DW_HDMI=y
|
||||
CONFIG_ROCKCHIP_DW_MIPI_DSI=y
|
||||
CONFIG_ROCKCHIP_ANALOGIX_DP=y
|
||||
CONFIG_ROCKCHIP_INNO_HDMI=y
|
||||
CONFIG_ROCKCHIP_LVDS=y
|
||||
# CONFIG_ROCKCHIP_DRM_TVE is not set
|
||||
CONFIG_ROCKCHIP_DRM_TVE=y
|
||||
# CONFIG_ROCKCHIP_RGB is not set
|
||||
# CONFIG_ROCKCHIP_DRM_BACKLIGHT is not set
|
||||
# CONFIG_ROCKCHIP_RK3066_HDMI is not set
|
||||
@ -2444,22 +2475,22 @@ CONFIG_DRM_BRIDGE=y
|
||||
# CONFIG_DRM_PARADE_PS8622 is not set
|
||||
# CONFIG_DRM_RK1000 is not set
|
||||
# CONFIG_DRM_DUMB_VGA_DAC is not set
|
||||
# CONFIG_DRM_LONTIUM_LT8912 is not set
|
||||
CONFIG_DRM_ANALOGIX_DP=y
|
||||
CONFIG_DRM_DW_HDMI=y
|
||||
# CONFIG_DRM_DW_HDMI_AHB_AUDIO is not set
|
||||
CONFIG_DRM_DW_HDMI_I2S_AUDIO=y
|
||||
# CONFIG_DRM_DW_HDMI_CEC is not set
|
||||
CONFIG_DRM_DW_HDMI_CEC=y
|
||||
# CONFIG_DRM_STI is not set
|
||||
# CONFIG_POWERVR_ROGUE_M is not set
|
||||
# CONFIG_MALI400 is not set
|
||||
CONFIG_MALI_DEVFREQ=y
|
||||
CONFIG_MALI_MIDGARD_FOR_ANDROID=y
|
||||
# CONFIG_MALI_MIDGARD_FOR_LINUX is not set
|
||||
CONFIG_MALI_MIDGARD=m
|
||||
# CONFIG_MALI_GATOR_SUPPORT is not set
|
||||
# CONFIG_MALI_MIDGARD_ENABLE_TRACE is not set
|
||||
# CONFIG_MALI_DMA_FENCE is not set
|
||||
CONFIG_MALI_EXPERT=y
|
||||
# CONFIG_MALI_CORESTACK is not set
|
||||
# CONFIG_MALI_PRFCNT_SET_SECONDARY is not set
|
||||
# CONFIG_MALI_PLATFORM_FAKE is not set
|
||||
# CONFIG_MALI_PLATFORM_DEVICETREE is not set
|
||||
@ -2470,8 +2501,11 @@ CONFIG_MALI_PLATFORM_THIRDPARTY_NAME="rk"
|
||||
# CONFIG_MALI_TRACE_TIMELINE is not set
|
||||
# CONFIG_MALI_SYSTEM_TRACE is not set
|
||||
# CONFIG_MALI_GPU_MMU_AARCH64 is not set
|
||||
CONFIG_MALI_PWRSOFT_765=y
|
||||
# CONFIG_MALI_KUTF is not set
|
||||
# CONFIG_MALI_BIFROST_FOR_ANDROID is not set
|
||||
CONFIG_MALI_BIFROST_FOR_LINUX=y
|
||||
# CONFIG_MALI_BIFROST is not set
|
||||
# CONFIG_MALI_PWRSOFT_765 is not set
|
||||
|
||||
#
|
||||
# Frame buffer Devices
|
||||
@ -2568,7 +2602,8 @@ CONFIG_RK_VCODEC=y
|
||||
#
|
||||
# ROCKCHIP_MPP
|
||||
#
|
||||
# CONFIG_ROCKCHIP_MPP_SERVICE is not set
|
||||
CONFIG_ROCKCHIP_MPP_SERVICE=y
|
||||
CONFIG_ROCKCHIP_MPP_DEVICE=y
|
||||
# CONFIG_VGASTATE is not set
|
||||
CONFIG_VIDEOMODE_HELPERS=y
|
||||
CONFIG_HDMI=y
|
||||
@ -2656,13 +2691,19 @@ CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y
|
||||
# CONFIG_SND_SOC_FSL_ESAI is not set
|
||||
# CONFIG_SND_SOC_IMX_AUDMUX is not set
|
||||
CONFIG_SND_SOC_ROCKCHIP=y
|
||||
# CONFIG_SND_SOC_ROCKCHIP_FORCE_SRAM is not set
|
||||
CONFIG_SND_SOC_ROCKCHIP_I2S=y
|
||||
# CONFIG_SND_SOC_ROCKCHIP_I2S_TDM is not set
|
||||
# CONFIG_SND_SOC_ROCKCHIP_MULTI_DAIS is not set
|
||||
# CONFIG_SND_SOC_ROCKCHIP_PDM is not set
|
||||
CONFIG_SND_SOC_ROCKCHIP_SPDIF=y
|
||||
# CONFIG_SND_SOC_ROCKCHIP_SPDIFRX is not set
|
||||
# CONFIG_SND_SOC_ROCKCHIP_VAD is not set
|
||||
# CONFIG_SND_SOC_ROCKCHIP_DA7219 is not set
|
||||
# CONFIG_SND_SOC_ROCKCHIP_HDMI_ANALOG is not set
|
||||
# CONFIG_SND_SOC_ROCKCHIP_HDMI_DP is not set
|
||||
CONFIG_SND_SOC_ROCKCHIP_MAX98090=y
|
||||
# CONFIG_SND_SOC_ROCKCHIP_MULTICODECS is not set
|
||||
CONFIG_SND_SOC_ROCKCHIP_RT5645=y
|
||||
# CONFIG_SND_SOC_ROCKCHIP_RT5651_TC358749 is not set
|
||||
# CONFIG_SND_SOC_ROCKCHIP_CDNDP is not set
|
||||
@ -2698,6 +2739,7 @@ CONFIG_SND_SOC_I2C_AND_SPI=y
|
||||
# CONFIG_SND_SOC_CS4349 is not set
|
||||
# CONFIG_SND_SOC_CX2072X is not set
|
||||
# CONFIG_SND_SOC_CX20810 is not set
|
||||
# CONFIG_SND_SOC_DUMMY_CODEC is not set
|
||||
# CONFIG_SND_SOC_BT_SCO is not set
|
||||
# CONFIG_SND_SOC_ES8316 is not set
|
||||
CONFIG_SND_SOC_ES8323=y
|
||||
@ -2715,6 +2757,7 @@ CONFIG_SND_SOC_MAX98090=y
|
||||
# CONFIG_SND_SOC_PCM512x_SPI is not set
|
||||
# CONFIG_SND_SOC_RK312X is not set
|
||||
# CONFIG_SND_SOC_RK3228 is not set
|
||||
# CONFIG_SND_SOC_RK3308 is not set
|
||||
# CONFIG_SND_SOC_RK3328 is not set
|
||||
# CONFIG_SND_SOC_RK817 is not set
|
||||
CONFIG_SND_SOC_RL6231=y
|
||||
@ -3061,7 +3104,6 @@ CONFIG_USB_EZUSB_FX2=y
|
||||
# CONFIG_USB_PHY is not set
|
||||
# CONFIG_USB_OTG_WAKELOCK is not set
|
||||
# CONFIG_NOP_USB_XCEIV is not set
|
||||
# CONFIG_AM335X_PHY_USB is not set
|
||||
# CONFIG_USB_GPIO_VBUS is not set
|
||||
# CONFIG_USB_ISP1301 is not set
|
||||
# CONFIG_USB_ULPI is not set
|
||||
@ -3255,6 +3297,7 @@ CONFIG_RTC_INTF_DEV=y
|
||||
# CONFIG_RTC_DRV_DS1374 is not set
|
||||
# CONFIG_RTC_DRV_DS1672 is not set
|
||||
# CONFIG_RTC_DRV_DS3232 is not set
|
||||
# CONFIG_RTC_DRV_FAKE is not set
|
||||
CONFIG_RTC_DRV_HYM8563=y
|
||||
# CONFIG_RTC_DRV_MAX6900 is not set
|
||||
CONFIG_RTC_DRV_RK808=y
|
||||
@ -3518,15 +3561,11 @@ CONFIG_COMMON_CLK_RK808=y
|
||||
#
|
||||
CONFIG_CLKSRC_OF=y
|
||||
CONFIG_CLKSRC_PROBE=y
|
||||
CONFIG_DW_APB_TIMER=y
|
||||
CONFIG_DW_APB_TIMER_OF=y
|
||||
CONFIG_ROCKCHIP_TIMER=y
|
||||
CONFIG_ARM_ARCH_TIMER=y
|
||||
CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y
|
||||
CONFIG_ARM_ARCH_TIMER_VCT_ACCESS=y
|
||||
CONFIG_ARM_GLOBAL_TIMER=y
|
||||
# CONFIG_ARM_TIMER_SP804 is not set
|
||||
CONFIG_CLKSRC_ARM_GLOBAL_TIMER_SCHED_CLOCK=y
|
||||
# CONFIG_ATMEL_PIT is not set
|
||||
# CONFIG_SH_TIMER_CMT is not set
|
||||
# CONFIG_SH_TIMER_MTU2 is not set
|
||||
@ -3560,13 +3599,31 @@ CONFIG_ROCKCHIP_IOMMU=y
|
||||
# SOC (System On Chip) specific Drivers
|
||||
#
|
||||
# CONFIG_SOC_BRCMSTB is not set
|
||||
|
||||
#
|
||||
# CPU selection
|
||||
#
|
||||
# CONFIG_CPU_RK312X is not set
|
||||
# CONFIG_CPU_RK3036 is not set
|
||||
# CONFIG_CPU_RK30XX is not set
|
||||
# CONFIG_CPU_RK3188 is not set
|
||||
CONFIG_CPU_RK3288=y
|
||||
# CONFIG_CPU_RK322X is not set
|
||||
# CONFIG_CPU_RV110X is not set
|
||||
# CONFIG_CPU_PX30 is not set
|
||||
# CONFIG_CPU_RK3308 is not set
|
||||
# CONFIG_CPU_RK3328 is not set
|
||||
# CONFIG_CPU_RK3366 is not set
|
||||
# CONFIG_CPU_RK3368 is not set
|
||||
# CONFIG_CPU_RK3399 is not set
|
||||
CONFIG_ANDROID_VERSION=0x07010000
|
||||
CONFIG_ROCKCHIP_CPUINFO=y
|
||||
# CONFIG_ROCKCHIP_DEVICEINFO is not set
|
||||
# CONFIG_ROCKCHIP_PM_TEST is not set
|
||||
CONFIG_ROCKCHIP_GRF=y
|
||||
CONFIG_ROCKCHIP_PM_DOMAINS=y
|
||||
# CONFIG_ROCKCHIP_PVTM is not set
|
||||
CONFIG_ROCKCHIP_PVTM=y
|
||||
CONFIG_ROCKCHIP_SUSPEND_MODE=y
|
||||
# CONFIG_SUNXI_SRAM is not set
|
||||
# CONFIG_SOC_TI is not set
|
||||
CONFIG_PM_DEVFREQ=y
|
||||
@ -3582,6 +3639,7 @@ CONFIG_DEVFREQ_GOV_USERSPACE=y
|
||||
#
|
||||
# DEVFREQ Drivers
|
||||
#
|
||||
CONFIG_ARM_ROCKCHIP_BUS_DEVFREQ=y
|
||||
CONFIG_ARM_ROCKCHIP_DMC_DEVFREQ=y
|
||||
CONFIG_PM_DEVFREQ_EVENT=y
|
||||
CONFIG_DEVFREQ_EVENT_ROCKCHIP_DFI=y
|
||||
@ -3745,6 +3803,7 @@ CONFIG_SENSORS_TSL2563=y
|
||||
# CONFIG_TSL4531 is not set
|
||||
# CONFIG_US5182D is not set
|
||||
# CONFIG_VCNL4000 is not set
|
||||
# CONFIG_VL6180 is not set
|
||||
|
||||
#
|
||||
# Magnetometer sensors
|
||||
@ -3804,8 +3863,10 @@ CONFIG_PWM=y
|
||||
CONFIG_PWM_SYSFS=y
|
||||
# CONFIG_PWM_CROS_EC is not set
|
||||
# CONFIG_PWM_FSL_FTM is not set
|
||||
CONFIG_PWM_GPIO=y
|
||||
# CONFIG_PWM_PCA9685 is not set
|
||||
CONFIG_PWM_ROCKCHIP=y
|
||||
# CONFIG_PWM_ROCKCHIP_I2S is not set
|
||||
CONFIG_IRQCHIP=y
|
||||
CONFIG_ARM_GIC=y
|
||||
# CONFIG_IPACK_BUS is not set
|
||||
@ -3824,7 +3885,7 @@ CONFIG_GENERIC_PHY=y
|
||||
CONFIG_PHY_ROCKCHIP_USB=y
|
||||
# CONFIG_PHY_ROCKCHIP_INNO_USB2 is not set
|
||||
# CONFIG_PHY_ROCKCHIP_INNO_USB3 is not set
|
||||
# CONFIG_PHY_ROCKCHIP_EMMC is not set
|
||||
CONFIG_PHY_ROCKCHIP_EMMC=y
|
||||
CONFIG_PHY_ROCKCHIP_DP=y
|
||||
# CONFIG_PHY_ROCKCHIP_INNO_MIPI_DPHY is not set
|
||||
# CONFIG_PHY_ROCKCHIP_INNO_HDMI_PHY is not set
|
||||
@ -3846,6 +3907,7 @@ CONFIG_ANDROID=y
|
||||
# CONFIG_ANDROID_BINDER_IPC is not set
|
||||
CONFIG_NVMEM=y
|
||||
CONFIG_ROCKCHIP_EFUSE=y
|
||||
CONFIG_ROCKCHIP_OTP=y
|
||||
# CONFIG_STM is not set
|
||||
# CONFIG_INTEL_TH is not set
|
||||
|
||||
@ -3854,6 +3916,7 @@ CONFIG_ROCKCHIP_EFUSE=y
|
||||
#
|
||||
# CONFIG_FPGA is not set
|
||||
# CONFIG_TEE is not set
|
||||
# CONFIG_RK_FLASH is not set
|
||||
# CONFIG_RK_NAND is not set
|
||||
|
||||
#
|
||||
@ -3866,7 +3929,7 @@ CONFIG_ROCKCHIP_EFUSE=y
|
||||
#
|
||||
# CONFIG_FIRMWARE_MEMMAP is not set
|
||||
CONFIG_HAVE_ARM_SMCCC=y
|
||||
# CONFIG_ROCKCHIP_SIP is not set
|
||||
CONFIG_ROCKCHIP_SIP=y
|
||||
|
||||
#
|
||||
# File systems
|
||||
@ -3964,6 +4027,7 @@ CONFIG_PROC_FS=y
|
||||
CONFIG_PROC_SYSCTL=y
|
||||
CONFIG_PROC_PAGE_MONITOR=y
|
||||
# CONFIG_PROC_CHILDREN is not set
|
||||
CONFIG_PROC_UID=y
|
||||
CONFIG_KERNFS=y
|
||||
CONFIG_SYSFS=y
|
||||
CONFIG_TMPFS=y
|
||||
@ -3993,6 +4057,7 @@ CONFIG_SQUASHFS_ZLIB=y
|
||||
CONFIG_SQUASHFS_LZ4=y
|
||||
CONFIG_SQUASHFS_LZO=y
|
||||
CONFIG_SQUASHFS_XZ=y
|
||||
CONFIG_SQUASHFS_ZSTD=y
|
||||
# CONFIG_SQUASHFS_4K_DEVBLK_SIZE is not set
|
||||
# CONFIG_SQUASHFS_EMBEDDED is not set
|
||||
CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
|
||||
@ -4415,6 +4480,7 @@ CONFIG_CRYPTO_DES=y
|
||||
# CONFIG_CRYPTO_CHACHA20 is not set
|
||||
# CONFIG_CRYPTO_SEED is not set
|
||||
# CONFIG_CRYPTO_SERPENT is not set
|
||||
# CONFIG_CRYPTO_SPECK is not set
|
||||
# CONFIG_CRYPTO_TEA is not set
|
||||
CONFIG_CRYPTO_TWOFISH=y
|
||||
CONFIG_CRYPTO_TWOFISH_COMMON=y
|
||||
@ -4446,6 +4512,7 @@ CONFIG_CRYPTO_USER_API_SKCIPHER=y
|
||||
# CONFIG_CRYPTO_USER_API_AEAD is not set
|
||||
CONFIG_CRYPTO_HASH_INFO=y
|
||||
CONFIG_CRYPTO_HW=y
|
||||
# CONFIG_CRYPTO_DEV_ROCKCHIP is not set
|
||||
CONFIG_ASYMMETRIC_KEY_TYPE=y
|
||||
CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=y
|
||||
CONFIG_PUBLIC_KEY_ALGO_RSA=y
|
||||
@ -4487,13 +4554,16 @@ CONFIG_CRC32_SLICEBY8=y
|
||||
CONFIG_CRC7=y
|
||||
CONFIG_LIBCRC32C=y
|
||||
# CONFIG_CRC8 is not set
|
||||
CONFIG_XXHASH=y
|
||||
# CONFIG_AUDIT_ARCH_COMPAT_GENERIC is not set
|
||||
# CONFIG_RANDOM32_SELFTEST is not set
|
||||
CONFIG_ZLIB_INFLATE=y
|
||||
CONFIG_ZLIB_DEFLATE=m
|
||||
CONFIG_LZO_COMPRESS=y
|
||||
CONFIG_LZO_COMPRESS=m
|
||||
CONFIG_LZO_DECOMPRESS=y
|
||||
CONFIG_LZ4_COMPRESS=m
|
||||
CONFIG_LZ4_DECOMPRESS=y
|
||||
CONFIG_ZSTD_DECOMPRESS=y
|
||||
CONFIG_XZ_DEC=y
|
||||
# CONFIG_XZ_DEC_X86 is not set
|
||||
# CONFIG_XZ_DEC_POWERPC is not set
|
||||
|
@ -1,6 +1,6 @@
|
||||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# Linux/arm64 4.4.114 Kernel Configuration
|
||||
# Linux/arm64 4.4.143 Kernel Configuration
|
||||
#
|
||||
CONFIG_ARM64=y
|
||||
CONFIG_64BIT=y
|
||||
@ -12,8 +12,8 @@ CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=11
|
||||
CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=16
|
||||
CONFIG_ARM64_PAGE_SHIFT=12
|
||||
CONFIG_ARM64_CONT_SHIFT=4
|
||||
CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000
|
||||
CONFIG_STACKTRACE_SUPPORT=y
|
||||
CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000
|
||||
CONFIG_LOCKDEP_SUPPORT=y
|
||||
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
|
||||
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
|
||||
@ -157,6 +157,7 @@ CONFIG_RD_GZIP=y
|
||||
CONFIG_RD_XZ=y
|
||||
# CONFIG_RD_LZO is not set
|
||||
# CONFIG_RD_LZ4 is not set
|
||||
# CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE is not set
|
||||
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
||||
CONFIG_SYSCTL=y
|
||||
CONFIG_ANON_INODES=y
|
||||
@ -392,6 +393,7 @@ CONFIG_ARM64_ERRATUM_819472=y
|
||||
# CONFIG_ARM64_ERRATUM_832075 is not set
|
||||
CONFIG_ARM64_ERRATUM_845719=y
|
||||
CONFIG_ARM64_ERRATUM_843419=y
|
||||
# CONFIG_ARM64_ERRATUM_1024718 is not set
|
||||
# CONFIG_CAVIUM_ERRATUM_22375 is not set
|
||||
# CONFIG_CAVIUM_ERRATUM_23154 is not set
|
||||
# CONFIG_CAVIUM_ERRATUM_27456 is not set
|
||||
@ -434,9 +436,11 @@ CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
|
||||
CONFIG_SPARSEMEM_VMEMMAP=y
|
||||
CONFIG_HAVE_MEMBLOCK=y
|
||||
CONFIG_NO_BOOTMEM=y
|
||||
CONFIG_MEMORY_ISOLATION=y
|
||||
# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# CONFIG_COMPACTION is not set
|
||||
CONFIG_MIGRATION=y
|
||||
CONFIG_PHYS_ADDR_T_64BIT=y
|
||||
CONFIG_ZONE_DMA_FLAG=1
|
||||
CONFIG_BOUNCE=y
|
||||
@ -445,11 +449,14 @@ CONFIG_DEFAULT_MMAP_MIN_ADDR=32768
|
||||
# CONFIG_TRANSPARENT_HUGEPAGE is not set
|
||||
# CONFIG_CLEANCACHE is not set
|
||||
# CONFIG_FRONTSWAP is not set
|
||||
# CONFIG_CMA is not set
|
||||
CONFIG_CMA=y
|
||||
# CONFIG_CMA_DEBUG is not set
|
||||
CONFIG_CMA_DEBUGFS=y
|
||||
CONFIG_CMA_AREAS=7
|
||||
# CONFIG_ZPOOL is not set
|
||||
# CONFIG_ZBUD is not set
|
||||
CONFIG_ZSMALLOC=y
|
||||
# CONFIG_PGTABLE_MAPPING is not set
|
||||
CONFIG_ZSMALLOC=m
|
||||
CONFIG_PGTABLE_MAPPING=y
|
||||
# CONFIG_ZSMALLOC_STAT is not set
|
||||
CONFIG_GENERIC_EARLY_IOREMAP=y
|
||||
# CONFIG_IDLE_PAGE_TRACKING is not set
|
||||
@ -475,7 +482,7 @@ CONFIG_ARM64_MODULE_CMODEL_LARGE=y
|
||||
#
|
||||
# Boot options
|
||||
#
|
||||
CONFIG_CMDLINE="root=/dev/ram0 rdinit=/init usbcore.autosuspend=-1"
|
||||
CONFIG_CMDLINE="usbcore.autosuspend=-1"
|
||||
# CONFIG_CMDLINE_FROM_BOOTLOADER is not set
|
||||
CONFIG_CMDLINE_EXTEND=y
|
||||
# CONFIG_CMDLINE_FORCE is not set
|
||||
@ -549,13 +556,13 @@ CONFIG_CPU_FREQ=y
|
||||
CONFIG_CPU_FREQ_GOV_COMMON=y
|
||||
CONFIG_CPU_FREQ_STAT=y
|
||||
# CONFIG_CPU_FREQ_STAT_DETAILS is not set
|
||||
CONFIG_CPU_FREQ_TIMES=y
|
||||
CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
|
||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
|
||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
|
||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
|
||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
|
||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_INTERACTIVE is not set
|
||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_SCHED is not set
|
||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL is not set
|
||||
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
|
||||
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
|
||||
@ -934,7 +941,9 @@ CONFIG_RFKILL_GPIO=y
|
||||
# CONFIG_CEPH_LIB is not set
|
||||
# CONFIG_NFC is not set
|
||||
# CONFIG_LWTUNNEL is not set
|
||||
CONFIG_DST_CACHE=y
|
||||
CONFIG_HAVE_BPF_JIT=y
|
||||
CONFIG_HAVE_EBPF_JIT=y
|
||||
|
||||
#
|
||||
# Device Drivers
|
||||
@ -970,6 +979,17 @@ CONFIG_REGMAP_MMIO=y
|
||||
CONFIG_REGMAP_IRQ=y
|
||||
CONFIG_DMA_SHARED_BUFFER=y
|
||||
# CONFIG_FENCE_TRACE is not set
|
||||
CONFIG_DMA_CMA=y
|
||||
|
||||
#
|
||||
# Default contiguous memory area size:
|
||||
#
|
||||
CONFIG_CMA_SIZE_MBYTES=64
|
||||
CONFIG_CMA_SIZE_SEL_MBYTES=y
|
||||
# CONFIG_CMA_SIZE_SEL_PERCENTAGE is not set
|
||||
# CONFIG_CMA_SIZE_SEL_MIN is not set
|
||||
# CONFIG_CMA_SIZE_SEL_MAX is not set
|
||||
CONFIG_CMA_ALIGNMENT=8
|
||||
|
||||
#
|
||||
# Bus devices
|
||||
@ -1074,8 +1094,8 @@ CONFIG_OF_RESERVED_MEM=y
|
||||
CONFIG_BLK_DEV=y
|
||||
# CONFIG_BLK_DEV_NULL_BLK is not set
|
||||
# CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set
|
||||
CONFIG_ZRAM=y
|
||||
# CONFIG_ZRAM_LZ4_COMPRESS is not set
|
||||
CONFIG_ZRAM=m
|
||||
CONFIG_ZRAM_LZ4_COMPRESS=y
|
||||
# CONFIG_BLK_CPQ_CISS_DA is not set
|
||||
# CONFIG_BLK_DEV_DAC960 is not set
|
||||
# CONFIG_BLK_DEV_UMEM is not set
|
||||
@ -1538,6 +1558,7 @@ CONFIG_WL_ROCKCHIP=y
|
||||
CONFIG_WIFI_BUILD_MODULE=y
|
||||
# CONFIG_WIFI_LOAD_DRIVER_WHEN_KERNEL_BOOTUP is not set
|
||||
CONFIG_AP6XXX=m
|
||||
# CONFIG_CYW_BCMDHD is not set
|
||||
CONFIG_RTL_WIRELESS_SOLUTION=y
|
||||
# CONFIG_RTL8188EU is not set
|
||||
# CONFIG_RTL8188FU is not set
|
||||
@ -1548,6 +1569,12 @@ CONFIG_RTL8723BS=m
|
||||
# CONFIG_RTL8723CS is not set
|
||||
# CONFIG_RTL8723DS is not set
|
||||
# CONFIG_RTL8822BE is not set
|
||||
# CONFIG_MVL88W8977 is not set
|
||||
|
||||
#
|
||||
# SouthSV 6XXX WLAN support
|
||||
#
|
||||
# CONFIG_SSV6051 is not set
|
||||
# CONFIG_WL_TI is not set
|
||||
CONFIG_ZD1211RW=m
|
||||
# CONFIG_ZD1211RW_DEBUG is not set
|
||||
@ -1683,6 +1710,7 @@ CONFIG_TOUCHSCREEN_ATMEL_MXT=y
|
||||
# CONFIG_TOUCHSCREEN_FT6236 is not set
|
||||
# CONFIG_TOUCHSCREEN_FUJITSU is not set
|
||||
# CONFIG_TOUCHSCREEN_GOODIX is not set
|
||||
# CONFIG_TOUCHSCREEN_GSLX680A is not set
|
||||
# CONFIG_TOUCHSCREEN_GSLX680_D708 is not set
|
||||
# CONFIG_TOUCHSCREEN_GSLX680_PAD is not set
|
||||
# CONFIG_TOUCHSCREEN_GSLX680_VR is not set
|
||||
@ -2026,6 +2054,7 @@ CONFIG_GENERIC_PINCONF=y
|
||||
# CONFIG_PINCTRL_AMD is not set
|
||||
CONFIG_PINCTRL_ROCKCHIP=y
|
||||
# CONFIG_PINCTRL_SINGLE is not set
|
||||
CONFIG_PINCTRL_RK805=y
|
||||
CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
|
||||
CONFIG_ARCH_REQUIRE_GPIOLIB=y
|
||||
CONFIG_GPIOLIB=y
|
||||
@ -2116,6 +2145,7 @@ CONFIG_CHARGER_BQ24735=y
|
||||
# CONFIG_CHARGER_BQ25890 is not set
|
||||
# CONFIG_CHARGER_SMB347 is not set
|
||||
# CONFIG_CHARGER_SY6982C is not set
|
||||
# CONFIG_CHARGER_UNIVERSAL is not set
|
||||
# CONFIG_BATTERY_GAUGE_LTC2941 is not set
|
||||
# CONFIG_BATTERY_EC is not set
|
||||
# CONFIG_BATTERY_CW2015 is not set
|
||||
@ -2458,6 +2488,7 @@ CONFIG_REGULATOR_RK808=y
|
||||
CONFIG_REGULATOR_RK818=y
|
||||
# CONFIG_REGULATOR_SYR82X is not set
|
||||
# CONFIG_REGULATOR_TPS51632 is not set
|
||||
# CONFIG_REGULATOR_TPS549B22 is not set
|
||||
# CONFIG_REGULATOR_TPS62360 is not set
|
||||
# CONFIG_REGULATOR_TPS65023 is not set
|
||||
# CONFIG_REGULATOR_TPS6507X is not set
|
||||
@ -2501,15 +2532,15 @@ CONFIG_IR_SHARP_DECODER=y
|
||||
CONFIG_IR_MCE_KBD_DECODER=y
|
||||
CONFIG_IR_XMP_DECODER=y
|
||||
CONFIG_RC_DEVICES=y
|
||||
# CONFIG_RC_ATI_REMOTE is not set
|
||||
# CONFIG_IR_HIX5HD2 is not set
|
||||
# CONFIG_IR_IMON is not set
|
||||
# CONFIG_IR_MCEUSB is not set
|
||||
# CONFIG_IR_REDRAT3 is not set
|
||||
# CONFIG_IR_STREAMZAP is not set
|
||||
# CONFIG_IR_IGORPLUGUSB is not set
|
||||
# CONFIG_IR_IGUANA is not set
|
||||
# CONFIG_IR_TTUSBIR is not set
|
||||
CONFIG_RC_ATI_REMOTE=m
|
||||
CONFIG_IR_HIX5HD2=m
|
||||
CONFIG_IR_IMON=m
|
||||
CONFIG_IR_MCEUSB=m
|
||||
CONFIG_IR_REDRAT3=m
|
||||
CONFIG_IR_STREAMZAP=m
|
||||
CONFIG_IR_IGORPLUGUSB=m
|
||||
CONFIG_IR_IGUANA=m
|
||||
CONFIG_IR_TTUSBIR=m
|
||||
# CONFIG_RC_LOOPBACK is not set
|
||||
CONFIG_IR_GPIO_CIR=y
|
||||
CONFIG_MEDIA_USB_SUPPORT=y
|
||||
@ -2520,6 +2551,7 @@ CONFIG_MEDIA_USB_SUPPORT=y
|
||||
CONFIG_USB_PULSE8_CEC=y
|
||||
CONFIG_USB_RAINSHADOW_CEC=y
|
||||
# CONFIG_MEDIA_PCI_SUPPORT is not set
|
||||
# CONFIG_ROCKCHIP_TSP is not set
|
||||
|
||||
#
|
||||
# Supported MMC/SDIO adapters
|
||||
@ -2555,7 +2587,7 @@ CONFIG_DRM_KMS_FB_HELPER=y
|
||||
CONFIG_DRM_FBDEV_EMULATION=y
|
||||
# CONFIG_DRM_LOAD_EDID_FIRMWARE is not set
|
||||
# CONFIG_DRM_SCDC_HELPER is not set
|
||||
CONFIG_DRM_DMA_SYNC=y
|
||||
# CONFIG_DRM_DMA_SYNC is not set
|
||||
|
||||
#
|
||||
# I2C encoder or helper chips
|
||||
@ -2574,6 +2606,7 @@ CONFIG_DRM_DMA_SYNC=y
|
||||
# CONFIG_DRM_SAVAGE is not set
|
||||
# CONFIG_DRM_VGEM is not set
|
||||
CONFIG_DRM_ROCKCHIP=y
|
||||
# CONFIG_ROCKCHIP_DRM_DEBUG is not set
|
||||
# CONFIG_ROCKCHIP_CDN_DP is not set
|
||||
CONFIG_ROCKCHIP_DW_HDMI=y
|
||||
CONFIG_ROCKCHIP_DW_MIPI_DSI=y
|
||||
@ -2609,6 +2642,7 @@ CONFIG_DRM_BRIDGE=y
|
||||
# CONFIG_DRM_PARADE_PS8622 is not set
|
||||
# CONFIG_DRM_RK1000 is not set
|
||||
# CONFIG_DRM_DUMB_VGA_DAC is not set
|
||||
# CONFIG_DRM_LONTIUM_LT8912 is not set
|
||||
CONFIG_DRM_ANALOGIX_DP=y
|
||||
CONFIG_DRM_DW_HDMI=y
|
||||
# CONFIG_DRM_DW_HDMI_AHB_AUDIO is not set
|
||||
@ -2627,11 +2661,11 @@ CONFIG_MALI_DMA_BUF_MAP_ON_ATTACH=y
|
||||
CONFIG_MALI_DT=y
|
||||
CONFIG_MALI_DEVFREQ=y
|
||||
# CONFIG_MALI_QUIET is not set
|
||||
CONFIG_MALI_MIDGARD_FOR_ANDROID=y
|
||||
# CONFIG_MALI_MIDGARD_FOR_LINUX is not set
|
||||
# CONFIG_MALI_MIDGARD is not set
|
||||
# CONFIG_MALI_KUTF is not set
|
||||
# CONFIG_MALI_BIFROST_FOR_ANDROID is not set
|
||||
CONFIG_MALI_BIFROST_FOR_LINUX=y
|
||||
# CONFIG_MALI_BIFROST is not set
|
||||
# CONFIG_MALI_PWRSOFT_765 is not set
|
||||
|
||||
#
|
||||
# Frame buffer Devices
|
||||
@ -2842,13 +2876,19 @@ CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y
|
||||
# CONFIG_SND_SOC_FSL_ESAI is not set
|
||||
# CONFIG_SND_SOC_IMX_AUDMUX is not set
|
||||
CONFIG_SND_SOC_ROCKCHIP=y
|
||||
# CONFIG_SND_SOC_ROCKCHIP_FORCE_SRAM is not set
|
||||
CONFIG_SND_SOC_ROCKCHIP_I2S=y
|
||||
# CONFIG_SND_SOC_ROCKCHIP_I2S_TDM is not set
|
||||
# CONFIG_SND_SOC_ROCKCHIP_MULTI_DAIS is not set
|
||||
# CONFIG_SND_SOC_ROCKCHIP_PDM is not set
|
||||
CONFIG_SND_SOC_ROCKCHIP_SPDIF=y
|
||||
# CONFIG_SND_SOC_ROCKCHIP_SPDIFRX is not set
|
||||
# CONFIG_SND_SOC_ROCKCHIP_VAD is not set
|
||||
# CONFIG_SND_SOC_ROCKCHIP_DA7219 is not set
|
||||
# CONFIG_SND_SOC_ROCKCHIP_HDMI_ANALOG is not set
|
||||
# CONFIG_SND_SOC_ROCKCHIP_HDMI_DP is not set
|
||||
CONFIG_SND_SOC_ROCKCHIP_MAX98090=y
|
||||
# CONFIG_SND_SOC_ROCKCHIP_MULTICODECS is not set
|
||||
CONFIG_SND_SOC_ROCKCHIP_RT5645=y
|
||||
# CONFIG_SND_SOC_ROCKCHIP_RT5651_TC358749 is not set
|
||||
# CONFIG_SND_SOC_ROCKCHIP_CDNDP is not set
|
||||
@ -2884,6 +2924,7 @@ CONFIG_SND_SOC_I2C_AND_SPI=y
|
||||
# CONFIG_SND_SOC_CS4349 is not set
|
||||
# CONFIG_SND_SOC_CX2072X is not set
|
||||
# CONFIG_SND_SOC_CX20810 is not set
|
||||
# CONFIG_SND_SOC_DUMMY_CODEC is not set
|
||||
# CONFIG_SND_SOC_BT_SCO is not set
|
||||
CONFIG_SND_SOC_ES8316=y
|
||||
# CONFIG_SND_SOC_ES8323 is not set
|
||||
@ -2901,6 +2942,7 @@ CONFIG_SND_SOC_MAX98090=y
|
||||
# CONFIG_SND_SOC_PCM512x_SPI is not set
|
||||
# CONFIG_SND_SOC_RK312X is not set
|
||||
# CONFIG_SND_SOC_RK3228 is not set
|
||||
# CONFIG_SND_SOC_RK3308 is not set
|
||||
CONFIG_SND_SOC_RK3328=y
|
||||
# CONFIG_SND_SOC_RK817 is not set
|
||||
CONFIG_SND_SOC_RL6231=y
|
||||
@ -3471,6 +3513,7 @@ CONFIG_RTC_INTF_DEV=y
|
||||
# CONFIG_RTC_DRV_DS1374 is not set
|
||||
# CONFIG_RTC_DRV_DS1672 is not set
|
||||
# CONFIG_RTC_DRV_DS3232 is not set
|
||||
# CONFIG_RTC_DRV_FAKE is not set
|
||||
CONFIG_RTC_DRV_HYM8563=y
|
||||
# CONFIG_RTC_DRV_MAX6900 is not set
|
||||
CONFIG_RTC_DRV_RK808=y
|
||||
@ -3694,6 +3737,7 @@ CONFIG_TSL2583=y
|
||||
# CONFIG_ANDROID_TIMED_OUTPUT is not set
|
||||
# CONFIG_ANDROID_LOW_MEMORY_KILLER is not set
|
||||
# CONFIG_SYNC is not set
|
||||
# CONFIG_ANDROID_VSOC is not set
|
||||
# CONFIG_ION is not set
|
||||
# CONFIG_FIQ_DEBUGGER is not set
|
||||
# CONFIG_FIQ_WATCHDOG is not set
|
||||
@ -3729,7 +3773,7 @@ CONFIG_COMMON_CLK_RK808=y
|
||||
# CONFIG_COMMON_CLK_SI570 is not set
|
||||
# CONFIG_COMMON_CLK_CDCE925 is not set
|
||||
# CONFIG_CLK_QORIQ is not set
|
||||
CONFIG_COMMON_CLK_XGENE=y
|
||||
# CONFIG_COMMON_CLK_XGENE is not set
|
||||
# CONFIG_COMMON_CLK_PWM is not set
|
||||
# CONFIG_COMMON_CLK_PXA is not set
|
||||
# CONFIG_COMMON_CLK_CDCE706 is not set
|
||||
@ -3746,7 +3790,7 @@ CONFIG_CLKSRC_PROBE=y
|
||||
CONFIG_ROCKCHIP_TIMER=y
|
||||
CONFIG_ARM_ARCH_TIMER=y
|
||||
CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y
|
||||
# CONFIG_ARM_ARCH_TIMER_VCT_ACCESS is not set
|
||||
CONFIG_ARM_ARCH_TIMER_VCT_ACCESS=y
|
||||
# CONFIG_ARM_TIMER_SP804 is not set
|
||||
# CONFIG_ATMEL_PIT is not set
|
||||
# CONFIG_SH_TIMER_CMT is not set
|
||||
@ -3786,13 +3830,23 @@ CONFIG_ROCKCHIP_IOMMU=y
|
||||
#
|
||||
# SOC (System On Chip) specific Drivers
|
||||
#
|
||||
|
||||
#
|
||||
# CPU selection
|
||||
#
|
||||
# CONFIG_CPU_PX30 is not set
|
||||
# CONFIG_CPU_RK3308 is not set
|
||||
CONFIG_CPU_RK3328=y
|
||||
# CONFIG_CPU_RK3366 is not set
|
||||
# CONFIG_CPU_RK3368 is not set
|
||||
# CONFIG_CPU_RK3399 is not set
|
||||
CONFIG_ANDROID_VERSION=0x07010000
|
||||
CONFIG_ROCKCHIP_CPUINFO=y
|
||||
# CONFIG_ROCKCHIP_DEVICEINFO is not set
|
||||
# CONFIG_ROCKCHIP_PM_TEST is not set
|
||||
CONFIG_ROCKCHIP_GRF=y
|
||||
CONFIG_ROCKCHIP_PM_DOMAINS=y
|
||||
# CONFIG_ROCKCHIP_PVTM is not set
|
||||
CONFIG_ROCKCHIP_PVTM=y
|
||||
CONFIG_ROCKCHIP_SUSPEND_MODE=y
|
||||
# CONFIG_SUNXI_SRAM is not set
|
||||
# CONFIG_SOC_TI is not set
|
||||
@ -3809,6 +3863,7 @@ CONFIG_DEVFREQ_GOV_USERSPACE=y
|
||||
#
|
||||
# DEVFREQ Drivers
|
||||
#
|
||||
CONFIG_ARM_ROCKCHIP_BUS_DEVFREQ=y
|
||||
CONFIG_ARM_ROCKCHIP_DMC_DEVFREQ=y
|
||||
CONFIG_PM_DEVFREQ_EVENT=y
|
||||
CONFIG_DEVFREQ_EVENT_ROCKCHIP_DFI=y
|
||||
@ -3981,6 +4036,7 @@ CONFIG_SENSORS_TSL2563=y
|
||||
# CONFIG_TSL4531 is not set
|
||||
# CONFIG_US5182D is not set
|
||||
# CONFIG_VCNL4000 is not set
|
||||
# CONFIG_VL6180 is not set
|
||||
|
||||
#
|
||||
# Magnetometer sensors
|
||||
@ -4042,8 +4098,10 @@ CONFIG_PWM=y
|
||||
CONFIG_PWM_SYSFS=y
|
||||
# CONFIG_PWM_CROS_EC is not set
|
||||
# CONFIG_PWM_FSL_FTM is not set
|
||||
CONFIG_PWM_GPIO=y
|
||||
# CONFIG_PWM_PCA9685 is not set
|
||||
CONFIG_PWM_ROCKCHIP=y
|
||||
# CONFIG_PWM_ROCKCHIP_I2S is not set
|
||||
CONFIG_IRQCHIP=y
|
||||
CONFIG_ARM_GIC=y
|
||||
CONFIG_ARM_GIC_V2M=y
|
||||
@ -4091,6 +4149,7 @@ CONFIG_ANDROID=y
|
||||
# CONFIG_LIBNVDIMM is not set
|
||||
CONFIG_NVMEM=y
|
||||
CONFIG_ROCKCHIP_EFUSE=y
|
||||
CONFIG_ROCKCHIP_OTP=y
|
||||
# CONFIG_STM is not set
|
||||
# CONFIG_INTEL_TH is not set
|
||||
|
||||
@ -4099,6 +4158,7 @@ CONFIG_ROCKCHIP_EFUSE=y
|
||||
#
|
||||
# CONFIG_FPGA is not set
|
||||
# CONFIG_TEE is not set
|
||||
# CONFIG_RK_FLASH is not set
|
||||
# CONFIG_RK_NAND is not set
|
||||
|
||||
#
|
||||
@ -4213,6 +4273,7 @@ CONFIG_PROC_FS=y
|
||||
CONFIG_PROC_SYSCTL=y
|
||||
CONFIG_PROC_PAGE_MONITOR=y
|
||||
# CONFIG_PROC_CHILDREN is not set
|
||||
CONFIG_PROC_UID=y
|
||||
CONFIG_KERNFS=y
|
||||
CONFIG_SYSFS=y
|
||||
CONFIG_TMPFS=y
|
||||
@ -4244,6 +4305,7 @@ CONFIG_SQUASHFS_ZLIB=y
|
||||
CONFIG_SQUASHFS_LZ4=y
|
||||
CONFIG_SQUASHFS_LZO=y
|
||||
CONFIG_SQUASHFS_XZ=y
|
||||
CONFIG_SQUASHFS_ZSTD=y
|
||||
# CONFIG_SQUASHFS_4K_DEVBLK_SIZE is not set
|
||||
# CONFIG_SQUASHFS_EMBEDDED is not set
|
||||
CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
|
||||
@ -4665,6 +4727,7 @@ CONFIG_CRYPTO_DES=y
|
||||
# CONFIG_CRYPTO_CHACHA20 is not set
|
||||
# CONFIG_CRYPTO_SEED is not set
|
||||
# CONFIG_CRYPTO_SERPENT is not set
|
||||
# CONFIG_CRYPTO_SPECK is not set
|
||||
# CONFIG_CRYPTO_TEA is not set
|
||||
CONFIG_CRYPTO_TWOFISH=y
|
||||
CONFIG_CRYPTO_TWOFISH_COMMON=y
|
||||
@ -4697,6 +4760,7 @@ CONFIG_CRYPTO_USER_API_SKCIPHER=y
|
||||
CONFIG_CRYPTO_HASH_INFO=y
|
||||
CONFIG_CRYPTO_HW=y
|
||||
# CONFIG_CRYPTO_DEV_CCP is not set
|
||||
# CONFIG_CRYPTO_DEV_ROCKCHIP is not set
|
||||
CONFIG_ASYMMETRIC_KEY_TYPE=y
|
||||
CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=y
|
||||
CONFIG_PUBLIC_KEY_ALGO_RSA=y
|
||||
@ -4719,6 +4783,7 @@ CONFIG_CRYPTO_AES_ARM64_CE_CCM=y
|
||||
CONFIG_CRYPTO_AES_ARM64_CE_BLK=y
|
||||
# CONFIG_CRYPTO_AES_ARM64_NEON_BLK is not set
|
||||
# CONFIG_CRYPTO_CRC32_ARM64 is not set
|
||||
# CONFIG_CRYPTO_SPECK_NEON is not set
|
||||
CONFIG_BINARY_PRINTF=y
|
||||
|
||||
#
|
||||
@ -4747,13 +4812,16 @@ CONFIG_CRC32_SLICEBY8=y
|
||||
CONFIG_CRC7=y
|
||||
CONFIG_LIBCRC32C=y
|
||||
# CONFIG_CRC8 is not set
|
||||
CONFIG_XXHASH=y
|
||||
CONFIG_AUDIT_ARCH_COMPAT_GENERIC=y
|
||||
# CONFIG_RANDOM32_SELFTEST is not set
|
||||
CONFIG_ZLIB_INFLATE=y
|
||||
CONFIG_ZLIB_DEFLATE=m
|
||||
CONFIG_LZO_COMPRESS=y
|
||||
CONFIG_LZO_COMPRESS=m
|
||||
CONFIG_LZO_DECOMPRESS=y
|
||||
CONFIG_LZ4_COMPRESS=m
|
||||
CONFIG_LZ4_DECOMPRESS=y
|
||||
CONFIG_ZSTD_DECOMPRESS=y
|
||||
CONFIG_XZ_DEC=y
|
||||
# CONFIG_XZ_DEC_X86 is not set
|
||||
# CONFIG_XZ_DEC_POWERPC is not set
|
||||
|
@ -4,7 +4,6 @@ This is a SoC device for RK3399
|
||||
|
||||
**Build**
|
||||
|
||||
* `PROJECT=Rockchip DEVICE=RK3399 ARCH=arm UBOOT_SYSTEM=odroidn1 make image`
|
||||
* `PROJECT=Rockchip DEVICE=RK3399 ARCH=arm UBOOT_SYSTEM=rock960 make image`
|
||||
* `PROJECT=Rockchip DEVICE=RK3399 ARCH=arm UBOOT_SYSTEM=rockpro64 make image`
|
||||
* `PROJECT=Rockchip DEVICE=RK3399 ARCH=arm UBOOT_SYSTEM=sapphire make image`
|
||||
|
@ -1,6 +1,6 @@
|
||||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# Linux/arm64 4.4.114 Kernel Configuration
|
||||
# Linux/arm64 4.4.143 Kernel Configuration
|
||||
#
|
||||
CONFIG_ARM64=y
|
||||
CONFIG_64BIT=y
|
||||
@ -12,8 +12,8 @@ CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=11
|
||||
CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=16
|
||||
CONFIG_ARM64_PAGE_SHIFT=12
|
||||
CONFIG_ARM64_CONT_SHIFT=4
|
||||
CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000
|
||||
CONFIG_STACKTRACE_SUPPORT=y
|
||||
CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000
|
||||
CONFIG_LOCKDEP_SUPPORT=y
|
||||
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
|
||||
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
|
||||
@ -157,6 +157,7 @@ CONFIG_RD_GZIP=y
|
||||
CONFIG_RD_XZ=y
|
||||
# CONFIG_RD_LZO is not set
|
||||
# CONFIG_RD_LZ4 is not set
|
||||
# CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE is not set
|
||||
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
||||
CONFIG_SYSCTL=y
|
||||
CONFIG_ANON_INODES=y
|
||||
@ -392,6 +393,7 @@ CONFIG_ARM64_ERRATUM_819472=y
|
||||
# CONFIG_ARM64_ERRATUM_832075 is not set
|
||||
CONFIG_ARM64_ERRATUM_845719=y
|
||||
CONFIG_ARM64_ERRATUM_843419=y
|
||||
# CONFIG_ARM64_ERRATUM_1024718 is not set
|
||||
# CONFIG_CAVIUM_ERRATUM_22375 is not set
|
||||
# CONFIG_CAVIUM_ERRATUM_23154 is not set
|
||||
# CONFIG_CAVIUM_ERRATUM_27456 is not set
|
||||
@ -434,9 +436,11 @@ CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
|
||||
CONFIG_SPARSEMEM_VMEMMAP=y
|
||||
CONFIG_HAVE_MEMBLOCK=y
|
||||
CONFIG_NO_BOOTMEM=y
|
||||
CONFIG_MEMORY_ISOLATION=y
|
||||
# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# CONFIG_COMPACTION is not set
|
||||
CONFIG_MIGRATION=y
|
||||
CONFIG_PHYS_ADDR_T_64BIT=y
|
||||
CONFIG_ZONE_DMA_FLAG=1
|
||||
CONFIG_BOUNCE=y
|
||||
@ -445,11 +449,14 @@ CONFIG_DEFAULT_MMAP_MIN_ADDR=32768
|
||||
# CONFIG_TRANSPARENT_HUGEPAGE is not set
|
||||
# CONFIG_CLEANCACHE is not set
|
||||
# CONFIG_FRONTSWAP is not set
|
||||
# CONFIG_CMA is not set
|
||||
CONFIG_CMA=y
|
||||
# CONFIG_CMA_DEBUG is not set
|
||||
CONFIG_CMA_DEBUGFS=y
|
||||
CONFIG_CMA_AREAS=7
|
||||
# CONFIG_ZPOOL is not set
|
||||
# CONFIG_ZBUD is not set
|
||||
CONFIG_ZSMALLOC=y
|
||||
# CONFIG_PGTABLE_MAPPING is not set
|
||||
CONFIG_ZSMALLOC=m
|
||||
CONFIG_PGTABLE_MAPPING=y
|
||||
# CONFIG_ZSMALLOC_STAT is not set
|
||||
CONFIG_GENERIC_EARLY_IOREMAP=y
|
||||
# CONFIG_IDLE_PAGE_TRACKING is not set
|
||||
@ -475,7 +482,7 @@ CONFIG_ARM64_MODULE_CMODEL_LARGE=y
|
||||
#
|
||||
# Boot options
|
||||
#
|
||||
CONFIG_CMDLINE="root=/dev/ram0 rdinit=/init usbcore.autosuspend=-1"
|
||||
CONFIG_CMDLINE="usbcore.autosuspend=-1"
|
||||
# CONFIG_CMDLINE_FROM_BOOTLOADER is not set
|
||||
CONFIG_CMDLINE_EXTEND=y
|
||||
# CONFIG_CMDLINE_FORCE is not set
|
||||
@ -549,13 +556,13 @@ CONFIG_CPU_FREQ=y
|
||||
CONFIG_CPU_FREQ_GOV_COMMON=y
|
||||
CONFIG_CPU_FREQ_STAT=y
|
||||
# CONFIG_CPU_FREQ_STAT_DETAILS is not set
|
||||
CONFIG_CPU_FREQ_TIMES=y
|
||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
|
||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
|
||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
|
||||
CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
|
||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
|
||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_INTERACTIVE is not set
|
||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_SCHED is not set
|
||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL is not set
|
||||
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
|
||||
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
|
||||
@ -934,7 +941,9 @@ CONFIG_RFKILL_GPIO=y
|
||||
# CONFIG_CEPH_LIB is not set
|
||||
# CONFIG_NFC is not set
|
||||
# CONFIG_LWTUNNEL is not set
|
||||
CONFIG_DST_CACHE=y
|
||||
CONFIG_HAVE_BPF_JIT=y
|
||||
CONFIG_HAVE_EBPF_JIT=y
|
||||
|
||||
#
|
||||
# Device Drivers
|
||||
@ -970,6 +979,17 @@ CONFIG_REGMAP_MMIO=y
|
||||
CONFIG_REGMAP_IRQ=y
|
||||
CONFIG_DMA_SHARED_BUFFER=y
|
||||
# CONFIG_FENCE_TRACE is not set
|
||||
CONFIG_DMA_CMA=y
|
||||
|
||||
#
|
||||
# Default contiguous memory area size:
|
||||
#
|
||||
CONFIG_CMA_SIZE_MBYTES=64
|
||||
CONFIG_CMA_SIZE_SEL_MBYTES=y
|
||||
# CONFIG_CMA_SIZE_SEL_PERCENTAGE is not set
|
||||
# CONFIG_CMA_SIZE_SEL_MIN is not set
|
||||
# CONFIG_CMA_SIZE_SEL_MAX is not set
|
||||
CONFIG_CMA_ALIGNMENT=8
|
||||
|
||||
#
|
||||
# Bus devices
|
||||
@ -1074,8 +1094,8 @@ CONFIG_OF_RESERVED_MEM=y
|
||||
CONFIG_BLK_DEV=y
|
||||
# CONFIG_BLK_DEV_NULL_BLK is not set
|
||||
# CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set
|
||||
CONFIG_ZRAM=y
|
||||
# CONFIG_ZRAM_LZ4_COMPRESS is not set
|
||||
CONFIG_ZRAM=m
|
||||
CONFIG_ZRAM_LZ4_COMPRESS=y
|
||||
# CONFIG_BLK_CPQ_CISS_DA is not set
|
||||
# CONFIG_BLK_DEV_DAC960 is not set
|
||||
# CONFIG_BLK_DEV_UMEM is not set
|
||||
@ -1538,6 +1558,7 @@ CONFIG_WL_ROCKCHIP=y
|
||||
CONFIG_WIFI_BUILD_MODULE=y
|
||||
# CONFIG_WIFI_LOAD_DRIVER_WHEN_KERNEL_BOOTUP is not set
|
||||
CONFIG_AP6XXX=m
|
||||
# CONFIG_CYW_BCMDHD is not set
|
||||
CONFIG_RTL_WIRELESS_SOLUTION=y
|
||||
# CONFIG_RTL8188EU is not set
|
||||
# CONFIG_RTL8188FU is not set
|
||||
@ -1548,6 +1569,12 @@ CONFIG_RTL8723BS=m
|
||||
# CONFIG_RTL8723CS is not set
|
||||
# CONFIG_RTL8723DS is not set
|
||||
# CONFIG_RTL8822BE is not set
|
||||
# CONFIG_MVL88W8977 is not set
|
||||
|
||||
#
|
||||
# SouthSV 6XXX WLAN support
|
||||
#
|
||||
# CONFIG_SSV6051 is not set
|
||||
# CONFIG_WL_TI is not set
|
||||
CONFIG_ZD1211RW=m
|
||||
# CONFIG_ZD1211RW_DEBUG is not set
|
||||
@ -1683,6 +1710,7 @@ CONFIG_TOUCHSCREEN_ATMEL_MXT=y
|
||||
# CONFIG_TOUCHSCREEN_FT6236 is not set
|
||||
# CONFIG_TOUCHSCREEN_FUJITSU is not set
|
||||
# CONFIG_TOUCHSCREEN_GOODIX is not set
|
||||
# CONFIG_TOUCHSCREEN_GSLX680A is not set
|
||||
# CONFIG_TOUCHSCREEN_GSLX680_D708 is not set
|
||||
# CONFIG_TOUCHSCREEN_GSLX680_PAD is not set
|
||||
# CONFIG_TOUCHSCREEN_GSLX680_VR is not set
|
||||
@ -2026,6 +2054,7 @@ CONFIG_GENERIC_PINCONF=y
|
||||
# CONFIG_PINCTRL_AMD is not set
|
||||
CONFIG_PINCTRL_ROCKCHIP=y
|
||||
# CONFIG_PINCTRL_SINGLE is not set
|
||||
# CONFIG_PINCTRL_RK805 is not set
|
||||
CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
|
||||
CONFIG_ARCH_REQUIRE_GPIOLIB=y
|
||||
CONFIG_GPIOLIB=y
|
||||
@ -2116,6 +2145,7 @@ CONFIG_CHARGER_BQ24735=y
|
||||
# CONFIG_CHARGER_BQ25890 is not set
|
||||
# CONFIG_CHARGER_SMB347 is not set
|
||||
# CONFIG_CHARGER_SY6982C is not set
|
||||
# CONFIG_CHARGER_UNIVERSAL is not set
|
||||
# CONFIG_BATTERY_GAUGE_LTC2941 is not set
|
||||
# CONFIG_BATTERY_EC is not set
|
||||
# CONFIG_BATTERY_CW2015 is not set
|
||||
@ -2458,6 +2488,7 @@ CONFIG_REGULATOR_RK808=y
|
||||
CONFIG_REGULATOR_RK818=y
|
||||
# CONFIG_REGULATOR_SYR82X is not set
|
||||
# CONFIG_REGULATOR_TPS51632 is not set
|
||||
# CONFIG_REGULATOR_TPS549B22 is not set
|
||||
# CONFIG_REGULATOR_TPS62360 is not set
|
||||
# CONFIG_REGULATOR_TPS65023 is not set
|
||||
# CONFIG_REGULATOR_TPS6507X is not set
|
||||
@ -2501,15 +2532,15 @@ CONFIG_IR_SHARP_DECODER=y
|
||||
CONFIG_IR_MCE_KBD_DECODER=y
|
||||
CONFIG_IR_XMP_DECODER=y
|
||||
CONFIG_RC_DEVICES=y
|
||||
# CONFIG_RC_ATI_REMOTE is not set
|
||||
# CONFIG_IR_HIX5HD2 is not set
|
||||
# CONFIG_IR_IMON is not set
|
||||
# CONFIG_IR_MCEUSB is not set
|
||||
# CONFIG_IR_REDRAT3 is not set
|
||||
# CONFIG_IR_STREAMZAP is not set
|
||||
# CONFIG_IR_IGORPLUGUSB is not set
|
||||
# CONFIG_IR_IGUANA is not set
|
||||
# CONFIG_IR_TTUSBIR is not set
|
||||
CONFIG_RC_ATI_REMOTE=m
|
||||
CONFIG_IR_HIX5HD2=m
|
||||
CONFIG_IR_IMON=m
|
||||
CONFIG_IR_MCEUSB=m
|
||||
CONFIG_IR_REDRAT3=m
|
||||
CONFIG_IR_STREAMZAP=m
|
||||
CONFIG_IR_IGORPLUGUSB=m
|
||||
CONFIG_IR_IGUANA=m
|
||||
CONFIG_IR_TTUSBIR=m
|
||||
# CONFIG_RC_LOOPBACK is not set
|
||||
CONFIG_IR_GPIO_CIR=y
|
||||
CONFIG_MEDIA_USB_SUPPORT=y
|
||||
@ -2520,6 +2551,7 @@ CONFIG_MEDIA_USB_SUPPORT=y
|
||||
CONFIG_USB_PULSE8_CEC=y
|
||||
CONFIG_USB_RAINSHADOW_CEC=y
|
||||
# CONFIG_MEDIA_PCI_SUPPORT is not set
|
||||
# CONFIG_ROCKCHIP_TSP is not set
|
||||
|
||||
#
|
||||
# Supported MMC/SDIO adapters
|
||||
@ -2555,7 +2587,7 @@ CONFIG_DRM_KMS_FB_HELPER=y
|
||||
CONFIG_DRM_FBDEV_EMULATION=y
|
||||
# CONFIG_DRM_LOAD_EDID_FIRMWARE is not set
|
||||
# CONFIG_DRM_SCDC_HELPER is not set
|
||||
CONFIG_DRM_DMA_SYNC=y
|
||||
# CONFIG_DRM_DMA_SYNC is not set
|
||||
|
||||
#
|
||||
# I2C encoder or helper chips
|
||||
@ -2574,7 +2606,8 @@ CONFIG_DRM_DMA_SYNC=y
|
||||
# CONFIG_DRM_SAVAGE is not set
|
||||
# CONFIG_DRM_VGEM is not set
|
||||
CONFIG_DRM_ROCKCHIP=y
|
||||
# CONFIG_ROCKCHIP_CDN_DP is not set
|
||||
# CONFIG_ROCKCHIP_DRM_DEBUG is not set
|
||||
CONFIG_ROCKCHIP_CDN_DP=y
|
||||
CONFIG_ROCKCHIP_DW_HDMI=y
|
||||
CONFIG_ROCKCHIP_DW_MIPI_DSI=y
|
||||
CONFIG_ROCKCHIP_ANALOGIX_DP=y
|
||||
@ -2609,6 +2642,7 @@ CONFIG_DRM_BRIDGE=y
|
||||
# CONFIG_DRM_PARADE_PS8622 is not set
|
||||
# CONFIG_DRM_RK1000 is not set
|
||||
# CONFIG_DRM_DUMB_VGA_DAC is not set
|
||||
# CONFIG_DRM_LONTIUM_LT8912 is not set
|
||||
CONFIG_DRM_ANALOGIX_DP=y
|
||||
CONFIG_DRM_DW_HDMI=y
|
||||
# CONFIG_DRM_DW_HDMI_AHB_AUDIO is not set
|
||||
@ -2617,13 +2651,12 @@ CONFIG_DRM_DW_HDMI_CEC=y
|
||||
# CONFIG_POWERVR_ROGUE_M is not set
|
||||
# CONFIG_MALI400 is not set
|
||||
CONFIG_MALI_DEVFREQ=y
|
||||
CONFIG_MALI_MIDGARD_FOR_ANDROID=y
|
||||
# CONFIG_MALI_MIDGARD_FOR_LINUX is not set
|
||||
CONFIG_MALI_MIDGARD=m
|
||||
# CONFIG_MALI_GATOR_SUPPORT is not set
|
||||
# CONFIG_MALI_MIDGARD_ENABLE_TRACE is not set
|
||||
# CONFIG_MALI_DMA_FENCE is not set
|
||||
CONFIG_MALI_EXPERT=y
|
||||
# CONFIG_MALI_CORESTACK is not set
|
||||
# CONFIG_MALI_PRFCNT_SET_SECONDARY is not set
|
||||
# CONFIG_MALI_PLATFORM_FAKE is not set
|
||||
# CONFIG_MALI_PLATFORM_DEVICETREE is not set
|
||||
@ -2634,8 +2667,11 @@ CONFIG_MALI_PLATFORM_THIRDPARTY_NAME="rk"
|
||||
# CONFIG_MALI_TRACE_TIMELINE is not set
|
||||
# CONFIG_MALI_SYSTEM_TRACE is not set
|
||||
# CONFIG_MALI_GPU_MMU_AARCH64 is not set
|
||||
CONFIG_MALI_PWRSOFT_765=y
|
||||
# CONFIG_MALI_KUTF is not set
|
||||
# CONFIG_MALI_BIFROST_FOR_ANDROID is not set
|
||||
CONFIG_MALI_BIFROST_FOR_LINUX=y
|
||||
# CONFIG_MALI_BIFROST is not set
|
||||
# CONFIG_MALI_PWRSOFT_765 is not set
|
||||
|
||||
#
|
||||
# Frame buffer Devices
|
||||
@ -2846,13 +2882,19 @@ CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y
|
||||
# CONFIG_SND_SOC_FSL_ESAI is not set
|
||||
# CONFIG_SND_SOC_IMX_AUDMUX is not set
|
||||
CONFIG_SND_SOC_ROCKCHIP=y
|
||||
# CONFIG_SND_SOC_ROCKCHIP_FORCE_SRAM is not set
|
||||
CONFIG_SND_SOC_ROCKCHIP_I2S=y
|
||||
# CONFIG_SND_SOC_ROCKCHIP_I2S_TDM is not set
|
||||
# CONFIG_SND_SOC_ROCKCHIP_MULTI_DAIS is not set
|
||||
# CONFIG_SND_SOC_ROCKCHIP_PDM is not set
|
||||
CONFIG_SND_SOC_ROCKCHIP_SPDIF=y
|
||||
# CONFIG_SND_SOC_ROCKCHIP_SPDIFRX is not set
|
||||
# CONFIG_SND_SOC_ROCKCHIP_VAD is not set
|
||||
# CONFIG_SND_SOC_ROCKCHIP_DA7219 is not set
|
||||
# CONFIG_SND_SOC_ROCKCHIP_HDMI_ANALOG is not set
|
||||
# CONFIG_SND_SOC_ROCKCHIP_HDMI_DP is not set
|
||||
CONFIG_SND_SOC_ROCKCHIP_MAX98090=y
|
||||
# CONFIG_SND_SOC_ROCKCHIP_MULTICODECS is not set
|
||||
CONFIG_SND_SOC_ROCKCHIP_RT5645=y
|
||||
# CONFIG_SND_SOC_ROCKCHIP_RT5651_TC358749 is not set
|
||||
# CONFIG_SND_SOC_ROCKCHIP_CDNDP is not set
|
||||
@ -2888,6 +2930,7 @@ CONFIG_SND_SOC_I2C_AND_SPI=y
|
||||
# CONFIG_SND_SOC_CS4349 is not set
|
||||
# CONFIG_SND_SOC_CX2072X is not set
|
||||
# CONFIG_SND_SOC_CX20810 is not set
|
||||
# CONFIG_SND_SOC_DUMMY_CODEC is not set
|
||||
# CONFIG_SND_SOC_BT_SCO is not set
|
||||
CONFIG_SND_SOC_ES8316=y
|
||||
# CONFIG_SND_SOC_ES8323 is not set
|
||||
@ -2905,7 +2948,8 @@ CONFIG_SND_SOC_MAX98090=y
|
||||
# CONFIG_SND_SOC_PCM512x_SPI is not set
|
||||
# CONFIG_SND_SOC_RK312X is not set
|
||||
# CONFIG_SND_SOC_RK3228 is not set
|
||||
CONFIG_SND_SOC_RK3328=y
|
||||
# CONFIG_SND_SOC_RK3308 is not set
|
||||
# CONFIG_SND_SOC_RK3328 is not set
|
||||
# CONFIG_SND_SOC_RK817 is not set
|
||||
CONFIG_SND_SOC_RL6231=y
|
||||
CONFIG_SND_SOC_RT5616=y
|
||||
@ -3475,6 +3519,7 @@ CONFIG_RTC_INTF_DEV=y
|
||||
# CONFIG_RTC_DRV_DS1374 is not set
|
||||
# CONFIG_RTC_DRV_DS1672 is not set
|
||||
# CONFIG_RTC_DRV_DS3232 is not set
|
||||
# CONFIG_RTC_DRV_FAKE is not set
|
||||
CONFIG_RTC_DRV_HYM8563=y
|
||||
# CONFIG_RTC_DRV_MAX6900 is not set
|
||||
CONFIG_RTC_DRV_RK808=y
|
||||
@ -3698,6 +3743,7 @@ CONFIG_TSL2583=y
|
||||
# CONFIG_ANDROID_TIMED_OUTPUT is not set
|
||||
# CONFIG_ANDROID_LOW_MEMORY_KILLER is not set
|
||||
# CONFIG_SYNC is not set
|
||||
# CONFIG_ANDROID_VSOC is not set
|
||||
# CONFIG_ION is not set
|
||||
# CONFIG_FIQ_DEBUGGER is not set
|
||||
# CONFIG_FIQ_WATCHDOG is not set
|
||||
@ -3733,7 +3779,7 @@ CONFIG_COMMON_CLK_RK808=y
|
||||
# CONFIG_COMMON_CLK_SI570 is not set
|
||||
# CONFIG_COMMON_CLK_CDCE925 is not set
|
||||
# CONFIG_CLK_QORIQ is not set
|
||||
CONFIG_COMMON_CLK_XGENE=y
|
||||
# CONFIG_COMMON_CLK_XGENE is not set
|
||||
# CONFIG_COMMON_CLK_PWM is not set
|
||||
# CONFIG_COMMON_CLK_PXA is not set
|
||||
# CONFIG_COMMON_CLK_CDCE706 is not set
|
||||
@ -3750,7 +3796,7 @@ CONFIG_CLKSRC_PROBE=y
|
||||
CONFIG_ROCKCHIP_TIMER=y
|
||||
CONFIG_ARM_ARCH_TIMER=y
|
||||
CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y
|
||||
# CONFIG_ARM_ARCH_TIMER_VCT_ACCESS is not set
|
||||
CONFIG_ARM_ARCH_TIMER_VCT_ACCESS=y
|
||||
# CONFIG_ARM_TIMER_SP804 is not set
|
||||
# CONFIG_ATMEL_PIT is not set
|
||||
# CONFIG_SH_TIMER_CMT is not set
|
||||
@ -3790,13 +3836,23 @@ CONFIG_ROCKCHIP_IOMMU=y
|
||||
#
|
||||
# SOC (System On Chip) specific Drivers
|
||||
#
|
||||
|
||||
#
|
||||
# CPU selection
|
||||
#
|
||||
# CONFIG_CPU_PX30 is not set
|
||||
# CONFIG_CPU_RK3308 is not set
|
||||
# CONFIG_CPU_RK3328 is not set
|
||||
# CONFIG_CPU_RK3366 is not set
|
||||
# CONFIG_CPU_RK3368 is not set
|
||||
CONFIG_CPU_RK3399=y
|
||||
CONFIG_ANDROID_VERSION=0x07010000
|
||||
CONFIG_ROCKCHIP_CPUINFO=y
|
||||
# CONFIG_ROCKCHIP_DEVICEINFO is not set
|
||||
# CONFIG_ROCKCHIP_PM_TEST is not set
|
||||
CONFIG_ROCKCHIP_GRF=y
|
||||
CONFIG_ROCKCHIP_PM_DOMAINS=y
|
||||
# CONFIG_ROCKCHIP_PVTM is not set
|
||||
CONFIG_ROCKCHIP_PVTM=y
|
||||
CONFIG_ROCKCHIP_SUSPEND_MODE=y
|
||||
# CONFIG_SUNXI_SRAM is not set
|
||||
# CONFIG_SOC_TI is not set
|
||||
@ -3813,6 +3869,7 @@ CONFIG_DEVFREQ_GOV_USERSPACE=y
|
||||
#
|
||||
# DEVFREQ Drivers
|
||||
#
|
||||
CONFIG_ARM_ROCKCHIP_BUS_DEVFREQ=y
|
||||
CONFIG_ARM_ROCKCHIP_DMC_DEVFREQ=y
|
||||
CONFIG_PM_DEVFREQ_EVENT=y
|
||||
CONFIG_DEVFREQ_EVENT_ROCKCHIP_DFI=y
|
||||
@ -3985,6 +4042,7 @@ CONFIG_SENSORS_TSL2563=y
|
||||
# CONFIG_TSL4531 is not set
|
||||
# CONFIG_US5182D is not set
|
||||
# CONFIG_VCNL4000 is not set
|
||||
# CONFIG_VL6180 is not set
|
||||
|
||||
#
|
||||
# Magnetometer sensors
|
||||
@ -4046,8 +4104,10 @@ CONFIG_PWM=y
|
||||
CONFIG_PWM_SYSFS=y
|
||||
# CONFIG_PWM_CROS_EC is not set
|
||||
# CONFIG_PWM_FSL_FTM is not set
|
||||
CONFIG_PWM_GPIO=y
|
||||
# CONFIG_PWM_PCA9685 is not set
|
||||
CONFIG_PWM_ROCKCHIP=y
|
||||
# CONFIG_PWM_ROCKCHIP_I2S is not set
|
||||
CONFIG_IRQCHIP=y
|
||||
CONFIG_ARM_GIC=y
|
||||
CONFIG_ARM_GIC_V2M=y
|
||||
@ -4095,6 +4155,7 @@ CONFIG_ANDROID=y
|
||||
# CONFIG_LIBNVDIMM is not set
|
||||
CONFIG_NVMEM=y
|
||||
CONFIG_ROCKCHIP_EFUSE=y
|
||||
CONFIG_ROCKCHIP_OTP=y
|
||||
# CONFIG_STM is not set
|
||||
# CONFIG_INTEL_TH is not set
|
||||
|
||||
@ -4103,6 +4164,7 @@ CONFIG_ROCKCHIP_EFUSE=y
|
||||
#
|
||||
# CONFIG_FPGA is not set
|
||||
# CONFIG_TEE is not set
|
||||
# CONFIG_RK_FLASH is not set
|
||||
# CONFIG_RK_NAND is not set
|
||||
|
||||
#
|
||||
@ -4217,6 +4279,7 @@ CONFIG_PROC_FS=y
|
||||
CONFIG_PROC_SYSCTL=y
|
||||
CONFIG_PROC_PAGE_MONITOR=y
|
||||
# CONFIG_PROC_CHILDREN is not set
|
||||
CONFIG_PROC_UID=y
|
||||
CONFIG_KERNFS=y
|
||||
CONFIG_SYSFS=y
|
||||
CONFIG_TMPFS=y
|
||||
@ -4248,6 +4311,7 @@ CONFIG_SQUASHFS_ZLIB=y
|
||||
CONFIG_SQUASHFS_LZ4=y
|
||||
CONFIG_SQUASHFS_LZO=y
|
||||
CONFIG_SQUASHFS_XZ=y
|
||||
CONFIG_SQUASHFS_ZSTD=y
|
||||
# CONFIG_SQUASHFS_4K_DEVBLK_SIZE is not set
|
||||
# CONFIG_SQUASHFS_EMBEDDED is not set
|
||||
CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
|
||||
@ -4670,6 +4734,7 @@ CONFIG_CRYPTO_DES=y
|
||||
# CONFIG_CRYPTO_CHACHA20 is not set
|
||||
# CONFIG_CRYPTO_SEED is not set
|
||||
# CONFIG_CRYPTO_SERPENT is not set
|
||||
# CONFIG_CRYPTO_SPECK is not set
|
||||
# CONFIG_CRYPTO_TEA is not set
|
||||
CONFIG_CRYPTO_TWOFISH=y
|
||||
CONFIG_CRYPTO_TWOFISH_COMMON=y
|
||||
@ -4702,6 +4767,7 @@ CONFIG_CRYPTO_USER_API_SKCIPHER=y
|
||||
CONFIG_CRYPTO_HASH_INFO=y
|
||||
CONFIG_CRYPTO_HW=y
|
||||
# CONFIG_CRYPTO_DEV_CCP is not set
|
||||
# CONFIG_CRYPTO_DEV_ROCKCHIP is not set
|
||||
CONFIG_ASYMMETRIC_KEY_TYPE=y
|
||||
CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=y
|
||||
CONFIG_PUBLIC_KEY_ALGO_RSA=y
|
||||
@ -4724,6 +4790,7 @@ CONFIG_CRYPTO_AES_ARM64_CE_CCM=y
|
||||
CONFIG_CRYPTO_AES_ARM64_CE_BLK=y
|
||||
# CONFIG_CRYPTO_AES_ARM64_NEON_BLK is not set
|
||||
# CONFIG_CRYPTO_CRC32_ARM64 is not set
|
||||
# CONFIG_CRYPTO_SPECK_NEON is not set
|
||||
CONFIG_BINARY_PRINTF=y
|
||||
|
||||
#
|
||||
@ -4752,13 +4819,16 @@ CONFIG_CRC32_SLICEBY8=y
|
||||
CONFIG_CRC7=y
|
||||
CONFIG_LIBCRC32C=y
|
||||
# CONFIG_CRC8 is not set
|
||||
CONFIG_XXHASH=y
|
||||
CONFIG_AUDIT_ARCH_COMPAT_GENERIC=y
|
||||
# CONFIG_RANDOM32_SELFTEST is not set
|
||||
CONFIG_ZLIB_INFLATE=y
|
||||
CONFIG_ZLIB_DEFLATE=m
|
||||
CONFIG_LZO_COMPRESS=y
|
||||
CONFIG_LZO_COMPRESS=m
|
||||
CONFIG_LZO_DECOMPRESS=y
|
||||
CONFIG_LZ4_COMPRESS=m
|
||||
CONFIG_LZ4_DECOMPRESS=y
|
||||
CONFIG_ZSTD_DECOMPRESS=y
|
||||
CONFIG_XZ_DEC=y
|
||||
# CONFIG_XZ_DEC_X86 is not set
|
||||
# CONFIG_XZ_DEC_POWERPC is not set
|
||||
|
@ -26,7 +26,6 @@
|
||||
|
||||
# Additional kernel make parameters (for example to specify the u-boot loadaddress)
|
||||
KERNEL_MAKE_EXTRACMD=""
|
||||
KERNEL_MAKE_EXTRACMD+=" rockchip/rk3399-odroidn1.dtb"
|
||||
KERNEL_MAKE_EXTRACMD+=" rockchip/rk3399-rock960.dtb"
|
||||
KERNEL_MAKE_EXTRACMD+=" rockchip/rk3399-rockpro64.dtb"
|
||||
KERNEL_MAKE_EXTRACMD+=" rockchip/rk3399-sapphire.dtb"
|
||||
|
@ -1,6 +1,6 @@
|
||||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# Linux/arm 4.4.114 Kernel Configuration
|
||||
# Linux/arm 4.4.143 Kernel Configuration
|
||||
#
|
||||
CONFIG_ARM=y
|
||||
CONFIG_ARM_HAS_SG_CHAIN=y
|
||||
@ -152,6 +152,7 @@ CONFIG_RD_GZIP=y
|
||||
CONFIG_RD_XZ=y
|
||||
# CONFIG_RD_LZO is not set
|
||||
# CONFIG_RD_LZ4 is not set
|
||||
# CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE is not set
|
||||
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
||||
CONFIG_SYSCTL=y
|
||||
CONFIG_ANON_INODES=y
|
||||
@ -237,6 +238,7 @@ CONFIG_HAVE_MOD_ARCH_SPECIFIC=y
|
||||
CONFIG_MODULES_USE_ELF_REL=y
|
||||
CONFIG_ARCH_HAS_ELF_RANDOMIZE=y
|
||||
CONFIG_HAVE_ARCH_MMAP_RND_BITS=y
|
||||
CONFIG_HAVE_EXIT_THREAD=y
|
||||
CONFIG_ARCH_MMAP_RND_BITS_MIN=8
|
||||
CONFIG_ARCH_MMAP_RND_BITS_MAX=16
|
||||
CONFIG_ARCH_MMAP_RND_BITS=8
|
||||
@ -471,7 +473,6 @@ CONFIG_ARM_CPU_TOPOLOGY=y
|
||||
# CONFIG_SCHED_SMT is not set
|
||||
CONFIG_HAVE_ARM_SCU=y
|
||||
CONFIG_HAVE_ARM_ARCH_TIMER=y
|
||||
CONFIG_HAVE_ARM_TWD=y
|
||||
# CONFIG_MCPM is not set
|
||||
# CONFIG_BIG_LITTLE is not set
|
||||
CONFIG_VMSPLIT_3G=y
|
||||
@ -511,9 +512,11 @@ CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
CONFIG_HAVE_MEMBLOCK=y
|
||||
CONFIG_NO_BOOTMEM=y
|
||||
CONFIG_MEMORY_ISOLATION=y
|
||||
# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# CONFIG_COMPACTION is not set
|
||||
CONFIG_MIGRATION=y
|
||||
# CONFIG_PHYS_ADDR_T_64BIT is not set
|
||||
CONFIG_ZONE_DMA_FLAG=0
|
||||
CONFIG_BOUNCE=y
|
||||
@ -521,11 +524,14 @@ CONFIG_BOUNCE=y
|
||||
CONFIG_DEFAULT_MMAP_MIN_ADDR=32768
|
||||
# CONFIG_CLEANCACHE is not set
|
||||
# CONFIG_FRONTSWAP is not set
|
||||
# CONFIG_CMA is not set
|
||||
CONFIG_CMA=y
|
||||
# CONFIG_CMA_DEBUG is not set
|
||||
CONFIG_CMA_DEBUGFS=y
|
||||
CONFIG_CMA_AREAS=7
|
||||
# CONFIG_ZPOOL is not set
|
||||
# CONFIG_ZBUD is not set
|
||||
CONFIG_ZSMALLOC=y
|
||||
# CONFIG_PGTABLE_MAPPING is not set
|
||||
CONFIG_ZSMALLOC=m
|
||||
CONFIG_PGTABLE_MAPPING=y
|
||||
# CONFIG_ZSMALLOC_STAT is not set
|
||||
# CONFIG_IDLE_PAGE_TRACKING is not set
|
||||
CONFIG_FORCE_MAX_ZONEORDER=11
|
||||
@ -547,7 +553,7 @@ CONFIG_ATAGS=y
|
||||
CONFIG_ZBOOT_ROM_TEXT=0x0
|
||||
CONFIG_ZBOOT_ROM_BSS=0x0
|
||||
# CONFIG_ARM_APPENDED_DTB is not set
|
||||
CONFIG_CMDLINE="root=/dev/ram0 rdinit=/init usbcore.autosuspend=-1"
|
||||
CONFIG_CMDLINE="usbcore.autosuspend=-1"
|
||||
# CONFIG_CMDLINE_FROM_BOOTLOADER is not set
|
||||
CONFIG_CMDLINE_EXTEND=y
|
||||
# CONFIG_CMDLINE_FORCE is not set
|
||||
@ -566,13 +572,13 @@ CONFIG_CPU_FREQ=y
|
||||
CONFIG_CPU_FREQ_GOV_COMMON=y
|
||||
CONFIG_CPU_FREQ_STAT=y
|
||||
# CONFIG_CPU_FREQ_STAT_DETAILS is not set
|
||||
CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
|
||||
CONFIG_CPU_FREQ_TIMES=y
|
||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
|
||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
|
||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
|
||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
|
||||
CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
|
||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
|
||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_INTERACTIVE is not set
|
||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_SCHED is not set
|
||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL is not set
|
||||
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
|
||||
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
|
||||
@ -1016,6 +1022,7 @@ CONFIG_RFKILL_GPIO=y
|
||||
# CONFIG_CEPH_LIB is not set
|
||||
# CONFIG_NFC is not set
|
||||
# CONFIG_LWTUNNEL is not set
|
||||
CONFIG_DST_CACHE=y
|
||||
CONFIG_HAVE_BPF_JIT=y
|
||||
|
||||
#
|
||||
@ -1051,6 +1058,17 @@ CONFIG_REGMAP_MMIO=y
|
||||
CONFIG_REGMAP_IRQ=y
|
||||
CONFIG_DMA_SHARED_BUFFER=y
|
||||
# CONFIG_FENCE_TRACE is not set
|
||||
CONFIG_DMA_CMA=y
|
||||
|
||||
#
|
||||
# Default contiguous memory area size:
|
||||
#
|
||||
CONFIG_CMA_SIZE_MBYTES=64
|
||||
CONFIG_CMA_SIZE_SEL_MBYTES=y
|
||||
# CONFIG_CMA_SIZE_SEL_PERCENTAGE is not set
|
||||
# CONFIG_CMA_SIZE_SEL_MIN is not set
|
||||
# CONFIG_CMA_SIZE_SEL_MAX is not set
|
||||
CONFIG_CMA_ALIGNMENT=8
|
||||
|
||||
#
|
||||
# Bus devices
|
||||
@ -1078,8 +1096,8 @@ CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
|
||||
# CONFIG_PARPORT is not set
|
||||
CONFIG_BLK_DEV=y
|
||||
# CONFIG_BLK_DEV_NULL_BLK is not set
|
||||
CONFIG_ZRAM=y
|
||||
# CONFIG_ZRAM_LZ4_COMPRESS is not set
|
||||
CONFIG_ZRAM=m
|
||||
CONFIG_ZRAM_LZ4_COMPRESS=y
|
||||
# CONFIG_BLK_DEV_COW_COMMON is not set
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
CONFIG_BLK_DEV_LOOP_MIN_COUNT=8
|
||||
@ -1097,7 +1115,7 @@ CONFIG_BLK_DEV_RAM_SIZE=4096
|
||||
#
|
||||
# Misc devices
|
||||
#
|
||||
# CONFIG_ROCKCHIP_SCR is not set
|
||||
CONFIG_ROCKCHIP_SCR=y
|
||||
# CONFIG_SENSORS_LIS3LV02D is not set
|
||||
# CONFIG_AD525X_DPOT is not set
|
||||
# CONFIG_DUMMY_IRQ is not set
|
||||
@ -1329,7 +1347,7 @@ CONFIG_PHYLIB=y
|
||||
# CONFIG_CICADA_PHY is not set
|
||||
# CONFIG_VITESSE_PHY is not set
|
||||
# CONFIG_TERANETICS_PHY is not set
|
||||
# CONFIG_ROCKCHIP_PHY is not set
|
||||
CONFIG_ROCKCHIP_PHY=y
|
||||
# CONFIG_SMSC_PHY is not set
|
||||
# CONFIG_BROADCOM_PHY is not set
|
||||
# CONFIG_BCM7XXX_PHY is not set
|
||||
@ -1432,18 +1450,25 @@ CONFIG_RT2X00_LIB_LEDS=y
|
||||
# CONFIG_RTL_CARDS is not set
|
||||
# CONFIG_RTL8XXXU is not set
|
||||
CONFIG_WL_ROCKCHIP=y
|
||||
# CONFIG_WIFI_BUILD_MODULE is not set
|
||||
CONFIG_WIFI_LOAD_DRIVER_WHEN_KERNEL_BOOTUP=y
|
||||
CONFIG_WIFI_BUILD_MODULE=y
|
||||
# CONFIG_WIFI_LOAD_DRIVER_WHEN_KERNEL_BOOTUP is not set
|
||||
# CONFIG_AP6XXX is not set
|
||||
# CONFIG_CYW_BCMDHD is not set
|
||||
CONFIG_RTL_WIRELESS_SOLUTION=y
|
||||
# CONFIG_RTL8188EU is not set
|
||||
# CONFIG_RTL8188FU is not set
|
||||
# CONFIG_RTL8189ES is not set
|
||||
# CONFIG_RTL8189FS is not set
|
||||
CONFIG_RTL8723BS=y
|
||||
CONFIG_RTL8723BS=m
|
||||
# CONFIG_RTL8723BU is not set
|
||||
# CONFIG_RTL8723CS is not set
|
||||
# CONFIG_RTL8723DS is not set
|
||||
# CONFIG_MVL88W8977 is not set
|
||||
|
||||
#
|
||||
# SouthSV 6XXX WLAN support
|
||||
#
|
||||
# CONFIG_SSV6051 is not set
|
||||
# CONFIG_WL_TI is not set
|
||||
CONFIG_ZD1211RW=m
|
||||
# CONFIG_ZD1211RW_DEBUG is not set
|
||||
@ -1578,6 +1603,7 @@ CONFIG_TOUCHSCREEN_ATMEL_MXT=y
|
||||
# CONFIG_TOUCHSCREEN_FT6236 is not set
|
||||
# CONFIG_TOUCHSCREEN_FUJITSU is not set
|
||||
# CONFIG_TOUCHSCREEN_GOODIX is not set
|
||||
# CONFIG_TOUCHSCREEN_GSLX680A is not set
|
||||
# CONFIG_TOUCHSCREEN_GSLX680_D708 is not set
|
||||
# CONFIG_TOUCHSCREEN_GSLX680_PAD is not set
|
||||
# CONFIG_TOUCHSCREEN_GSLX680_VR is not set
|
||||
@ -1892,6 +1918,7 @@ CONFIG_GENERIC_PINCONF=y
|
||||
# CONFIG_PINCTRL_AMD is not set
|
||||
CONFIG_PINCTRL_ROCKCHIP=y
|
||||
# CONFIG_PINCTRL_SINGLE is not set
|
||||
# CONFIG_PINCTRL_RK805 is not set
|
||||
CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=y
|
||||
CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
|
||||
CONFIG_ARCH_REQUIRE_GPIOLIB=y
|
||||
@ -2304,6 +2331,7 @@ CONFIG_REGULATOR_RK808=y
|
||||
# CONFIG_REGULATOR_RK818 is not set
|
||||
# CONFIG_REGULATOR_SYR82X is not set
|
||||
# CONFIG_REGULATOR_TPS51632 is not set
|
||||
# CONFIG_REGULATOR_TPS549B22 is not set
|
||||
# CONFIG_REGULATOR_TPS62360 is not set
|
||||
# CONFIG_REGULATOR_TPS65023 is not set
|
||||
# CONFIG_REGULATOR_TPS6507X is not set
|
||||
@ -2311,6 +2339,7 @@ CONFIG_REGULATOR_RK808=y
|
||||
CONFIG_REGULATOR_TPS6586X=y
|
||||
# CONFIG_REGULATOR_XZ3216 is not set
|
||||
CONFIG_CEC_CORE=y
|
||||
CONFIG_CEC_NOTIFIER=y
|
||||
CONFIG_MEDIA_SUPPORT=y
|
||||
|
||||
#
|
||||
@ -2346,15 +2375,15 @@ CONFIG_IR_SHARP_DECODER=y
|
||||
CONFIG_IR_MCE_KBD_DECODER=y
|
||||
CONFIG_IR_XMP_DECODER=y
|
||||
CONFIG_RC_DEVICES=y
|
||||
# CONFIG_RC_ATI_REMOTE is not set
|
||||
# CONFIG_IR_HIX5HD2 is not set
|
||||
# CONFIG_IR_IMON is not set
|
||||
# CONFIG_IR_MCEUSB is not set
|
||||
# CONFIG_IR_REDRAT3 is not set
|
||||
# CONFIG_IR_STREAMZAP is not set
|
||||
# CONFIG_IR_IGORPLUGUSB is not set
|
||||
# CONFIG_IR_IGUANA is not set
|
||||
# CONFIG_IR_TTUSBIR is not set
|
||||
CONFIG_RC_ATI_REMOTE=m
|
||||
CONFIG_IR_HIX5HD2=m
|
||||
CONFIG_IR_IMON=m
|
||||
CONFIG_IR_MCEUSB=m
|
||||
CONFIG_IR_REDRAT3=m
|
||||
CONFIG_IR_STREAMZAP=m
|
||||
CONFIG_IR_IGORPLUGUSB=m
|
||||
CONFIG_IR_IGUANA=m
|
||||
CONFIG_IR_TTUSBIR=m
|
||||
# CONFIG_RC_LOOPBACK is not set
|
||||
CONFIG_IR_GPIO_CIR=y
|
||||
CONFIG_MEDIA_USB_SUPPORT=y
|
||||
@ -2364,6 +2393,7 @@ CONFIG_MEDIA_USB_SUPPORT=y
|
||||
#
|
||||
CONFIG_USB_PULSE8_CEC=y
|
||||
CONFIG_USB_RAINSHADOW_CEC=y
|
||||
# CONFIG_ROCKCHIP_TSP is not set
|
||||
|
||||
#
|
||||
# Supported MMC/SDIO adapters
|
||||
@ -2399,7 +2429,7 @@ CONFIG_DRM_KMS_FB_HELPER=y
|
||||
CONFIG_DRM_FBDEV_EMULATION=y
|
||||
# CONFIG_DRM_LOAD_EDID_FIRMWARE is not set
|
||||
# CONFIG_DRM_SCDC_HELPER is not set
|
||||
CONFIG_DRM_DMA_SYNC=y
|
||||
# CONFIG_DRM_DMA_SYNC is not set
|
||||
|
||||
#
|
||||
# I2C encoder or helper chips
|
||||
@ -2411,13 +2441,14 @@ CONFIG_DRM_DMA_SYNC=y
|
||||
# CONFIG_DRM_VGEM is not set
|
||||
# CONFIG_DRM_EXYNOS is not set
|
||||
CONFIG_DRM_ROCKCHIP=y
|
||||
# CONFIG_ROCKCHIP_DRM_DEBUG is not set
|
||||
# CONFIG_ROCKCHIP_CDN_DP is not set
|
||||
CONFIG_ROCKCHIP_DW_HDMI=y
|
||||
CONFIG_ROCKCHIP_DW_MIPI_DSI=y
|
||||
CONFIG_ROCKCHIP_ANALOGIX_DP=y
|
||||
CONFIG_ROCKCHIP_INNO_HDMI=y
|
||||
CONFIG_ROCKCHIP_LVDS=y
|
||||
# CONFIG_ROCKCHIP_DRM_TVE is not set
|
||||
CONFIG_ROCKCHIP_DRM_TVE=y
|
||||
# CONFIG_ROCKCHIP_RGB is not set
|
||||
# CONFIG_ROCKCHIP_DRM_BACKLIGHT is not set
|
||||
# CONFIG_ROCKCHIP_RK3066_HDMI is not set
|
||||
@ -2444,22 +2475,22 @@ CONFIG_DRM_BRIDGE=y
|
||||
# CONFIG_DRM_PARADE_PS8622 is not set
|
||||
# CONFIG_DRM_RK1000 is not set
|
||||
# CONFIG_DRM_DUMB_VGA_DAC is not set
|
||||
# CONFIG_DRM_LONTIUM_LT8912 is not set
|
||||
CONFIG_DRM_ANALOGIX_DP=y
|
||||
CONFIG_DRM_DW_HDMI=y
|
||||
# CONFIG_DRM_DW_HDMI_AHB_AUDIO is not set
|
||||
CONFIG_DRM_DW_HDMI_I2S_AUDIO=y
|
||||
# CONFIG_DRM_DW_HDMI_CEC is not set
|
||||
CONFIG_DRM_DW_HDMI_CEC=y
|
||||
# CONFIG_DRM_STI is not set
|
||||
# CONFIG_POWERVR_ROGUE_M is not set
|
||||
# CONFIG_MALI400 is not set
|
||||
CONFIG_MALI_DEVFREQ=y
|
||||
CONFIG_MALI_MIDGARD_FOR_ANDROID=y
|
||||
# CONFIG_MALI_MIDGARD_FOR_LINUX is not set
|
||||
CONFIG_MALI_MIDGARD=m
|
||||
# CONFIG_MALI_GATOR_SUPPORT is not set
|
||||
# CONFIG_MALI_MIDGARD_ENABLE_TRACE is not set
|
||||
# CONFIG_MALI_DMA_FENCE is not set
|
||||
CONFIG_MALI_EXPERT=y
|
||||
# CONFIG_MALI_CORESTACK is not set
|
||||
# CONFIG_MALI_PRFCNT_SET_SECONDARY is not set
|
||||
# CONFIG_MALI_PLATFORM_FAKE is not set
|
||||
# CONFIG_MALI_PLATFORM_DEVICETREE is not set
|
||||
@ -2470,8 +2501,11 @@ CONFIG_MALI_PLATFORM_THIRDPARTY_NAME="rk"
|
||||
# CONFIG_MALI_TRACE_TIMELINE is not set
|
||||
# CONFIG_MALI_SYSTEM_TRACE is not set
|
||||
# CONFIG_MALI_GPU_MMU_AARCH64 is not set
|
||||
CONFIG_MALI_PWRSOFT_765=y
|
||||
# CONFIG_MALI_KUTF is not set
|
||||
# CONFIG_MALI_BIFROST_FOR_ANDROID is not set
|
||||
CONFIG_MALI_BIFROST_FOR_LINUX=y
|
||||
# CONFIG_MALI_BIFROST is not set
|
||||
# CONFIG_MALI_PWRSOFT_765 is not set
|
||||
|
||||
#
|
||||
# Frame buffer Devices
|
||||
@ -2568,7 +2602,8 @@ CONFIG_RK_VCODEC=y
|
||||
#
|
||||
# ROCKCHIP_MPP
|
||||
#
|
||||
# CONFIG_ROCKCHIP_MPP_SERVICE is not set
|
||||
CONFIG_ROCKCHIP_MPP_SERVICE=y
|
||||
CONFIG_ROCKCHIP_MPP_DEVICE=y
|
||||
# CONFIG_VGASTATE is not set
|
||||
CONFIG_VIDEOMODE_HELPERS=y
|
||||
CONFIG_HDMI=y
|
||||
@ -2656,13 +2691,19 @@ CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y
|
||||
# CONFIG_SND_SOC_FSL_ESAI is not set
|
||||
# CONFIG_SND_SOC_IMX_AUDMUX is not set
|
||||
CONFIG_SND_SOC_ROCKCHIP=y
|
||||
# CONFIG_SND_SOC_ROCKCHIP_FORCE_SRAM is not set
|
||||
CONFIG_SND_SOC_ROCKCHIP_I2S=y
|
||||
# CONFIG_SND_SOC_ROCKCHIP_I2S_TDM is not set
|
||||
# CONFIG_SND_SOC_ROCKCHIP_MULTI_DAIS is not set
|
||||
# CONFIG_SND_SOC_ROCKCHIP_PDM is not set
|
||||
CONFIG_SND_SOC_ROCKCHIP_SPDIF=y
|
||||
# CONFIG_SND_SOC_ROCKCHIP_SPDIFRX is not set
|
||||
# CONFIG_SND_SOC_ROCKCHIP_VAD is not set
|
||||
# CONFIG_SND_SOC_ROCKCHIP_DA7219 is not set
|
||||
# CONFIG_SND_SOC_ROCKCHIP_HDMI_ANALOG is not set
|
||||
# CONFIG_SND_SOC_ROCKCHIP_HDMI_DP is not set
|
||||
CONFIG_SND_SOC_ROCKCHIP_MAX98090=y
|
||||
# CONFIG_SND_SOC_ROCKCHIP_MULTICODECS is not set
|
||||
CONFIG_SND_SOC_ROCKCHIP_RT5645=y
|
||||
# CONFIG_SND_SOC_ROCKCHIP_RT5651_TC358749 is not set
|
||||
# CONFIG_SND_SOC_ROCKCHIP_CDNDP is not set
|
||||
@ -2698,6 +2739,7 @@ CONFIG_SND_SOC_I2C_AND_SPI=y
|
||||
# CONFIG_SND_SOC_CS4349 is not set
|
||||
# CONFIG_SND_SOC_CX2072X is not set
|
||||
# CONFIG_SND_SOC_CX20810 is not set
|
||||
# CONFIG_SND_SOC_DUMMY_CODEC is not set
|
||||
# CONFIG_SND_SOC_BT_SCO is not set
|
||||
# CONFIG_SND_SOC_ES8316 is not set
|
||||
CONFIG_SND_SOC_ES8323=y
|
||||
@ -2715,6 +2757,7 @@ CONFIG_SND_SOC_MAX98090=y
|
||||
# CONFIG_SND_SOC_PCM512x_SPI is not set
|
||||
# CONFIG_SND_SOC_RK312X is not set
|
||||
# CONFIG_SND_SOC_RK3228 is not set
|
||||
# CONFIG_SND_SOC_RK3308 is not set
|
||||
# CONFIG_SND_SOC_RK3328 is not set
|
||||
# CONFIG_SND_SOC_RK817 is not set
|
||||
CONFIG_SND_SOC_RL6231=y
|
||||
@ -3061,7 +3104,6 @@ CONFIG_USB_EZUSB_FX2=y
|
||||
# CONFIG_USB_PHY is not set
|
||||
# CONFIG_USB_OTG_WAKELOCK is not set
|
||||
# CONFIG_NOP_USB_XCEIV is not set
|
||||
# CONFIG_AM335X_PHY_USB is not set
|
||||
# CONFIG_USB_GPIO_VBUS is not set
|
||||
# CONFIG_USB_ISP1301 is not set
|
||||
# CONFIG_USB_ULPI is not set
|
||||
@ -3255,6 +3297,7 @@ CONFIG_RTC_INTF_DEV=y
|
||||
# CONFIG_RTC_DRV_DS1374 is not set
|
||||
# CONFIG_RTC_DRV_DS1672 is not set
|
||||
# CONFIG_RTC_DRV_DS3232 is not set
|
||||
# CONFIG_RTC_DRV_FAKE is not set
|
||||
CONFIG_RTC_DRV_HYM8563=y
|
||||
# CONFIG_RTC_DRV_MAX6900 is not set
|
||||
CONFIG_RTC_DRV_RK808=y
|
||||
@ -3518,15 +3561,11 @@ CONFIG_COMMON_CLK_RK808=y
|
||||
#
|
||||
CONFIG_CLKSRC_OF=y
|
||||
CONFIG_CLKSRC_PROBE=y
|
||||
CONFIG_DW_APB_TIMER=y
|
||||
CONFIG_DW_APB_TIMER_OF=y
|
||||
CONFIG_ROCKCHIP_TIMER=y
|
||||
CONFIG_ARM_ARCH_TIMER=y
|
||||
CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y
|
||||
CONFIG_ARM_ARCH_TIMER_VCT_ACCESS=y
|
||||
CONFIG_ARM_GLOBAL_TIMER=y
|
||||
# CONFIG_ARM_TIMER_SP804 is not set
|
||||
CONFIG_CLKSRC_ARM_GLOBAL_TIMER_SCHED_CLOCK=y
|
||||
# CONFIG_ATMEL_PIT is not set
|
||||
# CONFIG_SH_TIMER_CMT is not set
|
||||
# CONFIG_SH_TIMER_MTU2 is not set
|
||||
@ -3560,13 +3599,31 @@ CONFIG_ROCKCHIP_IOMMU=y
|
||||
# SOC (System On Chip) specific Drivers
|
||||
#
|
||||
# CONFIG_SOC_BRCMSTB is not set
|
||||
|
||||
#
|
||||
# CPU selection
|
||||
#
|
||||
# CONFIG_CPU_RK312X is not set
|
||||
# CONFIG_CPU_RK3036 is not set
|
||||
# CONFIG_CPU_RK30XX is not set
|
||||
# CONFIG_CPU_RK3188 is not set
|
||||
CONFIG_CPU_RK3288=y
|
||||
# CONFIG_CPU_RK322X is not set
|
||||
# CONFIG_CPU_RV110X is not set
|
||||
# CONFIG_CPU_PX30 is not set
|
||||
# CONFIG_CPU_RK3308 is not set
|
||||
# CONFIG_CPU_RK3328 is not set
|
||||
# CONFIG_CPU_RK3366 is not set
|
||||
# CONFIG_CPU_RK3368 is not set
|
||||
# CONFIG_CPU_RK3399 is not set
|
||||
CONFIG_ANDROID_VERSION=0x07010000
|
||||
CONFIG_ROCKCHIP_CPUINFO=y
|
||||
# CONFIG_ROCKCHIP_DEVICEINFO is not set
|
||||
# CONFIG_ROCKCHIP_PM_TEST is not set
|
||||
CONFIG_ROCKCHIP_GRF=y
|
||||
CONFIG_ROCKCHIP_PM_DOMAINS=y
|
||||
# CONFIG_ROCKCHIP_PVTM is not set
|
||||
CONFIG_ROCKCHIP_PVTM=y
|
||||
CONFIG_ROCKCHIP_SUSPEND_MODE=y
|
||||
# CONFIG_SUNXI_SRAM is not set
|
||||
# CONFIG_SOC_TI is not set
|
||||
CONFIG_PM_DEVFREQ=y
|
||||
@ -3582,6 +3639,7 @@ CONFIG_DEVFREQ_GOV_USERSPACE=y
|
||||
#
|
||||
# DEVFREQ Drivers
|
||||
#
|
||||
CONFIG_ARM_ROCKCHIP_BUS_DEVFREQ=y
|
||||
CONFIG_ARM_ROCKCHIP_DMC_DEVFREQ=y
|
||||
CONFIG_PM_DEVFREQ_EVENT=y
|
||||
CONFIG_DEVFREQ_EVENT_ROCKCHIP_DFI=y
|
||||
@ -3745,6 +3803,7 @@ CONFIG_SENSORS_TSL2563=y
|
||||
# CONFIG_TSL4531 is not set
|
||||
# CONFIG_US5182D is not set
|
||||
# CONFIG_VCNL4000 is not set
|
||||
# CONFIG_VL6180 is not set
|
||||
|
||||
#
|
||||
# Magnetometer sensors
|
||||
@ -3804,8 +3863,10 @@ CONFIG_PWM=y
|
||||
CONFIG_PWM_SYSFS=y
|
||||
# CONFIG_PWM_CROS_EC is not set
|
||||
# CONFIG_PWM_FSL_FTM is not set
|
||||
CONFIG_PWM_GPIO=y
|
||||
# CONFIG_PWM_PCA9685 is not set
|
||||
CONFIG_PWM_ROCKCHIP=y
|
||||
# CONFIG_PWM_ROCKCHIP_I2S is not set
|
||||
CONFIG_IRQCHIP=y
|
||||
CONFIG_ARM_GIC=y
|
||||
# CONFIG_IPACK_BUS is not set
|
||||
@ -3824,7 +3885,7 @@ CONFIG_GENERIC_PHY=y
|
||||
CONFIG_PHY_ROCKCHIP_USB=y
|
||||
# CONFIG_PHY_ROCKCHIP_INNO_USB2 is not set
|
||||
# CONFIG_PHY_ROCKCHIP_INNO_USB3 is not set
|
||||
# CONFIG_PHY_ROCKCHIP_EMMC is not set
|
||||
CONFIG_PHY_ROCKCHIP_EMMC=y
|
||||
CONFIG_PHY_ROCKCHIP_DP=y
|
||||
# CONFIG_PHY_ROCKCHIP_INNO_MIPI_DPHY is not set
|
||||
# CONFIG_PHY_ROCKCHIP_INNO_HDMI_PHY is not set
|
||||
@ -3846,6 +3907,7 @@ CONFIG_ANDROID=y
|
||||
# CONFIG_ANDROID_BINDER_IPC is not set
|
||||
CONFIG_NVMEM=y
|
||||
CONFIG_ROCKCHIP_EFUSE=y
|
||||
CONFIG_ROCKCHIP_OTP=y
|
||||
# CONFIG_STM is not set
|
||||
# CONFIG_INTEL_TH is not set
|
||||
|
||||
@ -3854,6 +3916,7 @@ CONFIG_ROCKCHIP_EFUSE=y
|
||||
#
|
||||
# CONFIG_FPGA is not set
|
||||
# CONFIG_TEE is not set
|
||||
# CONFIG_RK_FLASH is not set
|
||||
# CONFIG_RK_NAND is not set
|
||||
|
||||
#
|
||||
@ -3866,7 +3929,7 @@ CONFIG_ROCKCHIP_EFUSE=y
|
||||
#
|
||||
# CONFIG_FIRMWARE_MEMMAP is not set
|
||||
CONFIG_HAVE_ARM_SMCCC=y
|
||||
# CONFIG_ROCKCHIP_SIP is not set
|
||||
CONFIG_ROCKCHIP_SIP=y
|
||||
|
||||
#
|
||||
# File systems
|
||||
@ -3964,6 +4027,7 @@ CONFIG_PROC_FS=y
|
||||
CONFIG_PROC_SYSCTL=y
|
||||
CONFIG_PROC_PAGE_MONITOR=y
|
||||
# CONFIG_PROC_CHILDREN is not set
|
||||
CONFIG_PROC_UID=y
|
||||
CONFIG_KERNFS=y
|
||||
CONFIG_SYSFS=y
|
||||
CONFIG_TMPFS=y
|
||||
@ -3993,6 +4057,7 @@ CONFIG_SQUASHFS_ZLIB=y
|
||||
CONFIG_SQUASHFS_LZ4=y
|
||||
CONFIG_SQUASHFS_LZO=y
|
||||
CONFIG_SQUASHFS_XZ=y
|
||||
CONFIG_SQUASHFS_ZSTD=y
|
||||
# CONFIG_SQUASHFS_4K_DEVBLK_SIZE is not set
|
||||
# CONFIG_SQUASHFS_EMBEDDED is not set
|
||||
CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
|
||||
@ -4415,6 +4480,7 @@ CONFIG_CRYPTO_DES=y
|
||||
# CONFIG_CRYPTO_CHACHA20 is not set
|
||||
# CONFIG_CRYPTO_SEED is not set
|
||||
# CONFIG_CRYPTO_SERPENT is not set
|
||||
# CONFIG_CRYPTO_SPECK is not set
|
||||
# CONFIG_CRYPTO_TEA is not set
|
||||
CONFIG_CRYPTO_TWOFISH=y
|
||||
CONFIG_CRYPTO_TWOFISH_COMMON=y
|
||||
@ -4446,6 +4512,7 @@ CONFIG_CRYPTO_USER_API_SKCIPHER=y
|
||||
# CONFIG_CRYPTO_USER_API_AEAD is not set
|
||||
CONFIG_CRYPTO_HASH_INFO=y
|
||||
CONFIG_CRYPTO_HW=y
|
||||
# CONFIG_CRYPTO_DEV_ROCKCHIP is not set
|
||||
CONFIG_ASYMMETRIC_KEY_TYPE=y
|
||||
CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=y
|
||||
CONFIG_PUBLIC_KEY_ALGO_RSA=y
|
||||
@ -4487,13 +4554,16 @@ CONFIG_CRC32_SLICEBY8=y
|
||||
CONFIG_CRC7=y
|
||||
CONFIG_LIBCRC32C=y
|
||||
# CONFIG_CRC8 is not set
|
||||
CONFIG_XXHASH=y
|
||||
# CONFIG_AUDIT_ARCH_COMPAT_GENERIC is not set
|
||||
# CONFIG_RANDOM32_SELFTEST is not set
|
||||
CONFIG_ZLIB_INFLATE=y
|
||||
CONFIG_ZLIB_DEFLATE=m
|
||||
CONFIG_LZO_COMPRESS=y
|
||||
CONFIG_LZO_COMPRESS=m
|
||||
CONFIG_LZO_DECOMPRESS=y
|
||||
CONFIG_LZ4_COMPRESS=m
|
||||
CONFIG_LZ4_DECOMPRESS=y
|
||||
CONFIG_ZSTD_DECOMPRESS=y
|
||||
CONFIG_XZ_DEC=y
|
||||
# CONFIG_XZ_DEC_X86 is not set
|
||||
# CONFIG_XZ_DEC_POWERPC is not set
|
||||
|
@ -1,287 +0,0 @@
|
||||
From f490b48f29fb0b976b7f3d749f14dd4bbb95705a Mon Sep 17 00:00:00 2001
|
||||
From: Ziyuan Xu <xzy.xu@rock-chips.com>
|
||||
Date: Fri, 23 Sep 2016 13:43:18 +0800
|
||||
Subject: [PATCH] MINIARM: HACK: switch vccio_sd to 3.3v while shutdowning
|
||||
|
||||
Change-Id: I80d6d2b61b31f16b6b42b9ffcaab077231a7a91c
|
||||
Signed-off-by: Ziyuan Xu <xzy.xu@rock-chips.com>
|
||||
---
|
||||
drivers/mmc/host/dw_mmc-rockchip.c | 11 +++++++++++
|
||||
1 file changed, 11 insertions(+)
|
||||
|
||||
diff --git a/drivers/mmc/host/dw_mmc-rockchip.c b/drivers/mmc/host/dw_mmc-rockchip.c
|
||||
index 29e3ae99edbc..531ad93ff912 100644
|
||||
--- a/drivers/mmc/host/dw_mmc-rockchip.c
|
||||
+++ b/drivers/mmc/host/dw_mmc-rockchip.c
|
||||
@@ -13,6 +13,7 @@
|
||||
#include <linux/mmc/host.h>
|
||||
#include <linux/mmc/dw_mmc.h>
|
||||
#include <linux/of_address.h>
|
||||
+#include <linux/regulator/consumer.h>
|
||||
#include <linux/slab.h>
|
||||
|
||||
#include "dw_mmc.h"
|
||||
@@ -285,6 +286,15 @@ static int dw_mci_rockchip_probe(struct platform_device *pdev)
|
||||
return dw_mci_pltfm_register(pdev, drv_data);
|
||||
}
|
||||
|
||||
+static void dw_mci_rockchip_platfm_shutdown(struct platform_device *pdev)
|
||||
+{
|
||||
+ struct dw_mci *host = platform_get_drvdata(pdev);
|
||||
+ struct mmc_host *mmc = host->cur_slot->mmc;
|
||||
+
|
||||
+ if (!IS_ERR(mmc->supply.vqmmc))
|
||||
+ regulator_set_voltage(mmc->supply.vqmmc, 3000000, 3300000);
|
||||
+}
|
||||
+
|
||||
#ifdef CONFIG_PM_SLEEP
|
||||
static int dw_mci_rockchip_suspend(struct device *dev)
|
||||
{
|
||||
@@ -308,6 +318,7 @@ static SIMPLE_DEV_PM_OPS(dw_mci_rockchip_pmops,
|
||||
static struct platform_driver dw_mci_rockchip_pltfm_driver = {
|
||||
.probe = dw_mci_rockchip_probe,
|
||||
.remove = dw_mci_pltfm_remove,
|
||||
+ .shutdown = dw_mci_rockchip_platfm_shutdown,
|
||||
.driver = {
|
||||
.name = "dwmmc_rockchip",
|
||||
.of_match_table = dw_mci_rockchip_match,
|
||||
|
||||
From dcd64488045c2c7b54f4257a0f5e6d56f93f28f6 Mon Sep 17 00:00:00 2001
|
||||
From: Ziyuan Xu <xzy.xu@rock-chips.com>
|
||||
Date: Mon, 6 Feb 2017 08:39:46 +0800
|
||||
Subject: [PATCH] MINIARM: HACK: mmc: dw_mmc-rockchip: enable vmmc supply for
|
||||
reboot
|
||||
|
||||
Mmc core has already power off the vmmc since shutdown, re-enable it so
|
||||
that card is active in next reboot.
|
||||
|
||||
Change-Id: Id64ed02844db9d834c820ed5b8c5bf7a0afe4ed5
|
||||
Signed-off-by: Ziyuan Xu <xzy.xu@rock-chips.com>
|
||||
---
|
||||
drivers/mmc/host/dw_mmc-rockchip.c | 7 +++++++
|
||||
1 file changed, 7 insertions(+)
|
||||
|
||||
diff --git a/drivers/mmc/host/dw_mmc-rockchip.c b/drivers/mmc/host/dw_mmc-rockchip.c
|
||||
index 531ad93ff912..eae304077e17 100644
|
||||
--- a/drivers/mmc/host/dw_mmc-rockchip.c
|
||||
+++ b/drivers/mmc/host/dw_mmc-rockchip.c
|
||||
@@ -15,6 +15,7 @@
|
||||
#include <linux/of_address.h>
|
||||
#include <linux/regulator/consumer.h>
|
||||
#include <linux/slab.h>
|
||||
+#include <linux/delay.h>
|
||||
|
||||
#include "dw_mmc.h"
|
||||
#include "dw_mmc-pltfm.h"
|
||||
@@ -290,6 +291,12 @@ static void dw_mci_rockchip_platfm_shutdown(struct platform_device *pdev)
|
||||
{
|
||||
struct dw_mci *host = platform_get_drvdata(pdev);
|
||||
struct mmc_host *mmc = host->cur_slot->mmc;
|
||||
+ int ret;
|
||||
+
|
||||
+ mdelay(20);
|
||||
+
|
||||
+ if (!IS_ERR(mmc->supply.vmmc))
|
||||
+ ret = regulator_enable(mmc->supply.vmmc);
|
||||
|
||||
if (!IS_ERR(mmc->supply.vqmmc))
|
||||
regulator_set_voltage(mmc->supply.vqmmc, 3000000, 3300000);
|
||||
|
||||
From 6947d06a6b9bccb4fca863cb40638b3cdf487fa8 Mon Sep 17 00:00:00 2001
|
||||
From: Jacob Chen <jacob-chen@iotwrt.com>
|
||||
Date: Sat, 22 Jul 2017 19:55:09 +0800
|
||||
Subject: [PATCH] MINIARM: drm/rockchip: update phy settings
|
||||
|
||||
Change-Id: I9e92a4191115e13999183a5d7656d6708adda632
|
||||
Signed-off-by: Jacob Chen <jacob-chen@iotwrt.com>
|
||||
---
|
||||
drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c | 3 +--
|
||||
1 file changed, 1 insertion(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
|
||||
index bdc96cd4253d..cea7b9d6bdb3 100644
|
||||
--- a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
|
||||
+++ b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
|
||||
@@ -347,8 +347,7 @@ static struct dw_hdmi_phy_config rockchip_phy_config[] = {
|
||||
/*pixelclk symbol term vlev*/
|
||||
{ 74250000, 0x8009, 0x0004, 0x0272},
|
||||
{ 165000000, 0x802b, 0x0004, 0x0209},
|
||||
- { 297000000, 0x8039, 0x0005, 0x028d},
|
||||
- { 594000000, 0x8039, 0x0000, 0x019d},
|
||||
+ { 297000000, 0x802d, 0x0001, 0x0149},
|
||||
{ ~0UL, 0x0000, 0x0000, 0x0000}
|
||||
};
|
||||
|
||||
|
||||
From 8b96d29710578f258442bb7975581e30c5c1a209 Mon Sep 17 00:00:00 2001
|
||||
From: Nickey Yang <nickey.yang@rock-chips.com>
|
||||
Date: Mon, 17 Jul 2017 16:35:34 +0800
|
||||
Subject: [PATCH] MINIARM: set npll be used for hdmi only
|
||||
|
||||
Change-Id: I8bebfb2cfb68e3dad172e5547d3886526ad5e912
|
||||
Signed-off-by: Nickey Yang <nickey.yang@rock-chips.com>
|
||||
---
|
||||
arch/arm/boot/dts/rk3288.dtsi | 4 +++-
|
||||
drivers/clk/rockchip/clk-rk3288.c | 6 +++---
|
||||
2 files changed, 6 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/arch/arm/boot/dts/rk3288.dtsi b/arch/arm/boot/dts/rk3288.dtsi
|
||||
index b37d1954d27c..904a7955e347 100644
|
||||
--- a/arch/arm/boot/dts/rk3288.dtsi
|
||||
+++ b/arch/arm/boot/dts/rk3288.dtsi
|
||||
@@ -1027,7 +1027,7 @@
|
||||
<&cru PCLK_PERI>;
|
||||
assigned-clock-rates = <594000000>,
|
||||
<500000000>, <300000000>,
|
||||
- <150000000>, <75000000>,
|
||||
+ <0>, <75000000>,
|
||||
<300000000>, <150000000>,
|
||||
<75000000>;
|
||||
};
|
||||
@@ -1265,6 +1265,8 @@
|
||||
resets = <&cru SRST_LCDC0_AXI>, <&cru SRST_LCDC0_AHB>, <&cru SRST_LCDC0_DCLK>;
|
||||
reset-names = "axi", "ahb", "dclk";
|
||||
iommus = <&vopb_mmu>;
|
||||
+ assigned-clocks = <&cru DCLK_VOP0>;
|
||||
+ assigned-clock-parents = <&cru PLL_NPLL>;
|
||||
status = "disabled";
|
||||
|
||||
vopb_out: port {
|
||||
diff --git a/drivers/clk/rockchip/clk-rk3288.c b/drivers/clk/rockchip/clk-rk3288.c
|
||||
index 4adbace24ff7..9df15059d584 100644
|
||||
--- a/drivers/clk/rockchip/clk-rk3288.c
|
||||
+++ b/drivers/clk/rockchip/clk-rk3288.c
|
||||
@@ -211,9 +211,9 @@ static struct rockchip_pll_clock rk3288_pll_clks[] __initdata = {
|
||||
[cpll] = PLL(pll_rk3066, PLL_CPLL, "cpll", mux_pll_p, 0, RK3288_PLL_CON(8),
|
||||
RK3288_MODE_CON, 8, 7, 0, rk3288_pll_rates),
|
||||
[gpll] = PLL(pll_rk3066, PLL_GPLL, "gpll", mux_pll_p, 0, RK3288_PLL_CON(12),
|
||||
- RK3288_MODE_CON, 12, 8, ROCKCHIP_PLL_SYNC_RATE, rk3288_pll_rates),
|
||||
+ RK3288_MODE_CON, 12, 8, 0, rk3288_pll_rates),
|
||||
[npll] = PLL(pll_rk3066, PLL_NPLL, "npll", mux_pll_p, 0, RK3288_PLL_CON(16),
|
||||
- RK3288_MODE_CON, 14, 9, ROCKCHIP_PLL_SYNC_RATE, rk3288_pll_rates),
|
||||
+ RK3288_MODE_CON, 14, 9, 0, rk3288_pll_rates),
|
||||
};
|
||||
|
||||
static struct clk_div_table div_hclk_cpu_t[] = {
|
||||
@@ -428,7 +428,7 @@ static struct rockchip_clk_branch rk3288_clk_branches[] __initdata = {
|
||||
RK3288_CLKSEL_CON(30), 14, 2, MFLAGS, 8, 5, DFLAGS,
|
||||
RK3288_CLKGATE_CON(3), 4, GFLAGS),
|
||||
|
||||
- COMPOSITE(DCLK_VOP0, "dclk_vop0", mux_pll_src_cpll_gpll_npll_p, 0,
|
||||
+ COMPOSITE(DCLK_VOP0, "dclk_vop0", mux_pll_src_cpll_gpll_npll_p, CLK_SET_RATE_NO_REPARENT | CLK_SET_RATE_PARENT,
|
||||
RK3288_CLKSEL_CON(27), 0, 2, MFLAGS, 8, 8, DFLAGS,
|
||||
RK3288_CLKGATE_CON(3), 1, GFLAGS),
|
||||
COMPOSITE(DCLK_VOP1, "dclk_vop1", mux_pll_src_cpll_gpll_npll_p, 0,
|
||||
|
||||
From 07d84a3e6f43def7af179d417224a610ca7aaf98 Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Karlman <jonas@kwiboo.se>
|
||||
Date: Mon, 11 Dec 2017 23:09:54 +0100
|
||||
Subject: [PATCH] clk: rockchip: rk3288: add more pixel clock rates
|
||||
|
||||
---
|
||||
drivers/clk/rockchip/clk-rk3288.c | 79 +++++++++++++++++++++++++++++++++++++--
|
||||
1 file changed, 75 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/drivers/clk/rockchip/clk-rk3288.c b/drivers/clk/rockchip/clk-rk3288.c
|
||||
index 9df15059d584..e1f3bd273a58 100644
|
||||
--- a/drivers/clk/rockchip/clk-rk3288.c
|
||||
+++ b/drivers/clk/rockchip/clk-rk3288.c
|
||||
@@ -84,23 +84,94 @@ static struct rockchip_pll_rate_table rk3288_pll_rates[] = {
|
||||
RK3066_PLL_RATE( 742500000, 8, 495, 2),
|
||||
RK3066_PLL_RATE( 696000000, 1, 58, 2),
|
||||
RK3066_PLL_RATE( 600000000, 1, 50, 2),
|
||||
- RK3066_PLL_RATE_NB(594000000, 1, 198, 8, 1),
|
||||
+ RK3066_PLL_RATE( 594000000, 2, 99, 2),
|
||||
+ RK3066_PLL_RATE( 552750000, 16, 737, 2),
|
||||
RK3066_PLL_RATE( 552000000, 1, 46, 2),
|
||||
+ RK3066_PLL_RATE( 505250000, 24, 2021, 4),
|
||||
RK3066_PLL_RATE( 504000000, 1, 84, 4),
|
||||
RK3066_PLL_RATE( 500000000, 3, 125, 2),
|
||||
RK3066_PLL_RATE( 456000000, 1, 76, 4),
|
||||
+ RK3066_PLL_RATE( 443250000, 8, 591, 4),
|
||||
RK3066_PLL_RATE( 408000000, 1, 68, 4),
|
||||
RK3066_PLL_RATE( 400000000, 3, 100, 2),
|
||||
RK3066_PLL_RATE( 384000000, 2, 128, 4),
|
||||
+ RK3066_PLL_RATE( 380500000, 12, 761, 4),
|
||||
RK3066_PLL_RATE( 360000000, 1, 60, 4),
|
||||
+ RK3066_PLL_RATE( 356500000, 8, 713, 6),
|
||||
+ RK3066_PLL_RATE( 348500000, 8, 697, 6),
|
||||
+ RK3066_PLL_RATE( 333250000, 16, 1333, 6),
|
||||
+ RK3066_PLL_RATE( 317000000, 4, 317, 6),
|
||||
+ RK3066_PLL_RATE( 312250000, 16, 1249, 6),
|
||||
RK3066_PLL_RATE( 312000000, 1, 52, 4),
|
||||
RK3066_PLL_RATE( 300000000, 1, 50, 4),
|
||||
- RK3066_PLL_RATE( 297000000, 2, 198, 8),
|
||||
+ RK3066_PLL_RATE( 297000000, 4, 297, 6),
|
||||
+ RK3066_PLL_RATE( 288000000, 1, 72, 6),
|
||||
+ RK3066_PLL_RATE( 281250000, 16, 1125, 6),
|
||||
+ RK3066_PLL_RATE( 268500000, 2, 179, 8),
|
||||
+ RK3066_PLL_RATE( 268250000, 12, 1073, 8),
|
||||
+ RK3066_PLL_RATE( 261000000, 1, 87, 8),
|
||||
RK3066_PLL_RATE( 252000000, 1, 84, 8),
|
||||
+ RK3066_PLL_RATE( 245500000, 6, 491, 8),
|
||||
+ RK3066_PLL_RATE( 245250000, 4, 327, 8),
|
||||
+ RK3066_PLL_RATE( 241500000, 2, 161, 8),
|
||||
+ RK3066_PLL_RATE( 234000000, 1, 78, 8),
|
||||
+ RK3066_PLL_RATE( 229500000, 2, 153, 8),
|
||||
+ RK3066_PLL_RATE( 218250000, 16, 1455, 10),
|
||||
RK3066_PLL_RATE( 216000000, 1, 72, 8),
|
||||
- RK3066_PLL_RATE( 148500000, 2, 99, 8),
|
||||
+ RK3066_PLL_RATE( 214750000, 12, 859, 8),
|
||||
+ RK3066_PLL_RATE( 208000000, 3, 260, 10),
|
||||
+ RK3066_PLL_RATE( 204750000, 16, 1365, 10),
|
||||
+ RK3066_PLL_RATE( 202500000, 8, 675, 10),
|
||||
+ RK3066_PLL_RATE( 193250000, 48, 3865, 10),
|
||||
+ RK3066_PLL_RATE( 189000000, 4, 315, 10),
|
||||
+ RK3066_PLL_RATE( 187250000, 48, 3745, 10),
|
||||
+ RK3066_PLL_RATE( 187000000, 12, 935, 10),
|
||||
+ RK3066_PLL_RATE( 182750000, 8, 731, 12),
|
||||
+ RK3066_PLL_RATE( 179500000, 4, 359, 12),
|
||||
+ RK3066_PLL_RATE( 175500000, 4, 351, 12),
|
||||
+ RK3066_PLL_RATE( 162000000, 1, 81, 12),
|
||||
+ RK3066_PLL_RATE( 157500000, 4, 315, 12),
|
||||
+ RK3066_PLL_RATE( 157000000, 12, 1099, 14),
|
||||
+ RK3066_PLL_RATE( 156750000, 16, 1463, 14),
|
||||
+ RK3066_PLL_RATE( 156000000, 1, 91, 14),
|
||||
+ RK3066_PLL_RATE( 154000000, 6, 539, 14),
|
||||
+ RK3066_PLL_RATE( 148500000, 8, 693, 14),
|
||||
+ RK3066_PLL_RATE( 148250000, 8, 593, 12),
|
||||
+ RK3066_PLL_RATE( 146250000, 16, 1365, 14),
|
||||
+ RK3066_PLL_RATE( 140250000, 16, 1309, 14),
|
||||
+ RK3066_PLL_RATE( 136750000, 6, 547, 16),
|
||||
+ RK3066_PLL_RATE( 135000000, 1, 90, 16),
|
||||
RK3066_PLL_RATE( 126000000, 1, 84, 16),
|
||||
- RK3066_PLL_RATE( 48000000, 1, 64, 32),
|
||||
+ RK3066_PLL_RATE( 122500000, 3, 245, 16),
|
||||
+ RK3066_PLL_RATE( 121750000, 6, 487, 16),
|
||||
+ RK3066_PLL_RATE( 119000000, 3, 238, 16),
|
||||
+ RK3066_PLL_RATE( 117500000, 3, 235, 16),
|
||||
+ RK3066_PLL_RATE( 115500000, 1, 77, 16),
|
||||
+ RK3066_PLL_RATE( 108000000, 1, 72, 16),
|
||||
+ RK3066_PLL_RATE( 106500000, 1, 71, 16),
|
||||
+ RK3066_PLL_RATE( 102250000, 6, 409, 16),
|
||||
+ RK3066_PLL_RATE( 101000000, 3, 202, 16),
|
||||
+ RK3066_PLL_RATE( 94500000, 1, 63, 16),
|
||||
+ RK3066_PLL_RATE( 88750000, 6, 355, 16),
|
||||
+ RK3066_PLL_RATE( 85500000, 1, 57, 16),
|
||||
+ RK3066_PLL_RATE( 83500000, 3, 167, 16),
|
||||
+ RK3066_PLL_RATE( 79500000, 1, 53, 16),
|
||||
+ RK3066_PLL_RATE( 78750000, 2, 105, 16),
|
||||
+ RK3066_PLL_RATE( 75000000, 1, 50, 16),
|
||||
+ RK3066_PLL_RATE( 74250000, 2, 99, 16),
|
||||
+ RK3066_PLL_RATE( 73250000, 6, 293, 16),
|
||||
+ RK3066_PLL_RATE( 72000000, 1, 48, 16),
|
||||
+ RK3066_PLL_RATE( 71000000, 3, 142, 16),
|
||||
+ RK3066_PLL_RATE( 68250000, 2, 91, 16),
|
||||
+ RK3066_PLL_RATE( 65000000, 3, 130, 16),
|
||||
+ RK3066_PLL_RATE( 56250000, 2, 75, 16),
|
||||
+ RK3066_PLL_RATE( 50000000, 3, 100, 16),
|
||||
+ RK3066_PLL_RATE( 49500000, 1, 33, 16),
|
||||
+ RK3066_PLL_RATE( 40000000, 3, 80, 16),
|
||||
+ RK3066_PLL_RATE( 36000000, 1, 24, 16),
|
||||
+ RK3066_PLL_RATE( 35500000, 3, 71, 16),
|
||||
+ RK3066_PLL_RATE( 33750000, 2, 45, 16),
|
||||
+ RK3066_PLL_RATE( 31500000, 1, 21, 16),
|
||||
{ /* sentinel */ },
|
||||
};
|
||||
|
@ -17,6 +17,13 @@
|
||||
</setting>
|
||||
</group>
|
||||
</category>
|
||||
<category id="audio">
|
||||
<group id="1">
|
||||
<setting id="audiooutput.audiodevice">
|
||||
<default>ALSA:hdmi:CARD=HDMI,DEV=0</default>
|
||||
</setting>
|
||||
</group>
|
||||
</category>
|
||||
<category id="logging">
|
||||
<group id="1">
|
||||
<setting id="debug.extralogging">
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,4 +1,4 @@
|
||||
From abd68c63a163f8cd1efb40087f6a8569fafe7d64 Mon Sep 17 00:00:00 2001
|
||||
From 65d921fb8b2ec126c5e1ff2b846c179d0ab0e4d1 Mon Sep 17 00:00:00 2001
|
||||
From: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
|
||||
Date: Thu, 19 Nov 2015 11:41:36 -0200
|
||||
Subject: [PATCH] UPSTREAM: smsir.h: remove a now duplicated definition
|
||||
@ -26,7 +26,7 @@ index fc8b7925c532..d9abd96ef48b 100644
|
||||
|
||||
struct ir_t {
|
||||
|
||||
From 8fcf408f26690b403ea41a34c419a7cf25430b4f Mon Sep 17 00:00:00 2001
|
||||
From 3e5e8aa798a67f94158f7fbdfca9b31021ffab90 Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Karlman <jonas@kwiboo.se>
|
||||
Date: Wed, 6 Sep 2017 18:39:09 +0200
|
||||
Subject: [PATCH] [media] rc/keymaps: add keytable for Pine64 IR Remote
|
||||
@ -135,7 +135,7 @@ index 7c4bbc4dfab4..3a34a9631dd1 100644
|
||||
#define RC_MAP_PINNACLE_GREY "rc-pinnacle-grey"
|
||||
#define RC_MAP_PINNACLE_PCTV_HD "rc-pinnacle-pctv-hd"
|
||||
|
||||
From 3b5e2f781693301e6ba4b3d9dcfc23f05402251c Mon Sep 17 00:00:00 2001
|
||||
From 8eab80060ab0c45ed3843ea1ab1d355c2e61c417 Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Karlman <jonas@kwiboo.se>
|
||||
Date: Wed, 6 Sep 2017 18:39:09 +0200
|
||||
Subject: [PATCH] [media] rc/keymaps: add keytable for ODROID IR Remote
|
||||
@ -231,7 +231,7 @@ index 3a34a9631dd1..f1badbfbca90 100644
|
||||
#define RC_MAP_PINE64 "rc-pine64"
|
||||
#define RC_MAP_PINNACLE_COLOR "rc-pinnacle-color"
|
||||
|
||||
From b78470cab538b641350de506371924b48c19455e Mon Sep 17 00:00:00 2001
|
||||
From e4e4bf0e4ffdf3715d29ce0fdc40ac4942b0b509 Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Karlman <jonas@kwiboo.se>
|
||||
Date: Wed, 6 Sep 2017 18:39:09 +0200
|
||||
Subject: [PATCH] [media] rc/keymaps: add keytable for WeTek Hub Remote
|
||||
@ -327,7 +327,7 @@ index f1badbfbca90..cd8590c99e22 100644
|
||||
#define RC_MAP_VIDEOMATE_S350 "rc-videomate-s350"
|
||||
#define RC_MAP_VIDEOMATE_TV_PVR "rc-videomate-tv-pvr"
|
||||
|
||||
From 03250f10b133c09eb0d8793b89afe760572c1f9e Mon Sep 17 00:00:00 2001
|
||||
From c603eb8c844555707072415329d7bb2572d64fdf Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Karlman <jonas@kwiboo.se>
|
||||
Date: Wed, 6 Sep 2017 18:39:09 +0200
|
||||
Subject: [PATCH] [media] rc/keymaps: add keytable for WeTek Play 2 Remote
|
||||
@ -453,3 +453,195 @@ index cd8590c99e22..93cac05a5170 100644
|
||||
#define RC_MAP_VIDEOMATE_K100 "rc-videomate-k100"
|
||||
#define RC_MAP_VIDEOMATE_S350 "rc-videomate-s350"
|
||||
#define RC_MAP_VIDEOMATE_TV_PVR "rc-videomate-tv-pvr"
|
||||
|
||||
From 6c88a757042bd1f3ea3ec197aa930b7beb48e11a Mon Sep 17 00:00:00 2001
|
||||
From: hzq <hzq@t-firefly.com>
|
||||
Date: Mon, 19 Mar 2018 16:47:24 +0800
|
||||
Subject: [PATCH] [media] rc/keymaps: add keytable for ROC-RK3328-CC Remote
|
||||
Controller
|
||||
|
||||
---
|
||||
drivers/media/rc/keymaps/Makefile | 1 +
|
||||
drivers/media/rc/keymaps/rc-roc-cc.c | 52 ++++++++++++++++++++++++++++++++++++
|
||||
include/media/rc-map.h | 1 +
|
||||
3 files changed, 54 insertions(+)
|
||||
create mode 100644 drivers/media/rc/keymaps/rc-roc-cc.c
|
||||
|
||||
diff --git a/drivers/media/rc/keymaps/Makefile b/drivers/media/rc/keymaps/Makefile
|
||||
index 650481039f00..b743914487a5 100644
|
||||
--- a/drivers/media/rc/keymaps/Makefile
|
||||
+++ b/drivers/media/rc/keymaps/Makefile
|
||||
@@ -83,6 +83,7 @@ obj-$(CONFIG_RC_MAP) += rc-adstech-dvb-t-pci.o \
|
||||
rc-rc6-mce.o \
|
||||
rc-real-audio-220-32-keys.o \
|
||||
rc-reddo.o \
|
||||
+ rc-roc-cc.o \
|
||||
rc-snapstream-firefly.o \
|
||||
rc-streamzap.o \
|
||||
rc-tbs-nec.o \
|
||||
diff --git a/drivers/media/rc/keymaps/rc-roc-cc.c b/drivers/media/rc/keymaps/rc-roc-cc.c
|
||||
new file mode 100644
|
||||
index 000000000000..3a2a255d5723
|
||||
--- /dev/null
|
||||
+++ b/drivers/media/rc/keymaps/rc-roc-cc.c
|
||||
@@ -0,0 +1,52 @@
|
||||
+/* Keytable for ROC-RK3328-CC IR Remote Controller
|
||||
+ *
|
||||
+ * Copyright (c) 2017 ROC-RK3328-CC
|
||||
+ *
|
||||
+ * This program is free software; you can redistribute it and/or modify
|
||||
+ * it under the terms of the GNU General Public License as published by
|
||||
+ * the Free Software Foundation; either version 2 of the License, or
|
||||
+ * (at your option) any later version.
|
||||
+ */
|
||||
+
|
||||
+#include <media/rc-map.h>
|
||||
+#include <linux/module.h>
|
||||
+
|
||||
+static struct rc_map_table roc_cc[] = {
|
||||
+ { 0x28d7, KEY_POWER },
|
||||
+ { 0xc837, KEY_MUTE },
|
||||
+ { 0xe01f, KEY_ENTER},
|
||||
+ { 0xc03f, KEY_UP },
|
||||
+ { 0x40bf, KEY_DOWN },
|
||||
+ { 0x708f, KEY_LEFT },
|
||||
+ { 0x58a7, KEY_RIGHT },
|
||||
+ { 0x1ae5, KEY_VOLUMEDOWN },
|
||||
+ { 0xd02f, KEY_VOLUMEUP },
|
||||
+ { 0x3ac5, KEY_WWW },
|
||||
+ { 0x807f, KEY_BACK },
|
||||
+ { 0x12ed, KEY_HOME },
|
||||
+};
|
||||
+
|
||||
+static struct rc_map_list roc_cc_map = {
|
||||
+ .map = {
|
||||
+ .scan = roc_cc,
|
||||
+ .size = ARRAY_SIZE(roc_cc),
|
||||
+ .rc_type = RC_TYPE_NEC,
|
||||
+ .name = RC_MAP_ROC_CC,
|
||||
+ }
|
||||
+};
|
||||
+
|
||||
+static int __init init_rc_map_roc_cc(void)
|
||||
+{
|
||||
+ return rc_map_register(&roc_cc_map);
|
||||
+}
|
||||
+
|
||||
+static void __exit exit_rc_map_roc_cc(void)
|
||||
+{
|
||||
+ rc_map_unregister(&roc_cc_map);
|
||||
+}
|
||||
+
|
||||
+module_init(init_rc_map_roc_cc)
|
||||
+module_exit(exit_rc_map_roc_cc)
|
||||
+
|
||||
+MODULE_LICENSE("GPL");
|
||||
+MODULE_AUTHOR("ROC-RK3328-CC");
|
||||
diff --git a/include/media/rc-map.h b/include/media/rc-map.h
|
||||
index 93cac05a5170..8bbe335e650c 100644
|
||||
--- a/include/media/rc-map.h
|
||||
+++ b/include/media/rc-map.h
|
||||
@@ -191,6 +191,7 @@ void rc_map_init(void);
|
||||
#define RC_MAP_RC6_MCE "rc-rc6-mce"
|
||||
#define RC_MAP_REAL_AUDIO_220_32_KEYS "rc-real-audio-220-32-keys"
|
||||
#define RC_MAP_REDDO "rc-reddo"
|
||||
+#define RC_MAP_ROC_CC "rc-roc-cc"
|
||||
#define RC_MAP_SNAPSTREAM_FIREFLY "rc-snapstream-firefly"
|
||||
#define RC_MAP_STREAMZAP "rc-streamzap"
|
||||
#define RC_MAP_TBS_NEC "rc-tbs-nec"
|
||||
|
||||
From 04a93492c4c715a6a826c93f69e0855ca5534e81 Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Karlman <jonas@kwiboo.se>
|
||||
Date: Tue, 3 Jul 2018 21:55:56 +0200
|
||||
Subject: [PATCH] [media] rc/keymaps: add keytable for T-Chip TRN9 IR Remote
|
||||
Controller
|
||||
|
||||
---
|
||||
drivers/media/rc/keymaps/Makefile | 1 +
|
||||
drivers/media/rc/keymaps/rc-trn9.c | 52 ++++++++++++++++++++++++++++++++++++++
|
||||
include/media/rc-map.h | 1 +
|
||||
3 files changed, 54 insertions(+)
|
||||
create mode 100644 drivers/media/rc/keymaps/rc-trn9.c
|
||||
|
||||
diff --git a/drivers/media/rc/keymaps/Makefile b/drivers/media/rc/keymaps/Makefile
|
||||
index b743914487a5..2aaa1b33ddca 100644
|
||||
--- a/drivers/media/rc/keymaps/Makefile
|
||||
+++ b/drivers/media/rc/keymaps/Makefile
|
||||
@@ -102,6 +102,7 @@ obj-$(CONFIG_RC_MAP) += rc-adstech-dvb-t-pci.o \
|
||||
rc-tt-1500.o \
|
||||
rc-twinhan-dtv-cab-ci.o \
|
||||
rc-twinhan1027.o \
|
||||
+ rc-trn9.o \
|
||||
rc-wetek-hub.o \
|
||||
rc-wetek-play-2.o \
|
||||
rc-videomate-m1f.o \
|
||||
diff --git a/drivers/media/rc/keymaps/rc-trn9.c b/drivers/media/rc/keymaps/rc-trn9.c
|
||||
new file mode 100644
|
||||
index 000000000000..f81bc3a419b3
|
||||
--- /dev/null
|
||||
+++ b/drivers/media/rc/keymaps/rc-trn9.c
|
||||
@@ -0,0 +1,52 @@
|
||||
+/* Keytable for T-Chip TRN9 IR Remote Controller
|
||||
+ *
|
||||
+ * Copyright (c) 2018 Omegamoon
|
||||
+ *
|
||||
+ * This program is free software; you can redistribute it and/or modify
|
||||
+ * it under the terms of the GNU General Public License as published by
|
||||
+ * the Free Software Foundation; either version 2 of the License, or
|
||||
+ * (at your option) any later version.
|
||||
+ */
|
||||
+
|
||||
+#include <media/rc-map.h>
|
||||
+#include <linux/module.h>
|
||||
+
|
||||
+static struct rc_map_table trn9[] = {
|
||||
+ { 0x0014, KEY_POWER },
|
||||
+ { 0x0013, KEY_MENU },
|
||||
+ { 0x0003, KEY_UP },
|
||||
+ { 0x0002, KEY_DOWN },
|
||||
+ { 0x000e, KEY_LEFT },
|
||||
+ { 0x001a, KEY_RIGHT },
|
||||
+ { 0x0007, KEY_OK },
|
||||
+ { 0x0058, KEY_VOLUMEDOWN },
|
||||
+ { 0x005c, KEY_MUTE },
|
||||
+ { 0x000b, KEY_VOLUMEUP },
|
||||
+ { 0x0001, KEY_BACK },
|
||||
+ { 0x0048, KEY_HOME },
|
||||
+};
|
||||
+
|
||||
+static struct rc_map_list trn9_map = {
|
||||
+ .map = {
|
||||
+ .scan = trn9,
|
||||
+ .size = ARRAY_SIZE(trn9),
|
||||
+ .rc_type = RC_TYPE_NEC,
|
||||
+ .name = RC_MAP_TRN9,
|
||||
+ }
|
||||
+};
|
||||
+
|
||||
+static int __init init_rc_map_trn9(void)
|
||||
+{
|
||||
+ return rc_map_register(&trn9_map);
|
||||
+}
|
||||
+
|
||||
+static void __exit exit_rc_map_trn9(void)
|
||||
+{
|
||||
+ rc_map_unregister(&trn9_map);
|
||||
+}
|
||||
+
|
||||
+module_init(init_rc_map_trn9)
|
||||
+module_exit(exit_rc_map_trn9)
|
||||
+
|
||||
+MODULE_LICENSE("GPL");
|
||||
+MODULE_AUTHOR("Omegamoon");
|
||||
diff --git a/include/media/rc-map.h b/include/media/rc-map.h
|
||||
index 8bbe335e650c..66e1c50b38fc 100644
|
||||
--- a/include/media/rc-map.h
|
||||
+++ b/include/media/rc-map.h
|
||||
@@ -210,6 +210,7 @@ void rc_map_init(void);
|
||||
#define RC_MAP_TT_1500 "rc-tt-1500"
|
||||
#define RC_MAP_TWINHAN_DTV_CAB_CI "rc-twinhan-dtv-cab-ci"
|
||||
#define RC_MAP_TWINHAN_VP1027_DVBS "rc-twinhan1027"
|
||||
+#define RC_MAP_TRN9 "rc-trn9"
|
||||
#define RC_MAP_WETEK_HUB "rc-wetek-hub"
|
||||
#define RC_MAP_WETEK_PLAY_2 "rc-wetek-play-2"
|
||||
#define RC_MAP_VIDEOMATE_K100 "rc-videomate-k100"
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 830aaed8ea116ecac827f830729f1d57f96ac22e Mon Sep 17 00:00:00 2001
|
||||
From dbd999a2a4e11f420098860e84bfb3c9151b4622 Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Karlman <jonas@kwiboo.se>
|
||||
Date: Mon, 4 Sep 2017 22:34:19 +0200
|
||||
Subject: [PATCH] BACKPORT: HDMI CEC support from v4.15
|
||||
@ -2392,10 +2392,10 @@ index 000000000000..bdad4b197bcd
|
||||
+ERESTARTSYS
|
||||
+ The wait for a successful transmit was interrupted (e.g. by Ctrl-C).
|
||||
diff --git a/MAINTAINERS b/MAINTAINERS
|
||||
index b88e249026a1..bb1aa323019c 100644
|
||||
index 443bc975b562..225ab2c1d35b 100644
|
||||
--- a/MAINTAINERS
|
||||
+++ b/MAINTAINERS
|
||||
@@ -2657,6 +2657,22 @@ F: drivers/net/ieee802154/cc2520.c
|
||||
@@ -2674,6 +2674,22 @@ F: drivers/net/ieee802154/cc2520.c
|
||||
F: include/linux/spi/cc2520.h
|
||||
F: Documentation/devicetree/bindings/net/ieee802154/cc2520.txt
|
||||
|
||||
@ -2781,7 +2781,7 @@ index 3f0f71adabb4..a639ea653c7e 100644
|
||||
|
||||
/**
|
||||
diff --git a/fs/compat_ioctl.c b/fs/compat_ioctl.c
|
||||
index dcf26537c935..1957c340878d 100644
|
||||
index a52ca5cba015..b0b96fc01da3 100644
|
||||
--- a/fs/compat_ioctl.c
|
||||
+++ b/fs/compat_ioctl.c
|
||||
@@ -57,6 +57,7 @@
|
||||
@ -3041,7 +3041,7 @@ index 2758687300b4..41e8dff588e1 100644
|
||||
/*
|
||||
* MT_TOOL types
|
||||
|
||||
From d97e3abed49306c25ac724841c21c4705c55a6ea Mon Sep 17 00:00:00 2001
|
||||
From 48d7f1f5bd8f2a2252158e7eda0d83975d7b170b Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Karlman <jonas@kwiboo.se>
|
||||
Date: Mon, 4 Sep 2017 22:34:22 +0200
|
||||
Subject: [PATCH] BACKPORT: Pulse Eight HDMI CEC from v4.15
|
||||
@ -3061,10 +3061,10 @@ Subject: [PATCH] BACKPORT: Pulse Eight HDMI CEC from v4.15
|
||||
create mode 100644 drivers/media/usb/pulse8-cec/pulse8-cec.c
|
||||
|
||||
diff --git a/MAINTAINERS b/MAINTAINERS
|
||||
index bb1aa323019c..3ba807edf5c6 100644
|
||||
index 225ab2c1d35b..0c1232c326a5 100644
|
||||
--- a/MAINTAINERS
|
||||
+++ b/MAINTAINERS
|
||||
@@ -8637,6 +8637,13 @@ F: include/linux/tracehook.h
|
||||
@@ -8673,6 +8673,13 @@ F: include/linux/tracehook.h
|
||||
F: include/uapi/linux/ptrace.h
|
||||
F: kernel/ptrace.c
|
||||
|
||||
@ -3944,7 +3944,7 @@ index becdd78295cc..4588c66a8df0 100644
|
||||
|
||||
#endif /* _UAPI_SERIO_H */
|
||||
|
||||
From 6af6d21e67410357403b1f99082ab2c825044657 Mon Sep 17 00:00:00 2001
|
||||
From c9a3bba3534d8673f07a233e5298d12979ada5b8 Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Karlman <jonas@kwiboo.se>
|
||||
Date: Mon, 4 Sep 2017 22:34:24 +0200
|
||||
Subject: [PATCH] BACKPORT: RainShadow Tech HDMI CEC from v4.15
|
||||
@ -3963,10 +3963,10 @@ Subject: [PATCH] BACKPORT: RainShadow Tech HDMI CEC from v4.15
|
||||
create mode 100644 drivers/media/usb/rainshadow-cec/rainshadow-cec.c
|
||||
|
||||
diff --git a/MAINTAINERS b/MAINTAINERS
|
||||
index 3ba807edf5c6..c6413ddaa627 100644
|
||||
index 0c1232c326a5..551555a162c3 100644
|
||||
--- a/MAINTAINERS
|
||||
+++ b/MAINTAINERS
|
||||
@@ -8876,6 +8876,13 @@ L: linux-fbdev@vger.kernel.org
|
||||
@@ -8912,6 +8912,13 @@ L: linux-fbdev@vger.kernel.org
|
||||
S: Maintained
|
||||
F: drivers/video/fbdev/aty/aty128fb.c
|
||||
|
||||
@ -4427,7 +4427,7 @@ index 4588c66a8df0..89b72003fb68 100644
|
||||
|
||||
#endif /* _UAPI_SERIO_H */
|
||||
|
||||
From 4ceffb68390fda7643be488544dc25e439bc164d Mon Sep 17 00:00:00 2001
|
||||
From d7ef718f1c62b9f4e0b7042d5b4040a14335c369 Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Karlman <jonas@kwiboo.se>
|
||||
Date: Sat, 2 Sep 2017 16:23:11 +0200
|
||||
Subject: [PATCH] [media] rc/keymaps: initialize rc-cec early
|
||||
@ -4450,7 +4450,7 @@ index 354c8e724b8e..fb0c2b1f3814 100644
|
||||
|
||||
MODULE_LICENSE("GPL");
|
||||
|
||||
From 3365306ff585f94071383606546cd0f0000c1bb3 Mon Sep 17 00:00:00 2001
|
||||
From e583e082ee42c04d3458ee71521175d39b4daed5 Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Karlman <jonas@kwiboo.se>
|
||||
Date: Sat, 2 Sep 2017 16:23:11 +0200
|
||||
Subject: [PATCH] drm/bridge: dw-hdmi: read edid on hpd event
|
||||
@ -4460,10 +4460,10 @@ Subject: [PATCH] drm/bridge: dw-hdmi: read edid on hpd event
|
||||
1 file changed, 19 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
||||
index a7f2e381a5bd..b98a1c828657 100644
|
||||
index d57d999c50a5..4ae2735f59e4 100644
|
||||
--- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
||||
+++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
||||
@@ -2465,6 +2465,7 @@ static void dw_hdmi_bridge_nop(struct drm_bridge *bridge)
|
||||
@@ -2479,6 +2479,7 @@ static void dw_hdmi_bridge_nop(struct drm_bridge *bridge)
|
||||
static enum drm_connector_status
|
||||
dw_hdmi_connector_detect(struct drm_connector *connector, bool force)
|
||||
{
|
||||
@ -4471,7 +4471,7 @@ index a7f2e381a5bd..b98a1c828657 100644
|
||||
struct dw_hdmi *hdmi = container_of(connector, struct dw_hdmi,
|
||||
connector);
|
||||
|
||||
@@ -2474,7 +2475,24 @@ dw_hdmi_connector_detect(struct drm_connector *connector, bool force)
|
||||
@@ -2488,7 +2489,24 @@ dw_hdmi_connector_detect(struct drm_connector *connector, bool force)
|
||||
dw_hdmi_update_phy_mask(hdmi);
|
||||
mutex_unlock(&hdmi->mutex);
|
||||
|
||||
@ -4497,7 +4497,7 @@ index a7f2e381a5bd..b98a1c828657 100644
|
||||
}
|
||||
|
||||
static int dw_hdmi_connector_get_modes(struct drm_connector *connector)
|
||||
@@ -2867,9 +2885,6 @@ static irqreturn_t dw_hdmi_irq(int irq, void *dev_id)
|
||||
@@ -2891,9 +2909,6 @@ static irqreturn_t dw_hdmi_irq(int irq, void *dev_id)
|
||||
dw_hdmi_update_phy_mask(hdmi);
|
||||
}
|
||||
mutex_unlock(&hdmi->mutex);
|
||||
|
@ -1,4 +1,4 @@
|
||||
From d2ee02d81c40aef4fdf0278bd0dc529a1793af79 Mon Sep 17 00:00:00 2001
|
||||
From dabace918ba0543c5a12e03fb823886891cd82dc Mon Sep 17 00:00:00 2001
|
||||
From: Chris Zhong <zyw@rock-chips.com>
|
||||
Date: Mon, 18 Jul 2016 22:34:34 +0800
|
||||
Subject: [PATCH] UPSTREAM: ASoC: rockchip: correct the spdif clk
|
||||
@ -18,7 +18,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org>
|
||||
1 file changed, 1 insertion(+), 16 deletions(-)
|
||||
|
||||
diff --git a/sound/soc/rockchip/rockchip_spdif.c b/sound/soc/rockchip/rockchip_spdif.c
|
||||
index 44b8c72e6a16..feaba2ad6022 100644
|
||||
index c211750b54ee..784941ca2408 100644
|
||||
--- a/sound/soc/rockchip/rockchip_spdif.c
|
||||
+++ b/sound/soc/rockchip/rockchip_spdif.c
|
||||
@@ -105,21 +105,7 @@ static int rk_spdif_hw_params(struct snd_pcm_substream *substream,
|
||||
@ -53,7 +53,7 @@ index 44b8c72e6a16..feaba2ad6022 100644
|
||||
SPDIF_CFGR_CLK_DIV_MASK | SPDIF_CFGR_HALFWORD_ENABLE |
|
||||
SDPIF_CFGR_VDW_MASK,
|
||||
|
||||
From 2316686749dfb94a33efc7f9238319c050f2c2e2 Mon Sep 17 00:00:00 2001
|
||||
From 3069a5725338532939d13e3dc329f2b3d183b260 Mon Sep 17 00:00:00 2001
|
||||
From: Sugar Zhang <sugar.zhang@rock-chips.com>
|
||||
Date: Wed, 7 Sep 2016 14:30:21 +0800
|
||||
Subject: [PATCH] UPSTREAM: ASoC: rockchip: spdif: restore register during
|
||||
@ -70,10 +70,10 @@ Signed-off-by: Mark Brown <broonie@kernel.org>
|
||||
1 file changed, 11 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/sound/soc/rockchip/rockchip_spdif.c b/sound/soc/rockchip/rockchip_spdif.c
|
||||
index feaba2ad6022..cac85a5538d5 100644
|
||||
index 784941ca2408..831e4caf29d3 100644
|
||||
--- a/sound/soc/rockchip/rockchip_spdif.c
|
||||
+++ b/sound/soc/rockchip/rockchip_spdif.c
|
||||
@@ -69,6 +69,7 @@ static int rk_spdif_runtime_suspend(struct device *dev)
|
||||
@@ -69,6 +69,7 @@ static int __maybe_unused rk_spdif_runtime_suspend(struct device *dev)
|
||||
{
|
||||
struct rk_spdif_dev *spdif = dev_get_drvdata(dev);
|
||||
|
||||
@ -81,7 +81,7 @@ index feaba2ad6022..cac85a5538d5 100644
|
||||
clk_disable_unprepare(spdif->mclk);
|
||||
clk_disable_unprepare(spdif->hclk);
|
||||
|
||||
@@ -92,7 +93,16 @@ static int rk_spdif_runtime_resume(struct device *dev)
|
||||
@@ -92,7 +93,16 @@ static int __maybe_unused rk_spdif_runtime_resume(struct device *dev)
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -100,7 +100,7 @@ index feaba2ad6022..cac85a5538d5 100644
|
||||
|
||||
static int rk_spdif_hw_params(struct snd_pcm_substream *substream,
|
||||
|
||||
From f7d622d11eba15ed1a68b8aedfd920ee4ba5ab12 Mon Sep 17 00:00:00 2001
|
||||
From d852c659ff563456480c55cfea53c578399c04ff Mon Sep 17 00:00:00 2001
|
||||
From: Arnaud Pouliquen <arnaud.pouliquen@st.com>
|
||||
Date: Tue, 3 Jan 2017 16:52:50 +0100
|
||||
Subject: [PATCH] UPSTREAM: DRM: add help to get ELD speaker allocation
|
||||
@ -148,7 +148,7 @@ index 85861b63e77a..55201e7e2ede 100644
|
||||
int (*get_edid_block)(void *data, u8 *buf, unsigned int block,
|
||||
size_t len),
|
||||
|
||||
From a0dc556877d94de213dd9522af39156f0a5bfe2b Mon Sep 17 00:00:00 2001
|
||||
From 4e08e72298c858a65950b98ca62613fb95cd0a35 Mon Sep 17 00:00:00 2001
|
||||
From: Arnaud Pouliquen <arnaud.pouliquen@st.com>
|
||||
Date: Tue, 3 Jan 2017 16:52:51 +0100
|
||||
Subject: [PATCH] UPSTREAM: ASoC: core: add optional pcm_new callback for DAI
|
||||
@ -183,10 +183,10 @@ index 212eaaf172ed..345e4f8ee93f 100644
|
||||
bool bus_control;
|
||||
|
||||
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
|
||||
index 49263f3a50b0..c583022d7910 100644
|
||||
index 3c6713da3ad9..e46e80c0e07d 100644
|
||||
--- a/sound/soc/soc-core.c
|
||||
+++ b/sound/soc/soc-core.c
|
||||
@@ -1277,6 +1277,27 @@ static int soc_probe_dai(struct snd_soc_dai *dai, int order)
|
||||
@@ -1289,6 +1289,27 @@ static int soc_probe_dai(struct snd_soc_dai *dai, int order)
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -214,7 +214,7 @@ index 49263f3a50b0..c583022d7910 100644
|
||||
static int soc_link_dai_widgets(struct snd_soc_card *card,
|
||||
struct snd_soc_dai_link *dai_link,
|
||||
struct snd_soc_pcm_runtime *rtd)
|
||||
@@ -1388,6 +1409,13 @@ static int soc_probe_link_dais(struct snd_soc_card *card, int num, int order)
|
||||
@@ -1400,6 +1421,13 @@ static int soc_probe_link_dais(struct snd_soc_card *card, int num, int order)
|
||||
dai_link->stream_name, ret);
|
||||
return ret;
|
||||
}
|
||||
@ -229,7 +229,7 @@ index 49263f3a50b0..c583022d7910 100644
|
||||
INIT_DELAYED_WORK(&rtd->delayed_work,
|
||||
codec2codec_close_delayed_work);
|
||||
|
||||
From 5c39a02d6f966de9f9f26a98a401c90651ebeb41 Mon Sep 17 00:00:00 2001
|
||||
From 900f1d7bb2cddd1f445e0f3ef92fb0f7056a4c5a Mon Sep 17 00:00:00 2001
|
||||
From: Arnaud Pouliquen <arnaud.pouliquen@st.com>
|
||||
Date: Tue, 3 Jan 2017 16:52:52 +0100
|
||||
Subject: [PATCH] UPSTREAM: ASoC: hdmi-codec: add channel mapping control
|
||||
@ -715,7 +715,7 @@ index 028d60c196ae..cb78d8971b41 100644
|
||||
snd_soc_unregister_codec(&pdev->dev);
|
||||
return 0;
|
||||
|
||||
From 4eb5c7bce96c6856f0e949e598bd9f8ec21d7b56 Mon Sep 17 00:00:00 2001
|
||||
From 5ad6154eea74dec3635e2417f06ad12d3f0a36c4 Mon Sep 17 00:00:00 2001
|
||||
From: Christophe Jaillet <christophe.jaillet@wanadoo.fr>
|
||||
Date: Thu, 15 Jun 2017 07:53:11 +0200
|
||||
Subject: [PATCH] UPSTREAM: ASoC: rockchip: Fix an error handling in
|
||||
@ -734,7 +734,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org>
|
||||
1 file changed, 5 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/sound/soc/rockchip/rockchip_i2s.c b/sound/soc/rockchip/rockchip_i2s.c
|
||||
index 7687368779db..5a3436351efb 100644
|
||||
index b359639c1038..02ff642499bf 100644
|
||||
--- a/sound/soc/rockchip/rockchip_i2s.c
|
||||
+++ b/sound/soc/rockchip/rockchip_i2s.c
|
||||
@@ -658,12 +658,13 @@ static int rockchip_i2s_probe(struct platform_device *pdev)
|
||||
@ -756,7 +756,7 @@ index 7687368779db..5a3436351efb 100644
|
||||
if (val >= 2 && val <= 8)
|
||||
soc_dai->playback.channels_max = val;
|
||||
|
||||
From 3fd7ca46725a4a16a1a52530ac2421bc8e037088 Mon Sep 17 00:00:00 2001
|
||||
From 9aeca2222a8f8a700c446fc9a38235ab2e3a4efd Mon Sep 17 00:00:00 2001
|
||||
From: Markus Elfring <elfring@users.sourceforge.net>
|
||||
Date: Thu, 10 Aug 2017 18:38:09 +0200
|
||||
Subject: [PATCH] UPSTREAM: ASoC: rockchip: Delete an error message for a
|
||||
@ -775,7 +775,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org>
|
||||
1 file changed, 1 insertion(+), 3 deletions(-)
|
||||
|
||||
diff --git a/sound/soc/rockchip/rockchip_i2s.c b/sound/soc/rockchip/rockchip_i2s.c
|
||||
index 5a3436351efb..1da10e79a1bb 100644
|
||||
index 02ff642499bf..16ff8d5e0033 100644
|
||||
--- a/sound/soc/rockchip/rockchip_i2s.c
|
||||
+++ b/sound/soc/rockchip/rockchip_i2s.c
|
||||
@@ -594,10 +594,8 @@ static int rockchip_i2s_probe(struct platform_device *pdev)
|
||||
@ -791,7 +791,7 @@ index 5a3436351efb..1da10e79a1bb 100644
|
||||
i2s->dev = &pdev->dev;
|
||||
|
||||
|
||||
From d6adb14ce27f7ef3687c6d965e781782329c790d Mon Sep 17 00:00:00 2001
|
||||
From dad1bc0769692d7fd45701a4ab3fb55be012e01e Mon Sep 17 00:00:00 2001
|
||||
From: John Keeping <john@metanate.com>
|
||||
Date: Thu, 14 Sep 2017 16:58:55 +0100
|
||||
Subject: [PATCH] UPSTREAM: ASoC: rockchip: i2s: fix unbalanced clk_disable
|
||||
@ -808,10 +808,10 @@ Signed-off-by: Mark Brown <broonie@kernel.org>
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
diff --git a/sound/soc/rockchip/rockchip_i2s.c b/sound/soc/rockchip/rockchip_i2s.c
|
||||
index 1da10e79a1bb..f131dba7645d 100644
|
||||
index 16ff8d5e0033..986ad2efc8e9 100644
|
||||
--- a/sound/soc/rockchip/rockchip_i2s.c
|
||||
+++ b/sound/soc/rockchip/rockchip_i2s.c
|
||||
@@ -713,7 +713,6 @@ static int rockchip_i2s_remove(struct platform_device *pdev)
|
||||
@@ -727,7 +727,6 @@ static int rockchip_i2s_remove(struct platform_device *pdev)
|
||||
if (!pm_runtime_status_suspended(&pdev->dev))
|
||||
i2s_runtime_suspend(&pdev->dev);
|
||||
|
||||
@ -820,77 +820,7 @@ index 1da10e79a1bb..f131dba7645d 100644
|
||||
|
||||
return 0;
|
||||
|
||||
From 2c4899311942a4aaf098faf513ac7200cbc71f11 Mon Sep 17 00:00:00 2001
|
||||
From: Stefan Potyra <Stefan.Potyra@elektrobit.com>
|
||||
Date: Wed, 6 Dec 2017 16:03:24 +0100
|
||||
Subject: [PATCH] UPSTREAM: ASoC: rockchip: disable clock on error
|
||||
|
||||
Disable the clocks in rk_spdif_probe when an error occurs after one
|
||||
of the clocks has been enabled previously.
|
||||
|
||||
Found by Linux Driver Verification project (linuxtesting.org).
|
||||
|
||||
Fixes: f874b80e1571 ASoC: rockchip: Add rockchip SPDIF transceiver driver
|
||||
Signed-off-by: Stefan Potyra <Stefan.Potyra@elektrobit.com>
|
||||
Signed-off-by: Mark Brown <broonie@kernel.org>
|
||||
(cherry picked from commit c7b92172a61b91936be985cb9bc499a4ebc6489b)
|
||||
---
|
||||
sound/soc/rockchip/rockchip_spdif.c | 18 +++++++++++++-----
|
||||
1 file changed, 13 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/sound/soc/rockchip/rockchip_spdif.c b/sound/soc/rockchip/rockchip_spdif.c
|
||||
index cac85a5538d5..6ff8b195acf4 100644
|
||||
--- a/sound/soc/rockchip/rockchip_spdif.c
|
||||
+++ b/sound/soc/rockchip/rockchip_spdif.c
|
||||
@@ -322,26 +322,30 @@ static int rk_spdif_probe(struct platform_device *pdev)
|
||||
spdif->mclk = devm_clk_get(&pdev->dev, "mclk");
|
||||
if (IS_ERR(spdif->mclk)) {
|
||||
dev_err(&pdev->dev, "Can't retrieve rk_spdif master clock\n");
|
||||
- return PTR_ERR(spdif->mclk);
|
||||
+ ret = PTR_ERR(spdif->mclk);
|
||||
+ goto err_disable_hclk;
|
||||
}
|
||||
|
||||
ret = clk_prepare_enable(spdif->mclk);
|
||||
if (ret) {
|
||||
dev_err(spdif->dev, "clock enable failed %d\n", ret);
|
||||
- return ret;
|
||||
+ goto err_disable_clocks;
|
||||
}
|
||||
|
||||
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
||||
regs = devm_ioremap_resource(&pdev->dev, res);
|
||||
- if (IS_ERR(regs))
|
||||
- return PTR_ERR(regs);
|
||||
+ if (IS_ERR(regs)) {
|
||||
+ ret = PTR_ERR(regs);
|
||||
+ goto err_disable_clocks;
|
||||
+ }
|
||||
|
||||
spdif->regmap = devm_regmap_init_mmio_clk(&pdev->dev, "hclk", regs,
|
||||
&rk_spdif_regmap_config);
|
||||
if (IS_ERR(spdif->regmap)) {
|
||||
dev_err(&pdev->dev,
|
||||
"Failed to initialise managed register map\n");
|
||||
- return PTR_ERR(spdif->regmap);
|
||||
+ ret = PTR_ERR(spdif->regmap);
|
||||
+ goto err_disable_clocks;
|
||||
}
|
||||
|
||||
spdif->playback_dma_data.addr = res->start + SPDIF_SMPDR;
|
||||
@@ -373,6 +377,10 @@ static int rk_spdif_probe(struct platform_device *pdev)
|
||||
|
||||
err_pm_runtime:
|
||||
pm_runtime_disable(&pdev->dev);
|
||||
+err_disable_clocks:
|
||||
+ clk_disable_unprepare(spdif->mclk);
|
||||
+err_disable_hclk:
|
||||
+ clk_disable_unprepare(spdif->hclk);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
From 4cc851cd3ae5216602422e85bde844f1ff0e592c Mon Sep 17 00:00:00 2001
|
||||
From 20b260f46771f7313ecd6e296ec6c08a43967eb4 Mon Sep 17 00:00:00 2001
|
||||
From: John Keeping <john@metanate.com>
|
||||
Date: Mon, 8 Jan 2018 16:01:04 +0000
|
||||
Subject: [PATCH] UPSTREAM: ASoC: rockchip: i2s: fix playback after runtime
|
||||
@ -926,7 +856,7 @@ Signed-off-by: John Keeping <john@metanate.com>
|
||||
1 file changed, 6 insertions(+)
|
||||
|
||||
diff --git a/sound/soc/rockchip/rockchip_i2s.c b/sound/soc/rockchip/rockchip_i2s.c
|
||||
index f131dba7645d..0b9bb973b5a7 100644
|
||||
index 986ad2efc8e9..5297373fe6c4 100644
|
||||
--- a/sound/soc/rockchip/rockchip_i2s.c
|
||||
+++ b/sound/soc/rockchip/rockchip_i2s.c
|
||||
@@ -514,6 +514,7 @@ static bool rockchip_i2s_rd_reg(struct device *dev, unsigned int reg)
|
||||
@ -957,7 +887,7 @@ index f131dba7645d..0b9bb973b5a7 100644
|
||||
return false;
|
||||
}
|
||||
|
||||
From 4d40b158d955d27eef520c49f221cd7ed31d9ae0 Mon Sep 17 00:00:00 2001
|
||||
From fa8e48f2fd0abe00ee0f04128a2e9b4fed184c3f Mon Sep 17 00:00:00 2001
|
||||
From: Romain Perier <romain.perier@collabora.com>
|
||||
Date: Fri, 14 Apr 2017 10:31:12 +0200
|
||||
Subject: [PATCH] UPSTREAM: drm: dw-hdmi: add specific I2S and AHB functions
|
||||
@ -981,23 +911,24 @@ Signed-off-by: Archit Taneja <architt@codeaurora.org>
|
||||
Link: http://patchwork.freedesktop.org/patch/msgid/20170414083113.4255-2-romain.perier@collabora.com
|
||||
(cherry picked from commit a7d555d2f2bd675d641e742a202a5e4b37d4d019)
|
||||
---
|
||||
drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 26 ++++++++++++++++++++++++--
|
||||
1 file changed, 24 insertions(+), 2 deletions(-)
|
||||
drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 27 +++++++++++++++++++++++++--
|
||||
1 file changed, 25 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
||||
index a7f2e381a5bd..da4340491fea 100644
|
||||
index d57d999c50a5..0541d96be662 100644
|
||||
--- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
||||
+++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
||||
@@ -261,6 +261,8 @@ struct dw_hdmi {
|
||||
|
||||
void (*write)(struct dw_hdmi *hdmi, u8 val, int offset);
|
||||
@@ -263,6 +263,9 @@ struct dw_hdmi {
|
||||
u8 (*read)(struct dw_hdmi *hdmi, int offset);
|
||||
|
||||
bool initialized; /* hdmi is enabled before bind */
|
||||
+
|
||||
+ void (*enable_audio)(struct dw_hdmi *hdmi);
|
||||
+ void (*disable_audio)(struct dw_hdmi *hdmi);
|
||||
};
|
||||
|
||||
#define HDMI_IH_PHY_STAT0_RX_SENSE \
|
||||
@@ -811,13 +813,29 @@ void dw_hdmi_set_sample_rate(struct dw_hdmi *hdmi, unsigned int rate)
|
||||
@@ -821,13 +824,29 @@ void dw_hdmi_set_sample_rate(struct dw_hdmi *hdmi, unsigned int rate)
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(dw_hdmi_set_sample_rate);
|
||||
|
||||
@ -1028,7 +959,7 @@ index a7f2e381a5bd..da4340491fea 100644
|
||||
spin_unlock_irqrestore(&hdmi->audio_lock, flags);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(dw_hdmi_audio_enable);
|
||||
@@ -828,7 +846,8 @@ void dw_hdmi_audio_disable(struct dw_hdmi *hdmi)
|
||||
@@ -838,7 +857,8 @@ void dw_hdmi_audio_disable(struct dw_hdmi *hdmi)
|
||||
|
||||
spin_lock_irqsave(&hdmi->audio_lock, flags);
|
||||
hdmi->audio_enable = false;
|
||||
@ -1038,7 +969,7 @@ index a7f2e381a5bd..da4340491fea 100644
|
||||
spin_unlock_irqrestore(&hdmi->audio_lock, flags);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(dw_hdmi_audio_disable);
|
||||
@@ -3677,6 +3696,8 @@ int dw_hdmi_bind(struct device *dev, struct device *master,
|
||||
@@ -3706,6 +3726,8 @@ int dw_hdmi_bind(struct device *dev, struct device *master,
|
||||
audio.irq = irq;
|
||||
audio.hdmi = hdmi;
|
||||
audio.eld = hdmi->connector.eld;
|
||||
@ -1047,7 +978,7 @@ index a7f2e381a5bd..da4340491fea 100644
|
||||
|
||||
pdevinfo.name = "dw-hdmi-ahb-audio";
|
||||
pdevinfo.data = &audio;
|
||||
@@ -3690,6 +3711,7 @@ int dw_hdmi_bind(struct device *dev, struct device *master,
|
||||
@@ -3719,6 +3741,7 @@ int dw_hdmi_bind(struct device *dev, struct device *master,
|
||||
audio.write = hdmi_writeb;
|
||||
audio.read = hdmi_readb;
|
||||
audio.mod = hdmi_modb;
|
||||
@ -1056,7 +987,7 @@ index a7f2e381a5bd..da4340491fea 100644
|
||||
pdevinfo.name = "dw-hdmi-i2s-audio";
|
||||
pdevinfo.data = &audio;
|
||||
|
||||
From 4ea3fd9308b3bc3b5e7699e4a52e3f7bca6e857e Mon Sep 17 00:00:00 2001
|
||||
From f856228e8933ba1e6375dbda53cc59da8d71647a Mon Sep 17 00:00:00 2001
|
||||
From: Romain Perier <romain.perier@collabora.com>
|
||||
Date: Thu, 20 Apr 2017 14:34:34 +0530
|
||||
Subject: [PATCH] UPSTREAM: drm: dw-hdmi: gate audio clock from the I2S
|
||||
@ -1084,10 +1015,10 @@ Signed-off-by: Archit Taneja <architt@codeaurora.org>
|
||||
1 file changed, 17 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
||||
index da4340491fea..e1a5966ce394 100644
|
||||
index 0541d96be662..f3a2034a0883 100644
|
||||
--- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
||||
+++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
||||
@@ -813,6 +813,15 @@ void dw_hdmi_set_sample_rate(struct dw_hdmi *hdmi, unsigned int rate)
|
||||
@@ -824,6 +824,15 @@ void dw_hdmi_set_sample_rate(struct dw_hdmi *hdmi, unsigned int rate)
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(dw_hdmi_set_sample_rate);
|
||||
|
||||
@ -1103,7 +1034,7 @@ index da4340491fea..e1a5966ce394 100644
|
||||
static void dw_hdmi_ahb_audio_enable(struct dw_hdmi *hdmi)
|
||||
{
|
||||
hdmi_set_cts_n(hdmi, hdmi->audio_cts, hdmi->audio_n);
|
||||
@@ -826,6 +835,12 @@ static void dw_hdmi_ahb_audio_disable(struct dw_hdmi *hdmi)
|
||||
@@ -837,6 +846,12 @@ static void dw_hdmi_ahb_audio_disable(struct dw_hdmi *hdmi)
|
||||
static void dw_hdmi_i2s_audio_enable(struct dw_hdmi *hdmi)
|
||||
{
|
||||
hdmi_set_cts_n(hdmi, hdmi->audio_cts, hdmi->audio_n);
|
||||
@ -1116,7 +1047,7 @@ index da4340491fea..e1a5966ce394 100644
|
||||
}
|
||||
|
||||
void dw_hdmi_audio_enable(struct dw_hdmi *hdmi)
|
||||
@@ -2138,12 +2153,6 @@ static void dw_hdmi_enable_video_path(struct dw_hdmi *hdmi)
|
||||
@@ -2149,12 +2164,6 @@ static void dw_hdmi_enable_video_path(struct dw_hdmi *hdmi)
|
||||
HDMI_MC_FLOWCTRL);
|
||||
}
|
||||
|
||||
@ -1129,7 +1060,7 @@ index da4340491fea..e1a5966ce394 100644
|
||||
/* Workaround to clear the overflow condition */
|
||||
static void dw_hdmi_clear_overflow(struct dw_hdmi *hdmi)
|
||||
{
|
||||
@@ -2295,7 +2304,7 @@ static int dw_hdmi_setup(struct dw_hdmi *hdmi, struct drm_display_mode *mode)
|
||||
@@ -2306,7 +2315,7 @@ static int dw_hdmi_setup(struct dw_hdmi *hdmi, struct drm_display_mode *mode)
|
||||
|
||||
/* HDMI Initialization Step E - Configure audio */
|
||||
hdmi_clk_regenerator_update_pixel_clock(hdmi);
|
||||
@ -1138,7 +1069,7 @@ index da4340491fea..e1a5966ce394 100644
|
||||
}
|
||||
|
||||
/* not for DVI mode */
|
||||
@@ -3712,6 +3721,7 @@ int dw_hdmi_bind(struct device *dev, struct device *master,
|
||||
@@ -3742,6 +3751,7 @@ int dw_hdmi_bind(struct device *dev, struct device *master,
|
||||
audio.read = hdmi_readb;
|
||||
audio.mod = hdmi_modb;
|
||||
hdmi->enable_audio = dw_hdmi_i2s_audio_enable;
|
||||
@ -1147,7 +1078,7 @@ index da4340491fea..e1a5966ce394 100644
|
||||
pdevinfo.name = "dw-hdmi-i2s-audio";
|
||||
pdevinfo.data = &audio;
|
||||
|
||||
From df0540deb663a3d0b3852b88ded0817146f20e67 Mon Sep 17 00:00:00 2001
|
||||
From 5736074e471dc5306e07581bf0958043cf434341 Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Karlman <jonas@kwiboo.se>
|
||||
Date: Mon, 7 Aug 2017 22:24:15 +0200
|
||||
Subject: [PATCH] drm: dw-hdmi-i2s: sync with upstream
|
||||
@ -1226,7 +1157,7 @@ index f1f62d8c1d16..5ff993a35ab6 100644
|
||||
.name = DRIVER_NAME,
|
||||
.owner = THIS_MODULE,
|
||||
|
||||
From 8835208cc656c44c6c1238f637a428f6f5403bf4 Mon Sep 17 00:00:00 2001
|
||||
From d2f29756df76806c12fa12b668aeb8ac5f626bdd Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Karlman <jonas@kwiboo.se>
|
||||
Date: Sun, 2 Apr 2017 11:33:39 +0200
|
||||
Subject: [PATCH] drm: dw-hdmi-i2s: implement get_eld
|
||||
@ -1283,10 +1214,10 @@ index 5ff993a35ab6..e7312571e2cb 100644
|
||||
|
||||
static int snd_dw_hdmi_probe(struct platform_device *pdev)
|
||||
diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
||||
index e1a5966ce394..605a55e3693d 100644
|
||||
index f3a2034a0883..c222b6455f03 100644
|
||||
--- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
||||
+++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
||||
@@ -3720,6 +3720,7 @@ int dw_hdmi_bind(struct device *dev, struct device *master,
|
||||
@@ -3750,6 +3750,7 @@ int dw_hdmi_bind(struct device *dev, struct device *master,
|
||||
audio.write = hdmi_writeb;
|
||||
audio.read = hdmi_readb;
|
||||
audio.mod = hdmi_modb;
|
||||
@ -1295,7 +1226,7 @@ index e1a5966ce394..605a55e3693d 100644
|
||||
hdmi->disable_audio = dw_hdmi_i2s_audio_disable;
|
||||
|
||||
|
||||
From 572da20ab103a328f7b3afdb78c93fb62947ff78 Mon Sep 17 00:00:00 2001
|
||||
From 18a9fcdb5cbde0462179d04336622cb4f97c2a7e Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Karlman <jonas@kwiboo.se>
|
||||
Date: Mon, 17 Apr 2017 13:09:16 +0200
|
||||
Subject: [PATCH] drm: dw-hdmi-i2s: configure channel allocation
|
||||
@ -1318,29 +1249,7 @@ index e7312571e2cb..1d4570e3fbed 100644
|
||||
/* Set LFEPBLDOWN-MIX INH and LSV */
|
||||
hdmi_write(audio, 0x00, HDMI_FC_AUDICONF3);
|
||||
|
||||
From 1f19793a9437b295d7dfca822f511e487c47ef4a Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Karlman <jonas@kwiboo.se>
|
||||
Date: Tue, 2 May 2017 18:57:19 +0200
|
||||
Subject: [PATCH] ASoC: hdmi-codec: fix I2S audio in Kodi
|
||||
|
||||
---
|
||||
sound/soc/codecs/hdmi-codec.c | 1 -
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
diff --git a/sound/soc/codecs/hdmi-codec.c b/sound/soc/codecs/hdmi-codec.c
|
||||
index cb78d8971b41..9ebca57014e4 100644
|
||||
--- a/sound/soc/codecs/hdmi-codec.c
|
||||
+++ b/sound/soc/codecs/hdmi-codec.c
|
||||
@@ -758,7 +758,6 @@ static struct snd_soc_dai_driver hdmi_i2s_dai = {
|
||||
.channels_max = 8,
|
||||
.rates = HDMI_RATES,
|
||||
.formats = I2S_FORMATS,
|
||||
- .sig_bits = 24,
|
||||
},
|
||||
.ops = &hdmi_dai_ops,
|
||||
.pcm_new = hdmi_codec_pcm_new,
|
||||
|
||||
From 559c23102f957335d697de310dce921f72fff040 Mon Sep 17 00:00:00 2001
|
||||
From c19ba12d08a8c491d21a1daf305b1b58231ca362 Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Karlman <jonas@kwiboo.se>
|
||||
Date: Mon, 14 Aug 2017 00:14:05 +0200
|
||||
Subject: [PATCH] ASoC: hdmi-codec: reorder channel map
|
||||
@ -1350,7 +1259,7 @@ Subject: [PATCH] ASoC: hdmi-codec: reorder channel map
|
||||
1 file changed, 52 insertions(+), 61 deletions(-)
|
||||
|
||||
diff --git a/sound/soc/codecs/hdmi-codec.c b/sound/soc/codecs/hdmi-codec.c
|
||||
index 9ebca57014e4..e65060ae8ffc 100644
|
||||
index cb78d8971b41..b74659bc3bbc 100644
|
||||
--- a/sound/soc/codecs/hdmi-codec.c
|
||||
+++ b/sound/soc/codecs/hdmi-codec.c
|
||||
@@ -205,78 +205,69 @@ const struct snd_pcm_chmap_elem hdmi_codec_8ch_chmaps[] = {
|
||||
@ -1485,7 +1394,7 @@ index 9ebca57014e4..e65060ae8ffc 100644
|
||||
|
||||
struct hdmi_codec_priv {
|
||||
|
||||
From d6e589fc6c9211db345d667545f191e187640e41 Mon Sep 17 00:00:00 2001
|
||||
From 0b22ce2a2766052fe28a3162623d19ba38adaef5 Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Karlman <jonas@kwiboo.se>
|
||||
Date: Sun, 27 Aug 2017 23:32:40 +0200
|
||||
Subject: [PATCH] ASoC: codecs: rk3328: limit to working rates
|
||||
@ -1513,20 +1422,109 @@ index af1b7429b6d4..d0b4578ffa0e 100644
|
||||
SNDRV_PCM_FMTBIT_S20_3LE |
|
||||
SNDRV_PCM_FMTBIT_S24_LE |
|
||||
|
||||
From 8f4b1d8cd40d4e052214c4abc200ab68f1a4bb78 Mon Sep 17 00:00:00 2001
|
||||
From f96be8cf25bfda88d5c492f42e1f6ca5951356f3 Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Karlman <jonas@kwiboo.se>
|
||||
Date: Mon, 14 Aug 2017 00:14:05 +0200
|
||||
Date: Sun, 8 Jul 2018 12:34:43 +0200
|
||||
Subject: [PATCH] drm: dw-hdmi: change audio config
|
||||
|
||||
---
|
||||
drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 14 +++++---------
|
||||
1 file changed, 5 insertions(+), 9 deletions(-)
|
||||
drivers/gpu/drm/bridge/synopsys/dw-hdmi-i2s-audio.c | 9 ++-------
|
||||
drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 15 ++++++++++++---
|
||||
2 files changed, 14 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-i2s-audio.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-i2s-audio.c
|
||||
index 1d4570e3fbed..d0904f6b7a82 100644
|
||||
--- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-i2s-audio.c
|
||||
+++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-i2s-audio.c
|
||||
@@ -110,8 +110,7 @@ static int dw_hdmi_i2s_hw_params(struct device *dev, void *data,
|
||||
HDMI_AUD_INT_FIFO_FULL_MSK, HDMI_AUD_INT);
|
||||
hdmi_update_bits(audio, HDMI_AUD_CONF0_SW_RESET,
|
||||
HDMI_AUD_CONF0_SW_RESET, HDMI_AUD_CONF0);
|
||||
- hdmi_update_bits(audio, HDMI_MC_SWRSTZ_I2S_RESET_MSK,
|
||||
- HDMI_MC_SWRSTZ_I2S_RESET_MSK, HDMI_MC_SWRSTZ);
|
||||
+ hdmi_write(audio, (u8)~HDMI_MC_SWRSTZ_I2S_RESET_MSK, HDMI_MC_SWRSTZ);
|
||||
|
||||
switch (hparms->mode) {
|
||||
case NLPCM:
|
||||
@@ -193,11 +192,6 @@ static int dw_hdmi_i2s_hw_params(struct device *dev, void *data,
|
||||
/* Set LFEPBLDOWN-MIX INH and LSV */
|
||||
hdmi_write(audio, 0x00, HDMI_FC_AUDICONF3);
|
||||
|
||||
- hdmi_update_bits(audio, HDMI_AUD_CONF0_SW_RESET,
|
||||
- HDMI_AUD_CONF0_SW_RESET, HDMI_AUD_CONF0);
|
||||
- hdmi_update_bits(audio, HDMI_MC_SWRSTZ_I2S_RESET_MSK,
|
||||
- HDMI_MC_SWRSTZ_I2S_RESET_MSK, HDMI_MC_SWRSTZ);
|
||||
-
|
||||
dw_hdmi_audio_enable(hdmi);
|
||||
|
||||
return 0;
|
||||
@@ -211,6 +205,7 @@ static void dw_hdmi_i2s_audio_shutdown(struct device *dev, void *data)
|
||||
dw_hdmi_audio_disable(hdmi);
|
||||
|
||||
hdmi_write(audio, HDMI_AUD_CONF0_SW_RESET, HDMI_AUD_CONF0);
|
||||
+ hdmi_write(audio, (u8)~HDMI_MC_SWRSTZ_I2S_RESET_MSK, HDMI_MC_SWRSTZ);
|
||||
}
|
||||
|
||||
static int dw_hdmi_i2s_get_eld(struct device *dev, void *data, u8 *buf, size_t len)
|
||||
diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
||||
index 605a55e3693d..661b1259ebe0 100644
|
||||
index c222b6455f03..065723179791 100644
|
||||
--- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
||||
+++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
||||
@@ -628,18 +628,14 @@ static struct i2c_adapter *dw_hdmi_i2c_adapter(struct dw_hdmi *hdmi)
|
||||
@@ -89,6 +89,7 @@ static const struct dw_hdmi_audio_tmds_n common_tmds_n_table[] = {
|
||||
{ .tmds = 71000000, .n_32k = 4096, .n_44k1 = 7056, .n_48k = 6144, },
|
||||
{ .tmds = 72000000, .n_32k = 4096, .n_44k1 = 5635, .n_48k = 6144, },
|
||||
{ .tmds = 73250000, .n_32k = 4096, .n_44k1 = 14112, .n_48k = 6144, },
|
||||
+ { .tmds = 74176000, .n_32k = 11648, .n_44k1 = 17836, .n_48k = 11648, },
|
||||
{ .tmds = 74250000, .n_32k = 4096, .n_44k1 = 6272, .n_48k = 6144, },
|
||||
{ .tmds = 75000000, .n_32k = 4096, .n_44k1 = 5880, .n_48k = 6144, },
|
||||
{ .tmds = 78750000, .n_32k = 4096, .n_44k1 = 5600, .n_48k = 6144, },
|
||||
@@ -105,13 +106,16 @@ static const struct dw_hdmi_audio_tmds_n common_tmds_n_table[] = {
|
||||
{ .tmds = 119000000, .n_32k = 4096, .n_44k1 = 5544, .n_48k = 6144, },
|
||||
{ .tmds = 135000000, .n_32k = 4096, .n_44k1 = 5488, .n_48k = 6144, },
|
||||
{ .tmds = 146250000, .n_32k = 4096, .n_44k1 = 6272, .n_48k = 6144, },
|
||||
- { .tmds = 148500000, .n_32k = 4096, .n_44k1 = 5488, .n_48k = 6144, },
|
||||
+ { .tmds = 148352000, .n_32k = 11648, .n_44k1 = 8918, .n_48k = 5824, },
|
||||
+ { .tmds = 148500000, .n_32k = 4096, .n_44k1 = 6272, .n_48k = 6144, },
|
||||
{ .tmds = 154000000, .n_32k = 4096, .n_44k1 = 5544, .n_48k = 6144, },
|
||||
{ .tmds = 162000000, .n_32k = 4096, .n_44k1 = 5684, .n_48k = 6144, },
|
||||
|
||||
/* For 297 MHz+ HDMI spec have some other rule for setting N */
|
||||
- { .tmds = 297000000, .n_32k = 3073, .n_44k1 = 4704, .n_48k = 5120, },
|
||||
- { .tmds = 594000000, .n_32k = 3073, .n_44k1 = 9408, .n_48k = 10240, },
|
||||
+ { .tmds = 296703000, .n_32k = 5824, .n_44k1 = 4459, .n_48k = 5824, },
|
||||
+ { .tmds = 297000000, .n_32k = 3072, .n_44k1 = 4704, .n_48k = 5120, },
|
||||
+ { .tmds = 593407000, .n_32k = 5824, .n_44k1 = 8918, .n_48k = 5824, },
|
||||
+ { .tmds = 594000000, .n_32k = 3072, .n_44k1 = 9408, .n_48k = 6144, },
|
||||
|
||||
/* End of table */
|
||||
{ .tmds = 0, .n_32k = 0, .n_44k1 = 0, .n_48k = 0, },
|
||||
@@ -831,6 +835,11 @@ static void hdmi_enable_audio_clk(struct dw_hdmi *hdmi, bool enable)
|
||||
else
|
||||
hdmi->mc_clkdis |= HDMI_MC_CLKDIS_AUDCLK_DISABLE;
|
||||
hdmi_writeb(hdmi, hdmi->mc_clkdis, HDMI_MC_CLKDIS);
|
||||
+
|
||||
+ if (enable) {
|
||||
+ hdmi_set_cts_n(hdmi, 0, 0);
|
||||
+ hdmi_set_cts_n(hdmi, hdmi->audio_cts, hdmi->audio_n);
|
||||
+ }
|
||||
}
|
||||
|
||||
static void dw_hdmi_ahb_audio_enable(struct dw_hdmi *hdmi)
|
||||
|
||||
From ed2e01d46f3bbf3eda4d37ce2a6e8874b15a478a Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Karlman <jonas@kwiboo.se>
|
||||
Date: Sun, 8 Jul 2018 12:56:51 +0200
|
||||
Subject: [PATCH] WIP: drm: dw-hdmi: use Auto CTS mode
|
||||
|
||||
---
|
||||
drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 52 ++++++++++++++++++-------------
|
||||
1 file changed, 31 insertions(+), 21 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
||||
index 065723179791..841bdfcae3e0 100644
|
||||
--- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
||||
+++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
||||
@@ -643,14 +643,18 @@ static struct i2c_adapter *dw_hdmi_i2c_adapter(struct dw_hdmi *hdmi)
|
||||
static void hdmi_set_cts_n(struct dw_hdmi *hdmi, unsigned int cts,
|
||||
unsigned int n)
|
||||
{
|
||||
@ -1535,35 +1533,65 @@ index 605a55e3693d..661b1259ebe0 100644
|
||||
-
|
||||
- /* nshift factor = 0 */
|
||||
- hdmi_modb(hdmi, 0, HDMI_AUD_CTS3_N_SHIFT_MASK, HDMI_AUD_CTS3);
|
||||
+ hdmi_modb(hdmi, 0x80, 0x80, HDMI_AUD_N3);
|
||||
|
||||
hdmi_writeb(hdmi, ((cts >> 16) & HDMI_AUD_CTS3_AUDCTS19_16_MASK) |
|
||||
HDMI_AUD_CTS3_CTS_MANUAL, HDMI_AUD_CTS3);
|
||||
-
|
||||
- hdmi_writeb(hdmi, ((cts >> 16) & HDMI_AUD_CTS3_AUDCTS19_16_MASK) |
|
||||
- HDMI_AUD_CTS3_CTS_MANUAL, HDMI_AUD_CTS3);
|
||||
+ /* Use Auto CTS mode with CTS is unknown */
|
||||
+ if (cts) {
|
||||
+ /* Must be set/cleared first */
|
||||
+ hdmi_modb(hdmi, 0, HDMI_AUD_CTS3_CTS_MANUAL, HDMI_AUD_CTS3);
|
||||
+
|
||||
+ /* nshift factor = 0 */
|
||||
+ hdmi_modb(hdmi, 0, HDMI_AUD_CTS3_N_SHIFT_MASK, HDMI_AUD_CTS3);
|
||||
+
|
||||
+ hdmi_writeb(hdmi, ((cts >> 16) & HDMI_AUD_CTS3_AUDCTS19_16_MASK) |
|
||||
+ HDMI_AUD_CTS3_CTS_MANUAL, HDMI_AUD_CTS3);
|
||||
+ } else
|
||||
+ hdmi_writeb(hdmi, 0, HDMI_AUD_CTS3);
|
||||
hdmi_writeb(hdmi, (cts >> 8) & 0xff, HDMI_AUD_CTS2);
|
||||
hdmi_writeb(hdmi, cts & 0xff, HDMI_AUD_CTS1);
|
||||
|
||||
- hdmi_writeb(hdmi, (n >> 16) & 0x0f, HDMI_AUD_N3);
|
||||
+ hdmi_writeb(hdmi, ((n >> 16) & 0x0f) | 0x80, HDMI_AUD_N3);
|
||||
hdmi_writeb(hdmi, (n >> 8) & 0xff, HDMI_AUD_N2);
|
||||
hdmi_writeb(hdmi, n & 0xff, HDMI_AUD_N1);
|
||||
}
|
||||
@@ -784,7 +780,7 @@ static void hdmi_set_clk_regenerator(struct dw_hdmi *hdmi,
|
||||
@@ -777,24 +781,30 @@ static void hdmi_set_clk_regenerator(struct dw_hdmi *hdmi,
|
||||
{
|
||||
unsigned long ftdms = pixel_clk;
|
||||
unsigned int n, cts;
|
||||
+ u8 config3;
|
||||
u64 tmp;
|
||||
|
||||
n = hdmi_find_n(hdmi, pixel_clk, sample_rate);
|
||||
|
||||
- /*
|
||||
- * Compute the CTS value from the N value. Note that CTS and N
|
||||
- * can be up to 20 bits in total, so we need 64-bit math. Also
|
||||
- * note that our TDMS clock is not fully accurate; it is accurate
|
||||
- * to kHz. This can introduce an unnecessary remainder in the
|
||||
- * calculation below, so we don't try to warn about that.
|
||||
- */
|
||||
- tmp = (u64)ftdms * n;
|
||||
- do_div(tmp, 128 * sample_rate);
|
||||
- cts = tmp;
|
||||
+ config3 = hdmi_readb(hdmi, HDMI_CONFIG3_ID);
|
||||
|
||||
- dev_dbg(hdmi->dev, "%s: fs=%uHz ftdms=%lu.%03luMHz N=%d cts=%d\n",
|
||||
- __func__, sample_rate, ftdms / 1000000, (ftdms / 1000) % 1000,
|
||||
- n, cts);
|
||||
+ if (config3 & HDMI_CONFIG3_AHBAUDDMA) {
|
||||
+ /*
|
||||
+ * Compute the CTS value from the N value. Note that CTS and N
|
||||
+ * can be up to 20 bits in total, so we need 64-bit math. Also
|
||||
+ * note that our TDMS clock is not fully accurate; it is accurate
|
||||
+ * to kHz. This can introduce an unnecessary remainder in the
|
||||
+ * calculation below, so we don't try to warn about that.
|
||||
+ */
|
||||
+ tmp = (u64)ftdms * n;
|
||||
+ do_div(tmp, 128 * sample_rate);
|
||||
+ cts = tmp;
|
||||
+
|
||||
+ dev_dbg(hdmi->dev, "%s: fs=%uHz ftdms=%lu.%03luMHz N=%d cts=%d\n",
|
||||
+ __func__, sample_rate, ftdms / 1000000, (ftdms / 1000) % 1000,
|
||||
+ n, cts);
|
||||
+ } else
|
||||
+ cts = 0;
|
||||
|
||||
spin_lock_irq(&hdmi->audio_lock);
|
||||
hdmi->audio_n = n;
|
||||
hdmi->audio_cts = cts;
|
||||
- hdmi_set_cts_n(hdmi, cts, hdmi->audio_enable ? n : 0);
|
||||
+ hdmi_set_cts_n(hdmi, cts, n);
|
||||
spin_unlock_irq(&hdmi->audio_lock);
|
||||
}
|
||||
|
||||
@@ -3721,8 +3717,8 @@ int dw_hdmi_bind(struct device *dev, struct device *master,
|
||||
audio.read = hdmi_readb;
|
||||
audio.mod = hdmi_modb;
|
||||
audio.eld = hdmi->connector.eld;
|
||||
- hdmi->enable_audio = dw_hdmi_i2s_audio_enable;
|
||||
- hdmi->disable_audio = dw_hdmi_i2s_audio_disable;
|
||||
+ //hdmi->enable_audio = dw_hdmi_i2s_audio_enable;
|
||||
+ //hdmi->disable_audio = dw_hdmi_i2s_audio_disable;
|
||||
|
||||
pdevinfo.name = "dw-hdmi-i2s-audio";
|
||||
pdevinfo.data = &audio;
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,4 +1,4 @@
|
||||
From 7894722c99f2be6806a245c2db1c0df61e890096 Mon Sep 17 00:00:00 2001
|
||||
From c5300de0fe982ae8a78e1b95ef7bf30b744e4ca1 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
||||
Date: Fri, 25 Nov 2016 14:12:01 +0100
|
||||
Subject: [PATCH] UPSTREAM: net: phy: realtek: fix enabling of the TX-delay for
|
||||
@ -66,7 +66,7 @@ index 43ab691362d4..686f3b259dc0 100644
|
||||
return 0;
|
||||
}
|
||||
|
||||
From 91f88fe0a8ae6a575e42384236ddac74a7343f33 Mon Sep 17 00:00:00 2001
|
||||
From 647c38d9964680f7fbb24c5a889ef74b23b4cbd4 Mon Sep 17 00:00:00 2001
|
||||
From: Kunihiko Hayashi <hayashi.kunihiko@socionext.com>
|
||||
Date: Tue, 12 Sep 2017 18:54:35 +0900
|
||||
Subject: [PATCH] UPSTREAM: net: phy: realtek: rename RTL8211F_PAGE_SELECT to
|
||||
@ -132,7 +132,7 @@ index 686f3b259dc0..d58cc8f518ac 100644
|
||||
return 0;
|
||||
}
|
||||
|
||||
From 418a6d18802923ffc35b9d8d40ce97a7d44f4482 Mon Sep 17 00:00:00 2001
|
||||
From 724532e7b4ad78722821763c639a73383a0f4418 Mon Sep 17 00:00:00 2001
|
||||
From: Jassi Brar <jaswinder.singh@linaro.org>
|
||||
Date: Tue, 12 Sep 2017 18:54:36 +0900
|
||||
Subject: [PATCH] UPSTREAM: net: phy: realtek: add RTL8201F phy-id and
|
||||
@ -235,7 +235,7 @@ index d58cc8f518ac..422cf1f6a60c 100644
|
||||
{ 0x001cc914, 0x001fffff },
|
||||
{ 0x001cc915, 0x001fffff },
|
||||
|
||||
From 0e7b02714fa25f16aebcb917fa7017aded5bdf06 Mon Sep 17 00:00:00 2001
|
||||
From 933e1e195c40a941b6e5dec0c6a3a4bb7f804cf7 Mon Sep 17 00:00:00 2001
|
||||
From: Heiner Kallweit <hkallweit1@gmail.com>
|
||||
Date: Sun, 12 Nov 2017 16:16:04 +0100
|
||||
Subject: [PATCH] UPSTREAM: net: phy: realtek: fix RTL8211F interrupt mode
|
||||
@ -280,7 +280,7 @@ index 422cf1f6a60c..a30d0c08c63b 100644
|
||||
return err;
|
||||
}
|
||||
|
||||
From 013120bec5f5e717baf7465e0eaafd6e5141d8c6 Mon Sep 17 00:00:00 2001
|
||||
From 046a2dc318a05236e06b09d8c0ca3f1005cbceca Mon Sep 17 00:00:00 2001
|
||||
From: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
||||
Date: Sat, 2 Dec 2017 22:51:24 +0100
|
||||
Subject: [PATCH] UPSTREAM: net: phy: realtek: use the BIT and GENMASK macros
|
||||
@ -329,7 +329,7 @@ index a30d0c08c63b..f8dc29a75828 100644
|
||||
#define RTL8201F_ISR 0x1e
|
||||
#define RTL8201F_IER 0x13
|
||||
|
||||
From ac2c0298c225eacc49b74a6f723b18a99a7b4b28 Mon Sep 17 00:00:00 2001
|
||||
From 7894b1cae69475242cdb1ca0fb639a5d70ac6316 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
||||
Date: Sat, 2 Dec 2017 22:51:25 +0100
|
||||
Subject: [PATCH] UPSTREAM: net: phy: realtek: rename RTL821x_INER_INIT to
|
||||
@ -370,7 +370,7 @@ index f8dc29a75828..89308eac4088 100644
|
||||
err = phy_write(phydev, RTL821x_INER, 0);
|
||||
|
||||
|
||||
From 68e38ec78893a72b91255eaf56e1aa5dfcf81d1f Mon Sep 17 00:00:00 2001
|
||||
From f6e8b6c88c6b3d4925607575bc4387a289d49708 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
||||
Date: Sat, 2 Dec 2017 22:51:26 +0100
|
||||
Subject: [PATCH] UPSTREAM: net: phy: realtek: group all register bit #defines
|
||||
@ -414,7 +414,7 @@ index 89308eac4088..df97d903d2bf 100644
|
||||
#define RTL8211F_TX_DELAY BIT(8)
|
||||
|
||||
|
||||
From 89b955d9f11cc268626cdedbf75561ccc607bb90 Mon Sep 17 00:00:00 2001
|
||||
From d5e2b112bb8e5707fc2fb727122ee5a8444ee462 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
||||
Date: Sat, 2 Dec 2017 22:51:27 +0100
|
||||
Subject: [PATCH] UPSTREAM: net: phy: realtek: use the same indentation for all
|
||||
@ -474,7 +474,7 @@ index df97d903d2bf..701f34ad7d8d 100644
|
||||
MODULE_DESCRIPTION("Realtek PHY driver");
|
||||
MODULE_AUTHOR("Johnson Leung");
|
||||
|
||||
From 304312f104de088682456d4cf7353732685fe455 Mon Sep 17 00:00:00 2001
|
||||
From 8c16425a3c99a1cca4458eb17bd6414d65074027 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
||||
Date: Sat, 2 Dec 2017 22:51:28 +0100
|
||||
Subject: [PATCH] UPSTREAM: net: phy: realtek: add utility functions to
|
||||
@ -645,7 +645,7 @@ index 701f34ad7d8d..b1d52e61d91c 100644
|
||||
return 0;
|
||||
}
|
||||
|
||||
From aa354e4db670dda7682b1c4aed23cd6ffb51f715 Mon Sep 17 00:00:00 2001
|
||||
From 13e556c6d4ece3c890edc414f205cc26381e9826 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
||||
Date: Sat, 2 Dec 2017 23:06:48 +0100
|
||||
Subject: [PATCH] FROMLIST: net: phy: realtek: add support for configuring the
|
||||
@ -755,7 +755,7 @@ index b1d52e61d91c..890ea9d18d27 100644
|
||||
return ret;
|
||||
|
||||
|
||||
From 1503227b699167969f0c630a95f73e7760edefbc Mon Sep 17 00:00:00 2001
|
||||
From e8fa4ce26460af84f028b7d215134caa33aa9ecb Mon Sep 17 00:00:00 2001
|
||||
From: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
||||
Date: Sat, 2 Dec 2017 23:06:49 +0100
|
||||
Subject: [PATCH] FROMLIST: net: phy: realtek: configure the INTB pin on
|
||||
@ -834,7 +834,7 @@ index 890ea9d18d27..f307d220b49a 100644
|
||||
return rtl8211x_page_write(phydev, 0xa42, RTL821x_INER, val);
|
||||
}
|
||||
|
||||
From 429c1855e10305c2838913a9dc074bd70831bb14 Mon Sep 17 00:00:00 2001
|
||||
From dd026c252cd898bca0b85eb14aa6479b415d2471 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
||||
Date: Sat, 2 Dec 2017 23:06:50 +0100
|
||||
Subject: [PATCH] FROMLIST: net: phy: realtek: add more interrupt bits for
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 59a82f24064c60e03af52938e5a2257038e1ee07 Mon Sep 17 00:00:00 2001
|
||||
From bb0e3fa6305fe3dead0aa670d7979d6ebcbaf47d Mon Sep 17 00:00:00 2001
|
||||
From: Pantelis Antoniou <pantelis.antoniou@konsulko.com>
|
||||
Date: Thu, 22 Oct 2015 23:30:04 +0300
|
||||
Subject: [PATCH] UPSTREAM: configfs: implement binary attributes
|
||||
@ -651,7 +651,7 @@ index 758a029011b1..f7300d023dbe 100644
|
||||
* If allow_link() exists, the item can symlink(2) out to other
|
||||
* items. If the item is a group, it may support mkdir(2).
|
||||
|
||||
From e35c4a7f4a74aa78fb3518e6eaccb7387600eccb Mon Sep 17 00:00:00 2001
|
||||
From 5bbcb67edd92f639228cbaf7d597af715442db16 Mon Sep 17 00:00:00 2001
|
||||
From: Octavian Purdila <octavian.purdila@intel.com>
|
||||
Date: Wed, 23 Mar 2016 14:14:48 +0200
|
||||
Subject: [PATCH] UPSTREAM: configfs: fix CONFIGFS_BIN_ATTR_[RW]O definitions
|
||||
@ -689,7 +689,7 @@ index f7300d023dbe..658066d63180 100644
|
||||
.ca_name = __stringify(_name), \
|
||||
.ca_mode = S_IWUSR, \
|
||||
|
||||
From b0f4ef7b999ed084376777763e20644dc9061ad3 Mon Sep 17 00:00:00 2001
|
||||
From 34d6438a4d2cedcd1b47f55a3cc63374252c6682 Mon Sep 17 00:00:00 2001
|
||||
From: Pantelis Antoniou <pantelis.antoniou@konsulko.com>
|
||||
Date: Wed, 4 Dec 2013 19:32:00 +0200
|
||||
Subject: [PATCH] FROMLIST: OF: DT-Overlay configfs interface (v7)
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 3c894b625c24537d22213836dbc44e1973b2b1f4 Mon Sep 17 00:00:00 2001
|
||||
From 75bb99dc815464846a4add357494acf04212271d Mon Sep 17 00:00:00 2001
|
||||
From: Julia Lawall <Julia.Lawall@lip6.fr>
|
||||
Date: Sat, 14 Nov 2015 18:05:20 +0100
|
||||
Subject: [PATCH] UPSTREAM: mmc: pwrseq: constify mmc_pwrseq_ops structures
|
||||
@ -56,7 +56,7 @@ index d10538bb5e07..2b16263458af 100644
|
||||
.post_power_on = mmc_pwrseq_simple_post_power_on,
|
||||
.power_off = mmc_pwrseq_simple_power_off,
|
||||
|
||||
From 11396ee87b7a090c5807c2fc2b8a640d109c30ce Mon Sep 17 00:00:00 2001
|
||||
From 1977551c6ef29f55b398a02112e3075c9a38649d Mon Sep 17 00:00:00 2001
|
||||
From: Martin Fuzzey <mfuzzey@parkeon.com>
|
||||
Date: Wed, 20 Jan 2016 16:08:03 +0100
|
||||
Subject: [PATCH] UPSTREAM: mmc: pwrseq_simple: Make reset-gpios optional to
|
||||
@ -128,7 +128,7 @@ index 2b16263458af..aba786daebca 100644
|
||||
goto clk_put;
|
||||
}
|
||||
|
||||
From eecad6e4c48e9e82ec2f8415dec690f67c7ba12b Mon Sep 17 00:00:00 2001
|
||||
From e79ed0004dc68dc2f2189256bf00a1f579c78f1a Mon Sep 17 00:00:00 2001
|
||||
From: Peter Chen <peter.chen@freescale.com>
|
||||
Date: Wed, 6 Jan 2016 11:34:10 +0800
|
||||
Subject: [PATCH] UPSTREAM: mmc: core: pwrseq_simple: remove unused header file
|
||||
@ -153,7 +153,7 @@ index aba786daebca..bc173e18b71c 100644
|
||||
|
||||
#include <linux/mmc/host.h>
|
||||
|
||||
From ea74f89b7e6bb89a2824df5bf3ae94786f6b30b3 Mon Sep 17 00:00:00 2001
|
||||
From 545d059f7a0a4c470acfdb0fff30397899597f09 Mon Sep 17 00:00:00 2001
|
||||
From: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
|
||||
Date: Thu, 14 Apr 2016 14:02:14 +0100
|
||||
Subject: [PATCH] UPSTREAM: mmc: pwrseq_simple: add to_pwrseq_simple() macro
|
||||
@ -220,7 +220,7 @@ index bc173e18b71c..f94271bb1f6b 100644
|
||||
if (!IS_ERR(pwrseq->reset_gpios))
|
||||
gpiod_put_array(pwrseq->reset_gpios);
|
||||
|
||||
From 11bf8cedf08ee10e4053d8787268c69a0bd7419b Mon Sep 17 00:00:00 2001
|
||||
From e8c5f0b9383e6a528c8fc00d61755f8187e4c0b8 Mon Sep 17 00:00:00 2001
|
||||
From: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
|
||||
Date: Thu, 14 Apr 2016 14:02:15 +0100
|
||||
Subject: [PATCH] UPSTREAM: mmc: pwrseq_emmc: add to_pwrseq_emmc() macro
|
||||
@ -267,7 +267,7 @@ index 4a82bc77fe49..c2d732aa464c 100644
|
||||
unregister_restart_handler(&pwrseq->reset_nb);
|
||||
gpiod_put(pwrseq->reset_gpio);
|
||||
|
||||
From 9a32c48a17c3a0de3bd96cc6e9289d9fb8710b91 Mon Sep 17 00:00:00 2001
|
||||
From ef2f3c5b7375b930697a64c85f30f9109e631cb0 Mon Sep 17 00:00:00 2001
|
||||
From: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
|
||||
Date: Thu, 14 Apr 2016 14:02:16 +0100
|
||||
Subject: [PATCH] UPSTREAM: mmc: pwrseq: convert to proper platform device
|
||||
@ -785,7 +785,7 @@ index f94271bb1f6b..450d907c6e6c 100644
|
||||
+module_platform_driver(mmc_pwrseq_simple_driver);
|
||||
+MODULE_LICENSE("GPL v2");
|
||||
|
||||
From d94057e963bb557eb61324a2f05e5a0a743813c5 Mon Sep 17 00:00:00 2001
|
||||
From 42eb02ddb70002e4f72fa627037b6acbdd4cb7a1 Mon Sep 17 00:00:00 2001
|
||||
From: Hans de Goede <hdegoede@redhat.com>
|
||||
Date: Sun, 7 Aug 2016 21:02:38 +0200
|
||||
Subject: [PATCH] UPSTREAM: mmc: pwrseq-simple: Add an optional
|
||||
@ -861,7 +861,7 @@ index 450d907c6e6c..1304160de168 100644
|
||||
pwrseq->pwrseq.ops = &mmc_pwrseq_simple_ops;
|
||||
pwrseq->pwrseq.owner = THIS_MODULE;
|
||||
|
||||
From 50e40e09e01a67684fd3b7ef2422f194a656dd93 Mon Sep 17 00:00:00 2001
|
||||
From bf90ebd56d6f327f77bd7add55b3593679cd5c67 Mon Sep 17 00:00:00 2001
|
||||
From: Ulf Hansson <ulf.hansson@linaro.org>
|
||||
Date: Sat, 6 May 2017 11:41:30 +0200
|
||||
Subject: [PATCH] UPSTREAM: mmc: dt: pwrseq-simple: Invent power-off-delay-us
|
||||
@ -897,7 +897,7 @@ index e25436861867..9029b45b8a22 100644
|
||||
Example:
|
||||
|
||||
|
||||
From e4960aff45ecb83728279dd1e524f4e62ec11240 Mon Sep 17 00:00:00 2001
|
||||
From bc79b1f8ca4d16d45b93c2888474bb3f11b10226 Mon Sep 17 00:00:00 2001
|
||||
From: Ulf Hansson <ulf.hansson@linaro.org>
|
||||
Date: Sat, 6 May 2017 11:43:05 +0200
|
||||
Subject: [PATCH] UPSTREAM: mmc: pwrseq_simple: Parse DTS for the
|
||||
|
@ -0,0 +1,633 @@
|
||||
From 38396ba52ab85ea1eabea3c92fd7532f8732f92e Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Karlman <jonas@kwiboo.se>
|
||||
Date: Tue, 24 Jul 2018 15:49:29 +0200
|
||||
Subject: [PATCH] mmc: core: use hs400es voltage flags
|
||||
|
||||
---
|
||||
drivers/mmc/core/mmc.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c
|
||||
index a814eb6882aa..1d950f0b3aa6 100644
|
||||
--- a/drivers/mmc/core/mmc.c
|
||||
+++ b/drivers/mmc/core/mmc.c
|
||||
@@ -1259,10 +1259,10 @@ static int mmc_select_hs400es(struct mmc_card *card)
|
||||
goto out_err;
|
||||
}
|
||||
|
||||
- if (card->mmc_avail_type & EXT_CSD_CARD_TYPE_HS200_1_2V)
|
||||
+ if (card->mmc_avail_type & EXT_CSD_CARD_TYPE_HS400_1_2V)
|
||||
err = __mmc_set_signal_voltage(host, MMC_SIGNAL_VOLTAGE_120);
|
||||
|
||||
- if (err && card->mmc_avail_type & EXT_CSD_CARD_TYPE_HS200_1_8V)
|
||||
+ if (err && card->mmc_avail_type & EXT_CSD_CARD_TYPE_HS400_1_8V)
|
||||
err = __mmc_set_signal_voltage(host, MMC_SIGNAL_VOLTAGE_180);
|
||||
|
||||
/* If fails try again during next card power cycle */
|
||||
|
||||
From 92a57737adc14e15e80b6913932bb5d2d3478068 Mon Sep 17 00:00:00 2001
|
||||
From: Haibo Chen <haibo.chen@nxp.com>
|
||||
Date: Tue, 8 Aug 2017 18:54:01 +0800
|
||||
Subject: [PATCH] UPSTREAM: mmc: mmc: correct the logic for setting HS400ES
|
||||
signal voltage
|
||||
|
||||
Change the default err value to -EINVAL, make sure the card only
|
||||
has type EXT_CSD_CARD_TYPE_HS400_1_8V also do the signal voltage
|
||||
setting when select hs400es mode.
|
||||
|
||||
Fixes: commit 1720d3545b77 ("mmc: core: switch to 1V8 or 1V2 for hs400es mode")
|
||||
Cc: <stable@vger.kernel.org>
|
||||
Signed-off-by: Haibo Chen <haibo.chen@nxp.com>
|
||||
Reviewed-by: Shawn Lin <shawn.lin@rock-chips.com>
|
||||
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
|
||||
(cherry picked from commit 92ddd95919466de5d34f3cb43635da9a7f9ab814)
|
||||
---
|
||||
drivers/mmc/core/mmc.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c
|
||||
index 1d950f0b3aa6..70de514dd061 100644
|
||||
--- a/drivers/mmc/core/mmc.c
|
||||
+++ b/drivers/mmc/core/mmc.c
|
||||
@@ -1251,7 +1251,7 @@ out_err:
|
||||
static int mmc_select_hs400es(struct mmc_card *card)
|
||||
{
|
||||
struct mmc_host *host = card->host;
|
||||
- int err = 0;
|
||||
+ int err = -EINVAL;
|
||||
u8 val;
|
||||
|
||||
if (!(host->caps & MMC_CAP_8_BIT_DATA)) {
|
||||
|
||||
From 108a045df9dc1cee2127aec0bdd327ba7f2fdb81 Mon Sep 17 00:00:00 2001
|
||||
From: Ulf Hansson <ulf.hansson@linaro.org>
|
||||
Date: Wed, 25 Jan 2017 10:12:10 +0100
|
||||
Subject: [PATCH] UPSTREAM: mmc: core: Remove redundant code in
|
||||
mmc_set_signal_voltage()
|
||||
|
||||
The mmc_set_signal_voltage() function is used for SD/SDIO when switching to
|
||||
1.8V for UHS mode. Therefore let's remove the redundant code dealing with
|
||||
MMC_SIGNAL_VOLTAGE_330.
|
||||
|
||||
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
|
||||
Reviewed-by: Shawn Lin <shawn.lin@rock-chips.com>
|
||||
Tested-by: Jan Glauber <jglauber@cavium.com>
|
||||
Tested-by: Stefan Wahren <stefan.wahren@i2se.com>
|
||||
(cherry picked from commit a44efa4796249c6d4341935e90e9105d6e1a5f15)
|
||||
---
|
||||
drivers/mmc/core/core.c | 7 -------
|
||||
1 file changed, 7 deletions(-)
|
||||
|
||||
diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c
|
||||
index 3e3c79feb07b..b69c96ad9486 100644
|
||||
--- a/drivers/mmc/core/core.c
|
||||
+++ b/drivers/mmc/core/core.c
|
||||
@@ -1598,13 +1598,6 @@ int mmc_set_signal_voltage(struct mmc_host *host, int signal_voltage, u32 ocr)
|
||||
|
||||
BUG_ON(!host);
|
||||
|
||||
- /*
|
||||
- * Send CMD11 only if the request is to switch the card to
|
||||
- * 1.8V signalling.
|
||||
- */
|
||||
- if (signal_voltage == MMC_SIGNAL_VOLTAGE_330)
|
||||
- return __mmc_set_signal_voltage(host, signal_voltage);
|
||||
-
|
||||
/*
|
||||
* If we cannot switch voltages, return failure so the caller
|
||||
* can continue without UHS mode
|
||||
|
||||
From d28c1bfff6556db2c4ce1093091293cf20542202 Mon Sep 17 00:00:00 2001
|
||||
From: Ulf Hansson <ulf.hansson@linaro.org>
|
||||
Date: Wed, 25 Jan 2017 10:25:01 +0100
|
||||
Subject: [PATCH] UPSTREAM: mmc: core: Clarify usage of
|
||||
mmc_set_signal_voltage()
|
||||
|
||||
The mmc_set_signal_voltage() function is used for SD/SDIO when switching to
|
||||
1.8V for UHS mode. To clarify this let's do the following changes.
|
||||
|
||||
- We are always providing MMC_SIGNAL_VOLTAGE_180 as the signal_voltage
|
||||
parameter to the function. Then, let's just remove the parameter as it
|
||||
serves no purpose.
|
||||
- Rename the function to mmc_set_uhs_voltage().
|
||||
|
||||
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
|
||||
Reviewed-by: Shawn Lin <shawn.lin@rock-chips.com>
|
||||
Tested-by: Jan Glauber <jglauber@cavium.com>
|
||||
Tested-by: Stefan Wahren <stefan.wahren@i2se.com>
|
||||
(cherry picked from commit 2ed573b603f78289dd1435c94597aa25a97e2b76)
|
||||
---
|
||||
drivers/mmc/core/core.c | 4 ++--
|
||||
drivers/mmc/core/core.h | 2 +-
|
||||
drivers/mmc/core/sd.c | 3 +--
|
||||
drivers/mmc/core/sdio.c | 3 +--
|
||||
4 files changed, 5 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c
|
||||
index b69c96ad9486..35d19d57d2c5 100644
|
||||
--- a/drivers/mmc/core/core.c
|
||||
+++ b/drivers/mmc/core/core.c
|
||||
@@ -1590,7 +1590,7 @@ int __mmc_set_signal_voltage(struct mmc_host *host, int signal_voltage)
|
||||
|
||||
}
|
||||
|
||||
-int mmc_set_signal_voltage(struct mmc_host *host, int signal_voltage, u32 ocr)
|
||||
+int mmc_set_uhs_voltage(struct mmc_host *host, u32 ocr)
|
||||
{
|
||||
struct mmc_command cmd = {0};
|
||||
int err = 0;
|
||||
@@ -1636,7 +1636,7 @@ int mmc_set_signal_voltage(struct mmc_host *host, int signal_voltage, u32 ocr)
|
||||
host->ios.clock = 0;
|
||||
mmc_set_ios(host);
|
||||
|
||||
- if (__mmc_set_signal_voltage(host, signal_voltage)) {
|
||||
+ if (__mmc_set_signal_voltage(host, MMC_SIGNAL_VOLTAGE_180)) {
|
||||
/*
|
||||
* Voltages may not have been switched, but we've already
|
||||
* sent CMD11, so a power cycle is required anyway
|
||||
diff --git a/drivers/mmc/core/core.h b/drivers/mmc/core/core.h
|
||||
index ed7c3167763a..88ef50b2e0be 100644
|
||||
--- a/drivers/mmc/core/core.h
|
||||
+++ b/drivers/mmc/core/core.h
|
||||
@@ -43,7 +43,7 @@ void mmc_set_clock(struct mmc_host *host, unsigned int hz);
|
||||
void mmc_set_bus_mode(struct mmc_host *host, unsigned int mode);
|
||||
void mmc_set_bus_width(struct mmc_host *host, unsigned int width);
|
||||
u32 mmc_select_voltage(struct mmc_host *host, u32 ocr);
|
||||
-int mmc_set_signal_voltage(struct mmc_host *host, int signal_voltage, u32 ocr);
|
||||
+int mmc_set_uhs_voltage(struct mmc_host *host, u32 ocr);
|
||||
int __mmc_set_signal_voltage(struct mmc_host *host, int signal_voltage);
|
||||
void mmc_set_timing(struct mmc_host *host, unsigned int timing);
|
||||
void mmc_set_driver_type(struct mmc_host *host, unsigned int drv_type);
|
||||
diff --git a/drivers/mmc/core/sd.c b/drivers/mmc/core/sd.c
|
||||
index cd437d6b1843..d9943d82db95 100644
|
||||
--- a/drivers/mmc/core/sd.c
|
||||
+++ b/drivers/mmc/core/sd.c
|
||||
@@ -742,8 +742,7 @@ try_again:
|
||||
*/
|
||||
if (!mmc_host_is_spi(host) && rocr &&
|
||||
((*rocr & 0x41000000) == 0x41000000)) {
|
||||
- err = mmc_set_signal_voltage(host, MMC_SIGNAL_VOLTAGE_180,
|
||||
- pocr);
|
||||
+ err = mmc_set_uhs_voltage(host, pocr);
|
||||
if (err == -EAGAIN) {
|
||||
retries--;
|
||||
goto try_again;
|
||||
diff --git a/drivers/mmc/core/sdio.c b/drivers/mmc/core/sdio.c
|
||||
index c586b11a40b5..f221418542e2 100644
|
||||
--- a/drivers/mmc/core/sdio.c
|
||||
+++ b/drivers/mmc/core/sdio.c
|
||||
@@ -648,8 +648,7 @@ try_again:
|
||||
* to make sure which speed mode should work.
|
||||
*/
|
||||
if (!powered_resume && (rocr & ocr & R4_18V_PRESENT)) {
|
||||
- err = mmc_set_signal_voltage(host, MMC_SIGNAL_VOLTAGE_180,
|
||||
- ocr_card);
|
||||
+ err = mmc_set_uhs_voltage(host, ocr_card);
|
||||
if (err == -EAGAIN) {
|
||||
mmc_sdio_resend_if_cond(host, card);
|
||||
retries--;
|
||||
|
||||
From 0f61c64862ed54163c5f88389170c95055a74f68 Mon Sep 17 00:00:00 2001
|
||||
From: Ulf Hansson <ulf.hansson@linaro.org>
|
||||
Date: Wed, 25 Jan 2017 11:12:34 +0100
|
||||
Subject: [PATCH] UPSTREAM: mmc: core: Rename __mmc_set_signal_voltage() to
|
||||
mmc_set_signal_voltage()
|
||||
|
||||
Earlier the mmc_set_signal_voltage() existed, but since it has been renamed
|
||||
to mmc_set_uhs_voltage(), we can now use that name instead.
|
||||
|
||||
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
|
||||
Reviewed-by: Shawn Lin <shawn.lin@rock-chips.com>
|
||||
Tested-by: Jan Glauber <jglauber@cavium.com>
|
||||
Tested-by: Stefan Wahren <stefan.wahren@i2se.com>
|
||||
(cherry picked from commit 4e74b6b3c6e9adfe6a8fdebfc56a6416a996d905)
|
||||
---
|
||||
drivers/mmc/core/core.c | 10 +++++-----
|
||||
drivers/mmc/core/core.h | 2 +-
|
||||
drivers/mmc/core/mmc.c | 16 ++++++++--------
|
||||
3 files changed, 14 insertions(+), 14 deletions(-)
|
||||
|
||||
diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c
|
||||
index 35d19d57d2c5..ba285431c2d0 100644
|
||||
--- a/drivers/mmc/core/core.c
|
||||
+++ b/drivers/mmc/core/core.c
|
||||
@@ -1574,7 +1574,7 @@ u32 mmc_select_voltage(struct mmc_host *host, u32 ocr)
|
||||
return ocr;
|
||||
}
|
||||
|
||||
-int __mmc_set_signal_voltage(struct mmc_host *host, int signal_voltage)
|
||||
+int mmc_set_signal_voltage(struct mmc_host *host, int signal_voltage)
|
||||
{
|
||||
int err = 0;
|
||||
int old_signal_voltage = host->ios.signal_voltage;
|
||||
@@ -1636,7 +1636,7 @@ int mmc_set_uhs_voltage(struct mmc_host *host, u32 ocr)
|
||||
host->ios.clock = 0;
|
||||
mmc_set_ios(host);
|
||||
|
||||
- if (__mmc_set_signal_voltage(host, MMC_SIGNAL_VOLTAGE_180)) {
|
||||
+ if (mmc_set_signal_voltage(host, MMC_SIGNAL_VOLTAGE_180)) {
|
||||
/*
|
||||
* Voltages may not have been switched, but we've already
|
||||
* sent CMD11, so a power cycle is required anyway
|
||||
@@ -1745,11 +1745,11 @@ void mmc_power_up(struct mmc_host *host, u32 ocr)
|
||||
mmc_set_initial_state(host);
|
||||
|
||||
/* Try to set signal voltage to 3.3V but fall back to 1.8v or 1.2v */
|
||||
- if (__mmc_set_signal_voltage(host, MMC_SIGNAL_VOLTAGE_330) == 0)
|
||||
+ if (!mmc_set_signal_voltage(host, MMC_SIGNAL_VOLTAGE_330))
|
||||
dev_dbg(mmc_dev(host), "Initial signal voltage of 3.3v\n");
|
||||
- else if (__mmc_set_signal_voltage(host, MMC_SIGNAL_VOLTAGE_180) == 0)
|
||||
+ else if (!mmc_set_signal_voltage(host, MMC_SIGNAL_VOLTAGE_180))
|
||||
dev_dbg(mmc_dev(host), "Initial signal voltage of 1.8v\n");
|
||||
- else if (__mmc_set_signal_voltage(host, MMC_SIGNAL_VOLTAGE_120) == 0)
|
||||
+ else if (!mmc_set_signal_voltage(host, MMC_SIGNAL_VOLTAGE_120))
|
||||
dev_dbg(mmc_dev(host), "Initial signal voltage of 1.2v\n");
|
||||
|
||||
/*
|
||||
diff --git a/drivers/mmc/core/core.h b/drivers/mmc/core/core.h
|
||||
index 88ef50b2e0be..0e4bc1c7a773 100644
|
||||
--- a/drivers/mmc/core/core.h
|
||||
+++ b/drivers/mmc/core/core.h
|
||||
@@ -44,7 +44,7 @@ void mmc_set_bus_mode(struct mmc_host *host, unsigned int mode);
|
||||
void mmc_set_bus_width(struct mmc_host *host, unsigned int width);
|
||||
u32 mmc_select_voltage(struct mmc_host *host, u32 ocr);
|
||||
int mmc_set_uhs_voltage(struct mmc_host *host, u32 ocr);
|
||||
-int __mmc_set_signal_voltage(struct mmc_host *host, int signal_voltage);
|
||||
+int mmc_set_signal_voltage(struct mmc_host *host, int signal_voltage);
|
||||
void mmc_set_timing(struct mmc_host *host, unsigned int timing);
|
||||
void mmc_set_driver_type(struct mmc_host *host, unsigned int drv_type);
|
||||
int mmc_select_drive_strength(struct mmc_card *card, unsigned int max_dtr,
|
||||
diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c
|
||||
index 70de514dd061..dd0040a10c0b 100644
|
||||
--- a/drivers/mmc/core/mmc.c
|
||||
+++ b/drivers/mmc/core/mmc.c
|
||||
@@ -1088,14 +1088,14 @@ static int mmc_select_hs_ddr(struct mmc_card *card)
|
||||
*/
|
||||
err = -EINVAL;
|
||||
if (card->mmc_avail_type & EXT_CSD_CARD_TYPE_DDR_1_2V)
|
||||
- err = __mmc_set_signal_voltage(host, MMC_SIGNAL_VOLTAGE_120);
|
||||
+ err = mmc_set_signal_voltage(host, MMC_SIGNAL_VOLTAGE_120);
|
||||
|
||||
if (err && (card->mmc_avail_type & EXT_CSD_CARD_TYPE_DDR_1_8V))
|
||||
- err = __mmc_set_signal_voltage(host, MMC_SIGNAL_VOLTAGE_180);
|
||||
+ err = mmc_set_signal_voltage(host, MMC_SIGNAL_VOLTAGE_180);
|
||||
|
||||
/* make sure vccq is 3.3v after switching disaster */
|
||||
if (err)
|
||||
- err = __mmc_set_signal_voltage(host, MMC_SIGNAL_VOLTAGE_330);
|
||||
+ err = mmc_set_signal_voltage(host, MMC_SIGNAL_VOLTAGE_330);
|
||||
|
||||
if (!err)
|
||||
mmc_set_timing(host, MMC_TIMING_MMC_DDR52);
|
||||
@@ -1260,10 +1260,10 @@ static int mmc_select_hs400es(struct mmc_card *card)
|
||||
}
|
||||
|
||||
if (card->mmc_avail_type & EXT_CSD_CARD_TYPE_HS400_1_2V)
|
||||
- err = __mmc_set_signal_voltage(host, MMC_SIGNAL_VOLTAGE_120);
|
||||
+ err = mmc_set_signal_voltage(host, MMC_SIGNAL_VOLTAGE_120);
|
||||
|
||||
if (err && card->mmc_avail_type & EXT_CSD_CARD_TYPE_HS400_1_8V)
|
||||
- err = __mmc_set_signal_voltage(host, MMC_SIGNAL_VOLTAGE_180);
|
||||
+ err = mmc_set_signal_voltage(host, MMC_SIGNAL_VOLTAGE_180);
|
||||
|
||||
/* If fails try again during next card power cycle */
|
||||
if (err)
|
||||
@@ -1362,10 +1362,10 @@ static int mmc_select_hs200(struct mmc_card *card)
|
||||
|
||||
old_signal_voltage = host->ios.signal_voltage;
|
||||
if (card->mmc_avail_type & EXT_CSD_CARD_TYPE_HS200_1_2V)
|
||||
- err = __mmc_set_signal_voltage(host, MMC_SIGNAL_VOLTAGE_120);
|
||||
+ err = mmc_set_signal_voltage(host, MMC_SIGNAL_VOLTAGE_120);
|
||||
|
||||
if (err && card->mmc_avail_type & EXT_CSD_CARD_TYPE_HS200_1_8V)
|
||||
- err = __mmc_set_signal_voltage(host, MMC_SIGNAL_VOLTAGE_180);
|
||||
+ err = mmc_set_signal_voltage(host, MMC_SIGNAL_VOLTAGE_180);
|
||||
|
||||
/* If fails try again during next card power cycle */
|
||||
if (err)
|
||||
@@ -1393,7 +1393,7 @@ static int mmc_select_hs200(struct mmc_card *card)
|
||||
err:
|
||||
if (err) {
|
||||
/* fall back to the old signal voltage, if fails report error */
|
||||
- if (__mmc_set_signal_voltage(host, old_signal_voltage))
|
||||
+ if (mmc_set_signal_voltage(host, old_signal_voltage))
|
||||
err = -EIO;
|
||||
|
||||
pr_err("%s: %s failed, error %d\n", mmc_hostname(card->host),
|
||||
|
||||
From db9fd591980256d95de5675ebd84759b9cc9831c Mon Sep 17 00:00:00 2001
|
||||
From: Adrian Hunter <adrian.hunter@intel.com>
|
||||
Date: Mon, 25 Sep 2017 11:29:03 +0300
|
||||
Subject: [PATCH] UPSTREAM: mmc: core: Factor out mmc_host_set_uhs_voltage()
|
||||
|
||||
Factor out mmc_host_set_uhs_voltage() so it can be reused.
|
||||
|
||||
Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
|
||||
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
|
||||
(cherry picked from commit 3f496afb6fb361b282f37968ff7d3d80b0f1b5cb)
|
||||
---
|
||||
drivers/mmc/core/core.c | 38 ++++++++++++++++++++++++--------------
|
||||
drivers/mmc/core/core.h | 1 +
|
||||
2 files changed, 25 insertions(+), 14 deletions(-)
|
||||
|
||||
diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c
|
||||
index ba285431c2d0..dae82afcbc99 100644
|
||||
--- a/drivers/mmc/core/core.c
|
||||
+++ b/drivers/mmc/core/core.c
|
||||
@@ -1590,11 +1590,33 @@ int mmc_set_signal_voltage(struct mmc_host *host, int signal_voltage)
|
||||
|
||||
}
|
||||
|
||||
+int mmc_host_set_uhs_voltage(struct mmc_host *host)
|
||||
+{
|
||||
+ u32 clock;
|
||||
+
|
||||
+ /*
|
||||
+ * During a signal voltage level switch, the clock must be gated
|
||||
+ * for 5 ms according to the SD spec
|
||||
+ */
|
||||
+ clock = host->ios.clock;
|
||||
+ host->ios.clock = 0;
|
||||
+ mmc_set_ios(host);
|
||||
+
|
||||
+ if (mmc_set_signal_voltage(host, MMC_SIGNAL_VOLTAGE_180))
|
||||
+ return -EAGAIN;
|
||||
+
|
||||
+ /* Keep clock gated for at least 10 ms, though spec only says 5 ms */
|
||||
+ mmc_delay(10);
|
||||
+ host->ios.clock = clock;
|
||||
+ mmc_set_ios(host);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
int mmc_set_uhs_voltage(struct mmc_host *host, u32 ocr)
|
||||
{
|
||||
struct mmc_command cmd = {0};
|
||||
int err = 0;
|
||||
- u32 clock;
|
||||
|
||||
BUG_ON(!host);
|
||||
|
||||
@@ -1628,15 +1650,8 @@ int mmc_set_uhs_voltage(struct mmc_host *host, u32 ocr)
|
||||
err = -EAGAIN;
|
||||
goto power_cycle;
|
||||
}
|
||||
- /*
|
||||
- * During a signal voltage level switch, the clock must be gated
|
||||
- * for 5 ms according to the SD spec
|
||||
- */
|
||||
- clock = host->ios.clock;
|
||||
- host->ios.clock = 0;
|
||||
- mmc_set_ios(host);
|
||||
|
||||
- if (mmc_set_signal_voltage(host, MMC_SIGNAL_VOLTAGE_180)) {
|
||||
+ if (mmc_host_set_uhs_voltage(host)) {
|
||||
/*
|
||||
* Voltages may not have been switched, but we've already
|
||||
* sent CMD11, so a power cycle is required anyway
|
||||
@@ -1645,11 +1660,6 @@ int mmc_set_uhs_voltage(struct mmc_host *host, u32 ocr)
|
||||
goto power_cycle;
|
||||
}
|
||||
|
||||
- /* Keep clock gated for at least 10 ms, though spec only says 5 ms */
|
||||
- mmc_delay(10);
|
||||
- host->ios.clock = clock;
|
||||
- mmc_set_ios(host);
|
||||
-
|
||||
/* Wait for at least 1 ms according to spec */
|
||||
mmc_delay(1);
|
||||
|
||||
diff --git a/drivers/mmc/core/core.h b/drivers/mmc/core/core.h
|
||||
index 0e4bc1c7a773..11f3d2c22ecb 100644
|
||||
--- a/drivers/mmc/core/core.h
|
||||
+++ b/drivers/mmc/core/core.h
|
||||
@@ -44,6 +44,7 @@ void mmc_set_bus_mode(struct mmc_host *host, unsigned int mode);
|
||||
void mmc_set_bus_width(struct mmc_host *host, unsigned int width);
|
||||
u32 mmc_select_voltage(struct mmc_host *host, u32 ocr);
|
||||
int mmc_set_uhs_voltage(struct mmc_host *host, u32 ocr);
|
||||
+int mmc_host_set_uhs_voltage(struct mmc_host *host);
|
||||
int mmc_set_signal_voltage(struct mmc_host *host, int signal_voltage);
|
||||
void mmc_set_timing(struct mmc_host *host, unsigned int timing);
|
||||
void mmc_set_driver_type(struct mmc_host *host, unsigned int drv_type);
|
||||
|
||||
From 9c2d593200bd835b8e55eb6e0ba188e4dd9c744e Mon Sep 17 00:00:00 2001
|
||||
From: Adrian Hunter <adrian.hunter@intel.com>
|
||||
Date: Mon, 25 Sep 2017 11:29:04 +0300
|
||||
Subject: [PATCH] UPSTREAM: mmc: sd: Fix signal voltage when there is no power
|
||||
cycle
|
||||
|
||||
Some boards have SD card connectors where the power rail cannot be switched
|
||||
off by the driver. However there are various circumstances when a card
|
||||
might be re-initialized, such as after system resume, warm re-boot, or
|
||||
error handling. However, a UHS card will continue to use 1.8V signaling
|
||||
unless it is power cycled.
|
||||
|
||||
If the card has not been power cycled, it may still be using 1.8V
|
||||
signaling. According to the SD spec., the Bus Speed Mode (function group 1)
|
||||
bits 2 to 4 are zero if the card is initialized at 3.3V signal level. Thus
|
||||
they can be used to determine if the card has already switched to 1.8V
|
||||
signaling. Detect that situation and try to initialize a UHS-I (1.8V)
|
||||
transfer mode.
|
||||
|
||||
Tested with the following cards:
|
||||
Transcend 4GB High Speed
|
||||
Kingston 64GB SDR104
|
||||
Lexar by Micron HIGH-PERFORMANCE 300x 16GB DDR50
|
||||
SanDisk Ultra 8GB DDR50
|
||||
Transcend Ultimate 600x 16GB SDR104
|
||||
Transcend Premium 300x 64GB SDR104
|
||||
Lexar by Micron Professional 1000x 32GB UHS-II SDR104
|
||||
SanDisk Extreme Pro 16GB SDR104
|
||||
|
||||
Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
|
||||
Tested-by: Zhoujie Wu <zjwu@marvell.com>
|
||||
Reviewed-by: Shawn Lin <shawn.lin@rock-chips.com>
|
||||
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
|
||||
(cherry picked from commit 6a11fc47f175c8d87018e89cb58e2d36c66534cb)
|
||||
---
|
||||
drivers/mmc/core/sd.c | 47 +++++++++++++++++++++++++++++++++++++++++++++--
|
||||
1 file changed, 45 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/mmc/core/sd.c b/drivers/mmc/core/sd.c
|
||||
index d9943d82db95..2808a281d094 100644
|
||||
--- a/drivers/mmc/core/sd.c
|
||||
+++ b/drivers/mmc/core/sd.c
|
||||
@@ -898,6 +898,18 @@ unsigned mmc_sd_get_max_clock(struct mmc_card *card)
|
||||
return max_dtr;
|
||||
}
|
||||
|
||||
+static bool mmc_sd_card_using_v18(struct mmc_card *card)
|
||||
+{
|
||||
+ /*
|
||||
+ * According to the SD spec., the Bus Speed Mode (function group 1) bits
|
||||
+ * 2 to 4 are zero if the card is initialized at 3.3V signal level. Thus
|
||||
+ * they can be used to determine if the card has already switched to
|
||||
+ * 1.8V signaling.
|
||||
+ */
|
||||
+ return card->sw_caps.sd3_bus_mode &
|
||||
+ (SD_MODE_UHS_SDR50 | SD_MODE_UHS_SDR104 | SD_MODE_UHS_DDR50);
|
||||
+}
|
||||
+
|
||||
/*
|
||||
* Handle the detection and initialisation of a card.
|
||||
*
|
||||
@@ -911,10 +923,11 @@ static int mmc_sd_init_card(struct mmc_host *host, u32 ocr,
|
||||
int err;
|
||||
u32 cid[4];
|
||||
u32 rocr = 0;
|
||||
+ bool v18_fixup_failed = false;
|
||||
|
||||
BUG_ON(!host);
|
||||
WARN_ON(!host->claimed);
|
||||
-
|
||||
+retry:
|
||||
err = mmc_sd_get_cid(host, ocr, cid, &rocr);
|
||||
if (err)
|
||||
return err;
|
||||
@@ -980,6 +993,36 @@ static int mmc_sd_init_card(struct mmc_host *host, u32 ocr,
|
||||
if (err)
|
||||
goto free_card;
|
||||
|
||||
+ /*
|
||||
+ * If the card has not been power cycled, it may still be using 1.8V
|
||||
+ * signaling. Detect that situation and try to initialize a UHS-I (1.8V)
|
||||
+ * transfer mode.
|
||||
+ */
|
||||
+ if (!v18_fixup_failed && !mmc_host_is_spi(host) && mmc_host_uhs(host) &&
|
||||
+ mmc_sd_card_using_v18(card) &&
|
||||
+ host->ios.signal_voltage != MMC_SIGNAL_VOLTAGE_180) {
|
||||
+ /*
|
||||
+ * Re-read switch information in case it has changed since
|
||||
+ * oldcard was initialized.
|
||||
+ */
|
||||
+ if (oldcard) {
|
||||
+ err = mmc_read_switch(card);
|
||||
+ if (err)
|
||||
+ goto free_card;
|
||||
+ }
|
||||
+ if (mmc_sd_card_using_v18(card)) {
|
||||
+ if (mmc_host_set_uhs_voltage(host) ||
|
||||
+ mmc_sd_init_uhs_card(card)) {
|
||||
+ v18_fixup_failed = true;
|
||||
+ mmc_power_cycle(host, ocr);
|
||||
+ if (!oldcard)
|
||||
+ mmc_remove_card(card);
|
||||
+ goto retry;
|
||||
+ }
|
||||
+ goto done;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
/* Initialization sequence for UHS-I cards */
|
||||
if (rocr & SD_ROCR_S18A && mmc_host_uhs(host)) {
|
||||
err = mmc_sd_init_uhs_card(card);
|
||||
@@ -1012,7 +1055,7 @@ static int mmc_sd_init_card(struct mmc_host *host, u32 ocr,
|
||||
mmc_set_bus_width(host, MMC_BUS_WIDTH_4);
|
||||
}
|
||||
}
|
||||
-
|
||||
+done:
|
||||
host->card = card;
|
||||
return 0;
|
||||
|
||||
|
||||
From 6ee3035196c307a77f95b1c1f3cc537e467fb838 Mon Sep 17 00:00:00 2001
|
||||
From: Ulf Hansson <ulf.hansson@linaro.org>
|
||||
Date: Thu, 5 Apr 2018 21:24:15 +0200
|
||||
Subject: [PATCH] UPSTREAM: mmc: core: Share internal function to set initial
|
||||
signal voltage
|
||||
|
||||
Move the corresponding code for setting the initial signal voltage, from
|
||||
mmc_power_up() into a new function, mmc_set_initial_signal_voltage().
|
||||
|
||||
Make the function internally available to the mmc core, as to allow the
|
||||
following changes to make use of it.
|
||||
|
||||
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
|
||||
Tested-by: Quentin Schulz <quentin.schulz@bootlin.com>
|
||||
Reviewed-by: Shawn Lin <shawn.lin@rock-chips.com>
|
||||
(cherry picked from commit 508c9864ccede5dd4b8a7220b3fe6998763e4407)
|
||||
---
|
||||
drivers/mmc/core/core.c | 19 ++++++++++++-------
|
||||
drivers/mmc/core/core.h | 1 +
|
||||
2 files changed, 13 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c
|
||||
index dae82afcbc99..7aa83beea957 100644
|
||||
--- a/drivers/mmc/core/core.c
|
||||
+++ b/drivers/mmc/core/core.c
|
||||
@@ -1590,6 +1590,17 @@ int mmc_set_signal_voltage(struct mmc_host *host, int signal_voltage)
|
||||
|
||||
}
|
||||
|
||||
+void mmc_set_initial_signal_voltage(struct mmc_host *host)
|
||||
+{
|
||||
+ /* Try to set signal voltage to 3.3V but fall back to 1.8v or 1.2v */
|
||||
+ if (!mmc_set_signal_voltage(host, MMC_SIGNAL_VOLTAGE_330))
|
||||
+ dev_dbg(mmc_dev(host), "Initial signal voltage of 3.3v\n");
|
||||
+ else if (!mmc_set_signal_voltage(host, MMC_SIGNAL_VOLTAGE_180))
|
||||
+ dev_dbg(mmc_dev(host), "Initial signal voltage of 1.8v\n");
|
||||
+ else if (!mmc_set_signal_voltage(host, MMC_SIGNAL_VOLTAGE_120))
|
||||
+ dev_dbg(mmc_dev(host), "Initial signal voltage of 1.2v\n");
|
||||
+}
|
||||
+
|
||||
int mmc_host_set_uhs_voltage(struct mmc_host *host)
|
||||
{
|
||||
u32 clock;
|
||||
@@ -1754,13 +1765,7 @@ void mmc_power_up(struct mmc_host *host, u32 ocr)
|
||||
/* Set initial state and call mmc_set_ios */
|
||||
mmc_set_initial_state(host);
|
||||
|
||||
- /* Try to set signal voltage to 3.3V but fall back to 1.8v or 1.2v */
|
||||
- if (!mmc_set_signal_voltage(host, MMC_SIGNAL_VOLTAGE_330))
|
||||
- dev_dbg(mmc_dev(host), "Initial signal voltage of 3.3v\n");
|
||||
- else if (!mmc_set_signal_voltage(host, MMC_SIGNAL_VOLTAGE_180))
|
||||
- dev_dbg(mmc_dev(host), "Initial signal voltage of 1.8v\n");
|
||||
- else if (!mmc_set_signal_voltage(host, MMC_SIGNAL_VOLTAGE_120))
|
||||
- dev_dbg(mmc_dev(host), "Initial signal voltage of 1.2v\n");
|
||||
+ mmc_set_initial_signal_voltage(host);
|
||||
|
||||
/*
|
||||
* This delay should be sufficient to allow the power supply
|
||||
diff --git a/drivers/mmc/core/core.h b/drivers/mmc/core/core.h
|
||||
index 11f3d2c22ecb..2634722265ad 100644
|
||||
--- a/drivers/mmc/core/core.h
|
||||
+++ b/drivers/mmc/core/core.h
|
||||
@@ -46,6 +46,7 @@ u32 mmc_select_voltage(struct mmc_host *host, u32 ocr);
|
||||
int mmc_set_uhs_voltage(struct mmc_host *host, u32 ocr);
|
||||
int mmc_host_set_uhs_voltage(struct mmc_host *host);
|
||||
int mmc_set_signal_voltage(struct mmc_host *host, int signal_voltage);
|
||||
+void mmc_set_initial_signal_voltage(struct mmc_host *host);
|
||||
void mmc_set_timing(struct mmc_host *host, unsigned int timing);
|
||||
void mmc_set_driver_type(struct mmc_host *host, unsigned int drv_type);
|
||||
int mmc_select_drive_strength(struct mmc_card *card, unsigned int max_dtr,
|
||||
|
||||
From adadab9687a3e07be7557e4272fdf5a007b4c604 Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Karlman <jonas@kwiboo.se>
|
||||
Date: Tue, 24 Jul 2018 15:50:06 +0200
|
||||
Subject: [PATCH] mmc: core: set initial signal voltage on power off
|
||||
|
||||
---
|
||||
drivers/mmc/core/core.c | 8 ++++++++
|
||||
1 file changed, 8 insertions(+)
|
||||
|
||||
diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c
|
||||
index 7aa83beea957..d2c59b5e04ab 100644
|
||||
--- a/drivers/mmc/core/core.c
|
||||
+++ b/drivers/mmc/core/core.c
|
||||
@@ -1792,6 +1792,14 @@ void mmc_power_off(struct mmc_host *host)
|
||||
if (host->ios.power_mode == MMC_POWER_OFF)
|
||||
return;
|
||||
|
||||
+ mmc_set_initial_signal_voltage(host);
|
||||
+
|
||||
+ /*
|
||||
+ * This delay should be sufficient to allow the power supply
|
||||
+ * to reach the minimum voltage.
|
||||
+ */
|
||||
+ mmc_delay(10);
|
||||
+
|
||||
mmc_pwrseq_power_off(host);
|
||||
|
||||
host->ios.clock = 0;
|
@ -1,7 +1,7 @@
|
||||
From 9260fcc02a97e6acceb6dc0ef064939382b6b74d Mon Sep 17 00:00:00 2001
|
||||
From ae39146426642d51de99ba3bdef54912c579991b Mon Sep 17 00:00:00 2001
|
||||
From: Jakub Kicinski <jakub.kicinski@netronome.com>
|
||||
Date: Wed, 31 Aug 2016 12:46:44 +0100
|
||||
Subject: [PATCH 1/2] add basic register-field manipulation macros
|
||||
Subject: [PATCH] UPSTREAM: add basic register-field manipulation macros
|
||||
|
||||
Common approach to accessing register fields is to define
|
||||
structures or sets of macros containing mask and shift pair.
|
||||
@ -39,6 +39,7 @@ GCC < 6.0.
|
||||
Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
|
||||
Reviewed-by: Dinan Gunawardena <dinan.gunawardena@netronome.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
(cherry picked from commit 3e9b3112ec74f192eaab976c3889e34255cae940)
|
||||
---
|
||||
include/linux/bitfield.h | 93 ++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
include/linux/bug.h | 3 ++
|
||||
@ -165,20 +166,18 @@ index 7f4818673c41..edd3d8d3cd90 100644
|
||||
#define BUILD_BUG_ON_NOT_POWER_OF_2(n) \
|
||||
BUILD_BUG_ON((n) == 0 || (((n) & ((n) - 1)) != 0))
|
||||
|
||||
--
|
||||
2.11.0
|
||||
|
||||
|
||||
From ae411606724c694ec6fa0f255ed8d7788094109d Mon Sep 17 00:00:00 2001
|
||||
From 8c11cf13e9f5c633bc2d1f3414d3b95c9cc82e4c Mon Sep 17 00:00:00 2001
|
||||
From: Jakub Kicinski <jakub.kicinski@netronome.com>
|
||||
Date: Thu, 9 Feb 2017 09:17:27 -0800
|
||||
Subject: [PATCH 2/2] bitfield.h: add FIELD_FIT() helper
|
||||
Subject: [PATCH] UPSTREAM: bitfield.h: add FIELD_FIT() helper
|
||||
|
||||
Add a helper for checking at runtime that a value will fit inside
|
||||
a specified field/mask.
|
||||
|
||||
Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
(cherry picked from commit 1697599ee301a52cded6499a09bd609f7f63fd06)
|
||||
---
|
||||
include/linux/bitfield.h | 13 +++++++++++++
|
||||
1 file changed, 13 insertions(+)
|
||||
@ -187,10 +186,11 @@ diff --git a/include/linux/bitfield.h b/include/linux/bitfield.h
|
||||
index f6505d83069d..8b9d6fff002d 100644
|
||||
--- a/include/linux/bitfield.h
|
||||
+++ b/include/linux/bitfield.h
|
||||
@@ -63,6 +63,19 @@
|
||||
@@ -62,6 +62,19 @@
|
||||
(1ULL << __bf_shf(_mask))); \
|
||||
})
|
||||
|
||||
/**
|
||||
+/**
|
||||
+ * FIELD_FIT() - check if value fits in the field
|
||||
+ * @_mask: shifted mask defining the field's length and position
|
||||
+ * @_val: value to test against the field
|
||||
@ -203,10 +203,174 @@ index f6505d83069d..8b9d6fff002d 100644
|
||||
+ !((((typeof(_mask))_val) << __bf_shf(_mask)) & ~(_mask)); \
|
||||
+ })
|
||||
+
|
||||
+/**
|
||||
/**
|
||||
* FIELD_PREP() - prepare a bitfield element
|
||||
* @_mask: shifted mask defining the field's length and position
|
||||
* @_val: value to put in the field
|
||||
--
|
||||
2.11.0
|
||||
|
||||
From 9b03f083c3ba2b3ca6dbcfdc76bf24edfe8b2947 Mon Sep 17 00:00:00 2001
|
||||
From: Laurent Defert <laurent.defert@smartjog.com>
|
||||
Date: Wed, 11 Oct 2017 08:46:52 +0200
|
||||
Subject: [PATCH] FROMLIST: compat_ioctl: add compat handler for
|
||||
FE_SET_PROPERTY and FE_GET_PROPERTY
|
||||
|
||||
https://patchwork.linuxtv.org/patch/8209/
|
||||
---
|
||||
fs/compat_ioctl.c | 138 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 138 insertions(+)
|
||||
|
||||
diff --git a/fs/compat_ioctl.c b/fs/compat_ioctl.c
|
||||
index a52ca5cba015..438ce0c6851e 100644
|
||||
--- a/fs/compat_ioctl.c
|
||||
+++ b/fs/compat_ioctl.c
|
||||
@@ -223,6 +223,140 @@ static int do_video_set_spu_palette(unsigned int fd, unsigned int cmd,
|
||||
return err;
|
||||
}
|
||||
|
||||
+struct compat_dtv_property {
|
||||
+ __u32 cmd;
|
||||
+ __u32 reserved[3];
|
||||
+ union {
|
||||
+ __u32 data;
|
||||
+ struct {
|
||||
+ __u8 data[32];
|
||||
+ __u32 len;
|
||||
+ __u32 reserved1[3];
|
||||
+ compat_uptr_t reserved2;
|
||||
+ } buffer;
|
||||
+ } u;
|
||||
+ int result;
|
||||
+};
|
||||
+
|
||||
+struct compat_dtv_properties {
|
||||
+ __u32 num;
|
||||
+ compat_uptr_t props;
|
||||
+};
|
||||
+
|
||||
+#define FE_SET_PROPERTY32 _IOW('o', 82, struct compat_dtv_properties)
|
||||
+#define FE_GET_PROPERTY32 _IOR('o', 83, struct compat_dtv_properties)
|
||||
+
|
||||
+static int do_fe_set_property(unsigned int fd, unsigned int cmd,
|
||||
+ struct compat_dtv_properties __user *dtv32)
|
||||
+{
|
||||
+ struct dtv_properties __user *dtv;
|
||||
+ struct dtv_property __user *properties;
|
||||
+ struct compat_dtv_property __user *properties32;
|
||||
+ compat_uptr_t data;
|
||||
+
|
||||
+ int err;
|
||||
+ int i;
|
||||
+ __u32 num;
|
||||
+
|
||||
+ err = get_user(num, &dtv32->num);
|
||||
+ err |= get_user(data, &dtv32->props);
|
||||
+
|
||||
+ if(err)
|
||||
+ return -EFAULT;
|
||||
+
|
||||
+ dtv = compat_alloc_user_space(sizeof(struct dtv_properties) +
|
||||
+ sizeof(struct dtv_property) * num);
|
||||
+ properties = (struct dtv_property*)((char*)dtv +
|
||||
+ sizeof(struct dtv_properties));
|
||||
+
|
||||
+ err = put_user(properties, &dtv->props);
|
||||
+ err |= put_user(num, &dtv->num);
|
||||
+
|
||||
+ properties32 = compat_ptr(data);
|
||||
+
|
||||
+ if(err)
|
||||
+ return -EFAULT;
|
||||
+
|
||||
+ for(i = 0; i < num; i++) {
|
||||
+ compat_uptr_t reserved2;
|
||||
+
|
||||
+ err |= copy_in_user(&properties[i], &properties32[i],
|
||||
+ (8 * sizeof(__u32)) + (32 * sizeof(__u8)));
|
||||
+ err |= get_user(reserved2, &properties32[i].u.buffer.reserved2);
|
||||
+ err |= put_user(compat_ptr(reserved2),
|
||||
+ &properties[i].u.buffer.reserved2);
|
||||
+ }
|
||||
+
|
||||
+ if(err)
|
||||
+ return -EFAULT;
|
||||
+
|
||||
+ err = sys_ioctl(fd, FE_SET_PROPERTY, (unsigned long) dtv);
|
||||
+
|
||||
+ for(i = 0; i < num; i++) {
|
||||
+ if(copy_in_user(&properties32[i].result, &properties[i].result,
|
||||
+ sizeof(int)))
|
||||
+ return -EFAULT;
|
||||
+ }
|
||||
+
|
||||
+ return err;
|
||||
+}
|
||||
+
|
||||
+static int do_fe_get_property(unsigned int fd, unsigned int cmd,
|
||||
+ struct compat_dtv_properties __user *dtv32)
|
||||
+{
|
||||
+ struct dtv_properties __user *dtv;
|
||||
+ struct dtv_property __user *properties;
|
||||
+ struct compat_dtv_property __user *properties32;
|
||||
+ compat_uptr_t data;
|
||||
+
|
||||
+ int err;
|
||||
+ int i;
|
||||
+ __u32 num;
|
||||
+
|
||||
+ err = get_user(num, &dtv32->num);
|
||||
+ err |= get_user(data, &dtv32->props);
|
||||
+
|
||||
+ if(err)
|
||||
+ return -EFAULT;
|
||||
+
|
||||
+ dtv = compat_alloc_user_space(sizeof(struct dtv_properties) +
|
||||
+ sizeof(struct dtv_property) * num);
|
||||
+ properties = (struct dtv_property*)((char*)dtv +
|
||||
+ sizeof(struct dtv_properties));
|
||||
+
|
||||
+ err = put_user(properties, &dtv->props);
|
||||
+ err |= put_user(num, &dtv->num);
|
||||
+
|
||||
+ properties32 = compat_ptr(data);
|
||||
+
|
||||
+ if(err)
|
||||
+ return -EFAULT;
|
||||
+
|
||||
+ for(i = 0; i < num; i++) {
|
||||
+ compat_uptr_t reserved2;
|
||||
+
|
||||
+ err |= copy_in_user(&properties[i], &properties32[i],
|
||||
+ (8 * sizeof(__u32)) + (32 * sizeof(__u8)));
|
||||
+ err |= get_user(reserved2, &properties32[i].u.buffer.reserved2);
|
||||
+ err |= put_user(compat_ptr(reserved2),
|
||||
+ &properties[i].u.buffer.reserved2);
|
||||
+ }
|
||||
+
|
||||
+ if(err)
|
||||
+ return -EFAULT;
|
||||
+
|
||||
+ err = sys_ioctl(fd, FE_GET_PROPERTY, (unsigned long) dtv);
|
||||
+
|
||||
+ for(i = 0; i < num; i++) {
|
||||
+
|
||||
+ if(copy_in_user(&properties32[i], &properties[i],
|
||||
+ sizeof(properties32[i])))
|
||||
+ return -EFAULT;
|
||||
+ }
|
||||
+
|
||||
+ return err;
|
||||
+}
|
||||
+
|
||||
#ifdef CONFIG_BLOCK
|
||||
typedef struct sg_io_hdr32 {
|
||||
compat_int_t interface_id; /* [i] 'S' for SCSI generic (required) */
|
||||
@@ -1483,6 +1617,10 @@ static long do_ioctl_trans(int fd, unsigned int cmd,
|
||||
return do_video_stillpicture(fd, cmd, argp);
|
||||
case VIDEO_SET_SPU_PALETTE:
|
||||
return do_video_set_spu_palette(fd, cmd, argp);
|
||||
+ case FE_SET_PROPERTY32:
|
||||
+ return do_fe_set_property(fd, cmd, argp);
|
||||
+ case FE_GET_PROPERTY32:
|
||||
+ return do_fe_get_property(fd, cmd, argp);
|
||||
}
|
||||
|
||||
/*
|
@ -1,167 +0,0 @@
|
||||
From 23e9ba535d09e96564c8bc6a28afefbadb5ee619 Mon Sep 17 00:00:00 2001
|
||||
From: Laurent Defert <laurent.defert@smartjog.com>
|
||||
Date: Wed, 11 Oct 2017 08:46:52 +0200
|
||||
Subject: [PATCH] [media] compat_ioctl: add compat handler for FE_SET_PROPERTY
|
||||
and FE_GET_PROPERTY
|
||||
|
||||
https://patchwork.linuxtv.org/patch/8209/
|
||||
---
|
||||
fs/compat_ioctl.c | 138 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 138 insertions(+)
|
||||
|
||||
diff --git a/fs/compat_ioctl.c b/fs/compat_ioctl.c
|
||||
index 76e1f2dc669..f6b4144d94d 100644
|
||||
--- a/fs/compat_ioctl.c
|
||||
+++ b/fs/compat_ioctl.c
|
||||
@@ -224,6 +224,140 @@ static int do_video_set_spu_palette(unsigned int fd, unsigned int cmd,
|
||||
return err;
|
||||
}
|
||||
|
||||
+struct compat_dtv_property {
|
||||
+ __u32 cmd;
|
||||
+ __u32 reserved[3];
|
||||
+ union {
|
||||
+ __u32 data;
|
||||
+ struct {
|
||||
+ __u8 data[32];
|
||||
+ __u32 len;
|
||||
+ __u32 reserved1[3];
|
||||
+ compat_uptr_t reserved2;
|
||||
+ } buffer;
|
||||
+ } u;
|
||||
+ int result;
|
||||
+};
|
||||
+
|
||||
+struct compat_dtv_properties {
|
||||
+ __u32 num;
|
||||
+ compat_uptr_t props;
|
||||
+};
|
||||
+
|
||||
+#define FE_SET_PROPERTY32 _IOW('o', 82, struct compat_dtv_properties)
|
||||
+#define FE_GET_PROPERTY32 _IOR('o', 83, struct compat_dtv_properties)
|
||||
+
|
||||
+static int do_fe_set_property(unsigned int fd, unsigned int cmd,
|
||||
+ struct compat_dtv_properties __user *dtv32)
|
||||
+{
|
||||
+ struct dtv_properties __user *dtv;
|
||||
+ struct dtv_property __user *properties;
|
||||
+ struct compat_dtv_property __user *properties32;
|
||||
+ compat_uptr_t data;
|
||||
+
|
||||
+ int err;
|
||||
+ int i;
|
||||
+ __u32 num;
|
||||
+
|
||||
+ err = get_user(num, &dtv32->num);
|
||||
+ err |= get_user(data, &dtv32->props);
|
||||
+
|
||||
+ if(err)
|
||||
+ return -EFAULT;
|
||||
+
|
||||
+ dtv = compat_alloc_user_space(sizeof(struct dtv_properties) +
|
||||
+ sizeof(struct dtv_property) * num);
|
||||
+ properties = (struct dtv_property*)((char*)dtv +
|
||||
+ sizeof(struct dtv_properties));
|
||||
+
|
||||
+ err = put_user(properties, &dtv->props);
|
||||
+ err |= put_user(num, &dtv->num);
|
||||
+
|
||||
+ properties32 = compat_ptr(data);
|
||||
+
|
||||
+ if(err)
|
||||
+ return -EFAULT;
|
||||
+
|
||||
+ for(i = 0; i < num; i++) {
|
||||
+ compat_uptr_t reserved2;
|
||||
+
|
||||
+ err |= copy_in_user(&properties[i], &properties32[i],
|
||||
+ (8 * sizeof(__u32)) + (32 * sizeof(__u8)));
|
||||
+ err |= get_user(reserved2, &properties32[i].u.buffer.reserved2);
|
||||
+ err |= put_user(compat_ptr(reserved2),
|
||||
+ &properties[i].u.buffer.reserved2);
|
||||
+ }
|
||||
+
|
||||
+ if(err)
|
||||
+ return -EFAULT;
|
||||
+
|
||||
+ err = sys_ioctl(fd, FE_SET_PROPERTY, (unsigned long) dtv);
|
||||
+
|
||||
+ for(i = 0; i < num; i++) {
|
||||
+ if(copy_in_user(&properties32[i].result, &properties[i].result,
|
||||
+ sizeof(int)))
|
||||
+ return -EFAULT;
|
||||
+ }
|
||||
+
|
||||
+ return err;
|
||||
+}
|
||||
+
|
||||
+static int do_fe_get_property(unsigned int fd, unsigned int cmd,
|
||||
+ struct compat_dtv_properties __user *dtv32)
|
||||
+{
|
||||
+ struct dtv_properties __user *dtv;
|
||||
+ struct dtv_property __user *properties;
|
||||
+ struct compat_dtv_property __user *properties32;
|
||||
+ compat_uptr_t data;
|
||||
+
|
||||
+ int err;
|
||||
+ int i;
|
||||
+ __u32 num;
|
||||
+
|
||||
+ err = get_user(num, &dtv32->num);
|
||||
+ err |= get_user(data, &dtv32->props);
|
||||
+
|
||||
+ if(err)
|
||||
+ return -EFAULT;
|
||||
+
|
||||
+ dtv = compat_alloc_user_space(sizeof(struct dtv_properties) +
|
||||
+ sizeof(struct dtv_property) * num);
|
||||
+ properties = (struct dtv_property*)((char*)dtv +
|
||||
+ sizeof(struct dtv_properties));
|
||||
+
|
||||
+ err = put_user(properties, &dtv->props);
|
||||
+ err |= put_user(num, &dtv->num);
|
||||
+
|
||||
+ properties32 = compat_ptr(data);
|
||||
+
|
||||
+ if(err)
|
||||
+ return -EFAULT;
|
||||
+
|
||||
+ for(i = 0; i < num; i++) {
|
||||
+ compat_uptr_t reserved2;
|
||||
+
|
||||
+ err |= copy_in_user(&properties[i], &properties32[i],
|
||||
+ (8 * sizeof(__u32)) + (32 * sizeof(__u8)));
|
||||
+ err |= get_user(reserved2, &properties32[i].u.buffer.reserved2);
|
||||
+ err |= put_user(compat_ptr(reserved2),
|
||||
+ &properties[i].u.buffer.reserved2);
|
||||
+ }
|
||||
+
|
||||
+ if(err)
|
||||
+ return -EFAULT;
|
||||
+
|
||||
+ err = sys_ioctl(fd, FE_GET_PROPERTY, (unsigned long) dtv);
|
||||
+
|
||||
+ for(i = 0; i < num; i++) {
|
||||
+
|
||||
+ if(copy_in_user(&properties32[i], &properties[i],
|
||||
+ sizeof(properties32[i])))
|
||||
+ return -EFAULT;
|
||||
+ }
|
||||
+
|
||||
+ return err;
|
||||
+}
|
||||
+
|
||||
#ifdef CONFIG_BLOCK
|
||||
typedef struct sg_io_hdr32 {
|
||||
compat_int_t interface_id; /* [i] 'S' for SCSI generic (required) */
|
||||
@@ -1489,6 +1623,10 @@ static long do_ioctl_trans(int fd, unsigned int cmd,
|
||||
return do_video_stillpicture(fd, cmd, argp);
|
||||
case VIDEO_SET_SPU_PALETTE:
|
||||
return do_video_set_spu_palette(fd, cmd, argp);
|
||||
+ case FE_SET_PROPERTY32:
|
||||
+ return do_fe_set_property(fd, cmd, argp);
|
||||
+ case FE_GET_PROPERTY32:
|
||||
+ return do_fe_get_property(fd, cmd, argp);
|
||||
}
|
||||
|
||||
/*
|
@ -0,0 +1,49 @@
|
||||
From 6ed983631422dcce52d8b029818617b4cd067a93 Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Karlman <jonas@kwiboo.se>
|
||||
Date: Sat, 21 Apr 2018 12:52:58 +0200
|
||||
Subject: [PATCH] drm/rockchip: skip 4K 50/60Hz clocks for RK3328
|
||||
|
||||
---
|
||||
drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
|
||||
index e2aad6e2149b..6399bb2f3a32 100644
|
||||
--- a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
|
||||
+++ b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
|
||||
@@ -519,6 +519,10 @@ dw_hdmi_rockchip_mode_valid(struct drm_connector *connector,
|
||||
if (hdmi->dev_type == RK3288_HDMI && (mode->clock < 27500 || mode->clock > 340000))
|
||||
return MODE_CLOCK_RANGE;
|
||||
|
||||
+ /* Skip 4K 50/60Hz clocks for RK3328 */
|
||||
+ if (hdmi->dev_type == RK3328_HDMI && mode->clock > 340000)
|
||||
+ return MODE_CLOCK_RANGE;
|
||||
+
|
||||
/*
|
||||
* ensure all drm display mode can work, if someone want support more
|
||||
* resolutions, please limit the possible_crtc, only connect to
|
||||
|
||||
From 3953395d6056914e32f4d3459cdb0d5bd8c362a0 Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Karlman <jonas@kwiboo.se>
|
||||
Date: Sat, 21 Apr 2018 12:53:04 +0200
|
||||
Subject: [PATCH] drm/rockchip: skip 4K 50/60Hz clocks for RK3399
|
||||
|
||||
---
|
||||
drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
|
||||
index 6399bb2f3a32..3171c21f1c78 100644
|
||||
--- a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
|
||||
+++ b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
|
||||
@@ -523,6 +523,10 @@ dw_hdmi_rockchip_mode_valid(struct drm_connector *connector,
|
||||
if (hdmi->dev_type == RK3328_HDMI && mode->clock > 340000)
|
||||
return MODE_CLOCK_RANGE;
|
||||
|
||||
+ /* Skip 4K 50/60Hz clocks for RK3399 */
|
||||
+ if (hdmi->dev_type == RK3399_HDMI && mode->clock > 340000)
|
||||
+ return MODE_CLOCK_RANGE;
|
||||
+
|
||||
/*
|
||||
* ensure all drm display mode can work, if someone want support more
|
||||
* resolutions, please limit the possible_crtc, only connect to
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,945 @@
|
||||
From 499f15c3237602cca9ccebe902d31bd7404fb2db Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Karlman <jonas@kwiboo.se>
|
||||
Date: Thu, 5 Jul 2018 00:14:14 +0200
|
||||
Subject: [PATCH] Revert "drm/drm-prime: cache dma_buf import context"
|
||||
|
||||
This reverts commit 5a90381e5acc2cf32be03099a14d05d4362b3348.
|
||||
---
|
||||
drivers/gpu/drm/drm_prime.c | 46 ++---------------------------
|
||||
drivers/gpu/drm/rockchip/rockchip_drm_gem.c | 1 +
|
||||
2 files changed, 3 insertions(+), 44 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/drm_prime.c b/drivers/gpu/drm/drm_prime.c
|
||||
index 6f207d5946dc..6b7417a194a3 100644
|
||||
--- a/drivers/gpu/drm/drm_prime.c
|
||||
+++ b/drivers/gpu/drm/drm_prime.c
|
||||
@@ -71,11 +71,6 @@ struct drm_prime_attachment {
|
||||
enum dma_data_direction dir;
|
||||
};
|
||||
|
||||
-struct drm_prime_callback_data {
|
||||
- struct drm_gem_object *obj;
|
||||
- struct sg_table *sgt;
|
||||
-};
|
||||
-
|
||||
static int drm_prime_add_buf_handle(struct drm_prime_file_private *prime_fpriv,
|
||||
struct dma_buf *dma_buf, uint32_t handle)
|
||||
{
|
||||
@@ -524,23 +519,6 @@ out_unlock:
|
||||
}
|
||||
EXPORT_SYMBOL(drm_gem_prime_handle_to_fd);
|
||||
|
||||
-static void drm_gem_prime_dmabuf_release_callback(void *data)
|
||||
-{
|
||||
- struct drm_prime_callback_data *cb_data = data;
|
||||
-
|
||||
- if (cb_data && cb_data->obj && cb_data->obj->import_attach) {
|
||||
- struct dma_buf_attachment *attach = cb_data->obj->import_attach;
|
||||
- struct sg_table *sgt = cb_data->sgt;
|
||||
-
|
||||
- if (sgt)
|
||||
- dma_buf_unmap_attachment(attach, sgt,
|
||||
- DMA_BIDIRECTIONAL);
|
||||
- dma_buf_detach(attach->dmabuf, attach);
|
||||
- drm_gem_object_unreference_unlocked(cb_data->obj);
|
||||
- kfree(cb_data);
|
||||
- }
|
||||
-}
|
||||
-
|
||||
/**
|
||||
* drm_gem_prime_import - helper library implementation of the import callback
|
||||
* @dev: drm_device to import into
|
||||
@@ -555,7 +533,6 @@ struct drm_gem_object *drm_gem_prime_import(struct drm_device *dev,
|
||||
struct dma_buf_attachment *attach;
|
||||
struct sg_table *sgt;
|
||||
struct drm_gem_object *obj;
|
||||
- struct drm_prime_callback_data *cb_data;
|
||||
int ret;
|
||||
|
||||
if (dma_buf->ops == &drm_gem_prime_dmabuf_ops) {
|
||||
@@ -570,13 +547,6 @@ struct drm_gem_object *drm_gem_prime_import(struct drm_device *dev,
|
||||
}
|
||||
}
|
||||
|
||||
- cb_data = dma_buf_get_release_callback_data(dma_buf,
|
||||
- drm_gem_prime_dmabuf_release_callback);
|
||||
- if (cb_data && cb_data->obj && cb_data->obj->dev == dev) {
|
||||
- drm_gem_object_reference(cb_data->obj);
|
||||
- return cb_data->obj;
|
||||
- }
|
||||
-
|
||||
if (!dev->driver->gem_prime_import_sg_table)
|
||||
return ERR_PTR(-EINVAL);
|
||||
|
||||
@@ -585,16 +555,11 @@ struct drm_gem_object *drm_gem_prime_import(struct drm_device *dev,
|
||||
return ERR_CAST(attach);
|
||||
|
||||
get_dma_buf(dma_buf);
|
||||
- cb_data = kmalloc(sizeof(*cb_data), GFP_KERNEL);
|
||||
- if (!cb_data) {
|
||||
- ret = -ENOMEM;
|
||||
- goto fail_detach;
|
||||
- }
|
||||
|
||||
sgt = dma_buf_map_attachment(attach, DMA_BIDIRECTIONAL);
|
||||
if (IS_ERR(sgt)) {
|
||||
ret = PTR_ERR(sgt);
|
||||
- goto fail_free;
|
||||
+ goto fail_detach;
|
||||
}
|
||||
|
||||
obj = dev->driver->gem_prime_import_sg_table(dev, attach, sgt);
|
||||
@@ -602,20 +567,13 @@ struct drm_gem_object *drm_gem_prime_import(struct drm_device *dev,
|
||||
ret = PTR_ERR(obj);
|
||||
goto fail_unmap;
|
||||
}
|
||||
+
|
||||
obj->import_attach = attach;
|
||||
- cb_data->obj = obj;
|
||||
- cb_data->sgt = sgt;
|
||||
- dma_buf_set_release_callback(dma_buf,
|
||||
- drm_gem_prime_dmabuf_release_callback, cb_data);
|
||||
- dma_buf_put(dma_buf);
|
||||
- drm_gem_object_reference(obj);
|
||||
|
||||
return obj;
|
||||
|
||||
fail_unmap:
|
||||
dma_buf_unmap_attachment(attach, sgt, DMA_BIDIRECTIONAL);
|
||||
-fail_free:
|
||||
- kfree(cb_data);
|
||||
fail_detach:
|
||||
dma_buf_detach(dma_buf, attach);
|
||||
dma_buf_put(dma_buf);
|
||||
diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_gem.c b/drivers/gpu/drm/rockchip/rockchip_drm_gem.c
|
||||
index 273a52b5eb66..85bbd19c87b0 100644
|
||||
--- a/drivers/gpu/drm/rockchip/rockchip_drm_gem.c
|
||||
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_gem.c
|
||||
@@ -649,6 +649,7 @@ void rockchip_gem_free_object(struct drm_gem_object *obj)
|
||||
dma_unmap_sg(drm->dev, rk_obj->sgt->sgl,
|
||||
rk_obj->sgt->nents, DMA_BIDIRECTIONAL);
|
||||
}
|
||||
+ drm_prime_gem_destroy(obj, rk_obj->sgt);
|
||||
} else {
|
||||
rockchip_gem_free_buf(rk_obj);
|
||||
}
|
||||
|
||||
From 3dd29985f5f1cec249c833b1b2ca33e131f79825 Mon Sep 17 00:00:00 2001
|
||||
From: Rob Clark <robdclark@gmail.com>
|
||||
Date: Thu, 9 Jun 2016 15:29:19 -0400
|
||||
Subject: [PATCH] UPSTREAM: drm/prime: fix error path deadlock fail
|
||||
|
||||
There were a couple messed up things about this fail path.
|
||||
(1) it would drop object_name_lock twice
|
||||
(2) drm_gem_handle_delete() (in drm_gem_remove_prime_handles())
|
||||
needs to grab prime_lock
|
||||
|
||||
Reported-by: Alex Deucher <alexdeucher@gmail.com>
|
||||
Signed-off-by: Rob Clark <robdclark@gmail.com>
|
||||
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
|
||||
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
|
||||
Link: http://patchwork.freedesktop.org/patch/msgid/1465500559-17873-1-git-send-email-robdclark@gmail.com
|
||||
(cherry picked from commit bd6e2732f0e2894ce792f344c41fc32591436fe3)
|
||||
---
|
||||
drivers/gpu/drm/drm_prime.c | 10 ++++++----
|
||||
1 file changed, 6 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/drm_prime.c b/drivers/gpu/drm/drm_prime.c
|
||||
index 6b7417a194a3..d8d85286764d 100644
|
||||
--- a/drivers/gpu/drm/drm_prime.c
|
||||
+++ b/drivers/gpu/drm/drm_prime.c
|
||||
@@ -628,7 +628,7 @@ int drm_gem_prime_fd_to_handle(struct drm_device *dev,
|
||||
get_dma_buf(dma_buf);
|
||||
}
|
||||
|
||||
- /* drm_gem_handle_create_tail unlocks dev->object_name_lock. */
|
||||
+ /* _handle_create_tail unconditionally unlocks dev->object_name_lock. */
|
||||
ret = drm_gem_handle_create_tail(file_priv, obj, handle);
|
||||
drm_gem_object_unreference_unlocked(obj);
|
||||
if (ret)
|
||||
@@ -636,11 +636,10 @@ int drm_gem_prime_fd_to_handle(struct drm_device *dev,
|
||||
|
||||
ret = drm_prime_add_buf_handle(&file_priv->prime,
|
||||
dma_buf, *handle);
|
||||
+ mutex_unlock(&file_priv->prime.lock);
|
||||
if (ret)
|
||||
goto fail;
|
||||
|
||||
- mutex_unlock(&file_priv->prime.lock);
|
||||
-
|
||||
dma_buf_put(dma_buf);
|
||||
|
||||
return 0;
|
||||
@@ -650,11 +649,14 @@ fail:
|
||||
* to detach.. which seems ok..
|
||||
*/
|
||||
drm_gem_handle_delete(file_priv, *handle);
|
||||
+ dma_buf_put(dma_buf);
|
||||
+ return ret;
|
||||
+
|
||||
out_unlock:
|
||||
mutex_unlock(&dev->object_name_lock);
|
||||
out_put:
|
||||
- dma_buf_put(dma_buf);
|
||||
mutex_unlock(&file_priv->prime.lock);
|
||||
+ dma_buf_put(dma_buf);
|
||||
return ret;
|
||||
}
|
||||
EXPORT_SYMBOL(drm_gem_prime_fd_to_handle);
|
||||
|
||||
From a689159fac372a8210d2c63ba63da3a097388b97 Mon Sep 17 00:00:00 2001
|
||||
From: Chris Wilson <chris@chris-wilson.co.uk>
|
||||
Date: Mon, 26 Sep 2016 21:44:14 +0100
|
||||
Subject: [PATCH] UPSTREAM: drm: Convert prime dma-buf <-> handle to rbtree
|
||||
|
||||
Currently we use a linear walk to lookup a handle and return a dma-buf,
|
||||
and vice versa. A long overdue TODO task is to convert that to a
|
||||
hashtable. Since the initial implementation of dma-buf/prime, we now
|
||||
have resizeable hashtables we can use (and now a future task is to RCU
|
||||
enable the lookup!). However, this patch opts to use an rbtree instead
|
||||
to provide O(lgN) lookups (and insertion, deletion). rbtrees were chosen
|
||||
over using the RCU backed resizable hashtable to firstly avoid the
|
||||
reallocations (rbtrees can be embedded entirely within the parent
|
||||
struct) and to favour simpler code with predictable worst case
|
||||
behaviour. In simple testing, the difference between using the constant
|
||||
lookup and insertion of the rhashtable and the rbtree was less than 10%
|
||||
of the wall time (igt/benchmarks/prime_lookup) - both are dramatic
|
||||
improvements over the existing linear lists.
|
||||
|
||||
v2: Favour rbtree over rhashtable
|
||||
|
||||
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=94631
|
||||
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
||||
Cc: Sean Paul <seanpaul@chromium.org>
|
||||
Cc: David Herrmann <dh.herrmann@gmail.com>
|
||||
Reviewed-by: David Herrmann <dh.herrmann@gmail.com>
|
||||
Reviewed-by: Sean Paul <seanpaul@chromium.org>
|
||||
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
|
||||
Link: http://patchwork.freedesktop.org/patch/msgid/20160926204414.23222-1-chris@chris-wilson.co.uk
|
||||
(cherry picked from commit 077675c1e8a193a6355d4a7c8c7bf63be310b472)
|
||||
---
|
||||
drivers/gpu/drm/drm_prime.c | 85 +++++++++++++++++++++++++++++++++++++++------
|
||||
include/drm/drmP.h | 5 +--
|
||||
2 files changed, 77 insertions(+), 13 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/drm_prime.c b/drivers/gpu/drm/drm_prime.c
|
||||
index d8d85286764d..4c49e736bc9c 100644
|
||||
--- a/drivers/gpu/drm/drm_prime.c
|
||||
+++ b/drivers/gpu/drm/drm_prime.c
|
||||
@@ -28,6 +28,7 @@
|
||||
|
||||
#include <linux/export.h>
|
||||
#include <linux/dma-buf.h>
|
||||
+#include <linux/rbtree.h>
|
||||
#include <drm/drmP.h>
|
||||
#include <drm/drm_gem.h>
|
||||
|
||||
@@ -61,9 +62,11 @@
|
||||
*/
|
||||
|
||||
struct drm_prime_member {
|
||||
- struct list_head entry;
|
||||
struct dma_buf *dma_buf;
|
||||
uint32_t handle;
|
||||
+
|
||||
+ struct rb_node dmabuf_rb;
|
||||
+ struct rb_node handle_rb;
|
||||
};
|
||||
|
||||
struct drm_prime_attachment {
|
||||
@@ -75,6 +78,7 @@ static int drm_prime_add_buf_handle(struct drm_prime_file_private *prime_fpriv,
|
||||
struct dma_buf *dma_buf, uint32_t handle)
|
||||
{
|
||||
struct drm_prime_member *member;
|
||||
+ struct rb_node **p, *rb;
|
||||
|
||||
member = kmalloc(sizeof(*member), GFP_KERNEL);
|
||||
if (!member)
|
||||
@@ -83,18 +87,56 @@ static int drm_prime_add_buf_handle(struct drm_prime_file_private *prime_fpriv,
|
||||
get_dma_buf(dma_buf);
|
||||
member->dma_buf = dma_buf;
|
||||
member->handle = handle;
|
||||
- list_add(&member->entry, &prime_fpriv->head);
|
||||
+
|
||||
+ rb = NULL;
|
||||
+ p = &prime_fpriv->dmabufs.rb_node;
|
||||
+ while (*p) {
|
||||
+ struct drm_prime_member *pos;
|
||||
+
|
||||
+ rb = *p;
|
||||
+ pos = rb_entry(rb, struct drm_prime_member, dmabuf_rb);
|
||||
+ if (dma_buf > pos->dma_buf)
|
||||
+ p = &rb->rb_right;
|
||||
+ else
|
||||
+ p = &rb->rb_left;
|
||||
+ }
|
||||
+ rb_link_node(&member->dmabuf_rb, rb, p);
|
||||
+ rb_insert_color(&member->dmabuf_rb, &prime_fpriv->dmabufs);
|
||||
+
|
||||
+ rb = NULL;
|
||||
+ p = &prime_fpriv->handles.rb_node;
|
||||
+ while (*p) {
|
||||
+ struct drm_prime_member *pos;
|
||||
+
|
||||
+ rb = *p;
|
||||
+ pos = rb_entry(rb, struct drm_prime_member, handle_rb);
|
||||
+ if (handle > pos->handle)
|
||||
+ p = &rb->rb_right;
|
||||
+ else
|
||||
+ p = &rb->rb_left;
|
||||
+ }
|
||||
+ rb_link_node(&member->handle_rb, rb, p);
|
||||
+ rb_insert_color(&member->handle_rb, &prime_fpriv->handles);
|
||||
+
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct dma_buf *drm_prime_lookup_buf_by_handle(struct drm_prime_file_private *prime_fpriv,
|
||||
uint32_t handle)
|
||||
{
|
||||
- struct drm_prime_member *member;
|
||||
+ struct rb_node *rb;
|
||||
+
|
||||
+ rb = prime_fpriv->handles.rb_node;
|
||||
+ while (rb) {
|
||||
+ struct drm_prime_member *member;
|
||||
|
||||
- list_for_each_entry(member, &prime_fpriv->head, entry) {
|
||||
+ member = rb_entry(rb, struct drm_prime_member, handle_rb);
|
||||
if (member->handle == handle)
|
||||
return member->dma_buf;
|
||||
+ else if (member->handle < handle)
|
||||
+ rb = rb->rb_right;
|
||||
+ else
|
||||
+ rb = rb->rb_left;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
@@ -104,14 +146,23 @@ static int drm_prime_lookup_buf_handle(struct drm_prime_file_private *prime_fpri
|
||||
struct dma_buf *dma_buf,
|
||||
uint32_t *handle)
|
||||
{
|
||||
- struct drm_prime_member *member;
|
||||
+ struct rb_node *rb;
|
||||
+
|
||||
+ rb = prime_fpriv->dmabufs.rb_node;
|
||||
+ while (rb) {
|
||||
+ struct drm_prime_member *member;
|
||||
|
||||
- list_for_each_entry(member, &prime_fpriv->head, entry) {
|
||||
+ member = rb_entry(rb, struct drm_prime_member, dmabuf_rb);
|
||||
if (member->dma_buf == dma_buf) {
|
||||
*handle = member->handle;
|
||||
return 0;
|
||||
+ } else if (member->dma_buf < dma_buf) {
|
||||
+ rb = rb->rb_right;
|
||||
+ } else {
|
||||
+ rb = rb->rb_left;
|
||||
}
|
||||
}
|
||||
+
|
||||
return -ENOENT;
|
||||
}
|
||||
|
||||
@@ -166,13 +217,24 @@ static void drm_gem_map_detach(struct dma_buf *dma_buf,
|
||||
void drm_prime_remove_buf_handle_locked(struct drm_prime_file_private *prime_fpriv,
|
||||
struct dma_buf *dma_buf)
|
||||
{
|
||||
- struct drm_prime_member *member, *safe;
|
||||
+ struct rb_node *rb;
|
||||
|
||||
- list_for_each_entry_safe(member, safe, &prime_fpriv->head, entry) {
|
||||
+ rb = prime_fpriv->dmabufs.rb_node;
|
||||
+ while (rb) {
|
||||
+ struct drm_prime_member *member;
|
||||
+
|
||||
+ member = rb_entry(rb, struct drm_prime_member, dmabuf_rb);
|
||||
if (member->dma_buf == dma_buf) {
|
||||
+ rb_erase(&member->handle_rb, &prime_fpriv->handles);
|
||||
+ rb_erase(&member->dmabuf_rb, &prime_fpriv->dmabufs);
|
||||
+
|
||||
dma_buf_put(dma_buf);
|
||||
- list_del(&member->entry);
|
||||
kfree(member);
|
||||
+ return;
|
||||
+ } else if (member->dma_buf < dma_buf) {
|
||||
+ rb = rb->rb_right;
|
||||
+ } else {
|
||||
+ rb = rb->rb_left;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -794,12 +856,13 @@ EXPORT_SYMBOL(drm_prime_gem_destroy);
|
||||
|
||||
void drm_prime_init_file_private(struct drm_prime_file_private *prime_fpriv)
|
||||
{
|
||||
- INIT_LIST_HEAD(&prime_fpriv->head);
|
||||
mutex_init(&prime_fpriv->lock);
|
||||
+ prime_fpriv->dmabufs = RB_ROOT;
|
||||
+ prime_fpriv->handles = RB_ROOT;
|
||||
}
|
||||
|
||||
void drm_prime_destroy_file_private(struct drm_prime_file_private *prime_fpriv)
|
||||
{
|
||||
/* by now drm_gem_release should've made sure the list is empty */
|
||||
- WARN_ON(!list_empty(&prime_fpriv->head));
|
||||
+ WARN_ON(!RB_EMPTY_ROOT(&prime_fpriv->dmabufs));
|
||||
}
|
||||
diff --git a/include/drm/drmP.h b/include/drm/drmP.h
|
||||
index 04edcd32b409..93da65df2e7e 100644
|
||||
--- a/include/drm/drmP.h
|
||||
+++ b/include/drm/drmP.h
|
||||
@@ -51,6 +51,7 @@
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/poll.h>
|
||||
#include <linux/ratelimit.h>
|
||||
+#include <linux/rbtree.h>
|
||||
#include <linux/sched.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/types.h>
|
||||
@@ -365,10 +366,10 @@ struct drm_pending_event {
|
||||
void (*destroy)(struct drm_pending_event *event);
|
||||
};
|
||||
|
||||
-/* initial implementaton using a linked list - todo hashtab */
|
||||
struct drm_prime_file_private {
|
||||
- struct list_head head;
|
||||
struct mutex lock;
|
||||
+ struct rb_root dmabufs;
|
||||
+ struct rb_root handles;
|
||||
};
|
||||
|
||||
/** File private data */
|
||||
|
||||
From f977098a9a02ac2df267eafe860370cb4c407d69 Mon Sep 17 00:00:00 2001
|
||||
From: Chris Wilson <chris@chris-wilson.co.uk>
|
||||
Date: Wed, 5 Oct 2016 13:21:44 +0100
|
||||
Subject: [PATCH] UPSTREAM: drm/prime: Take a ref on the drm_dev when exporting
|
||||
a dma_buf
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
dma_buf may live a long time, longer than the last direct user of the
|
||||
driver. We already hold a reference to the owner module (that prevents
|
||||
the object code from disappearing), but there is no reference to the
|
||||
drm_dev - so the pointers to the driver backend themselves may vanish.
|
||||
|
||||
v2: Resist temptation to fix the bug in armada_gem.c not setting the
|
||||
correct flags on the exported dma-buf (it should pass the flags through
|
||||
and not be arbitrarily setting O_RDWR).
|
||||
|
||||
Use a common wrapper for exporting the dmabuf and acquiring the
|
||||
reference to the drm_device.
|
||||
|
||||
Testcase: igt/vgem_basic/unload
|
||||
Suggested-by: Daniel Vetter <daniel.vetter@ffwll.ch>
|
||||
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
||||
Cc: Petri Latvala <petri.latvala@intel.com>
|
||||
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
|
||||
Cc: stable@vger.kernel.org
|
||||
Tested-by: Petri Latvala <petri.latvala@intel.com>
|
||||
Reviewed-by: Christian König <christian.koenig@amd.com>
|
||||
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
|
||||
Link: http://patchwork.freedesktop.org/patch/msgid/20161005122145.1507-2-chris@chris-wilson.co.uk
|
||||
(cherry picked from commit a4fce9cb782ad340ee5576a38e934e5e75832dc6)
|
||||
---
|
||||
drivers/gpu/drm/armada/armada_gem.c | 2 +-
|
||||
drivers/gpu/drm/drm_prime.c | 30 +++++++++++++++++++++++++++++-
|
||||
drivers/gpu/drm/i915/i915_gem_dmabuf.c | 2 +-
|
||||
drivers/gpu/drm/tegra/gem.c | 2 +-
|
||||
drivers/gpu/drm/udl/udl_dmabuf.c | 2 +-
|
||||
include/drm/drmP.h | 4 ++++
|
||||
6 files changed, 37 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/armada/armada_gem.c b/drivers/gpu/drm/armada/armada_gem.c
|
||||
index 60a688ef81c7..cd5bb991f49a 100644
|
||||
--- a/drivers/gpu/drm/armada/armada_gem.c
|
||||
+++ b/drivers/gpu/drm/armada/armada_gem.c
|
||||
@@ -546,7 +546,7 @@ armada_gem_prime_export(struct drm_device *dev, struct drm_gem_object *obj,
|
||||
exp_info.flags = O_RDWR;
|
||||
exp_info.priv = obj;
|
||||
|
||||
- return dma_buf_export(&exp_info);
|
||||
+ return drm_gem_dmabuf_export(dev, &exp_info);
|
||||
}
|
||||
|
||||
struct drm_gem_object *
|
||||
diff --git a/drivers/gpu/drm/drm_prime.c b/drivers/gpu/drm/drm_prime.c
|
||||
index 4c49e736bc9c..94b4872255c8 100644
|
||||
--- a/drivers/gpu/drm/drm_prime.c
|
||||
+++ b/drivers/gpu/drm/drm_prime.c
|
||||
@@ -283,19 +283,47 @@ static void drm_gem_unmap_dma_buf(struct dma_buf_attachment *attach,
|
||||
/* nothing to be done here */
|
||||
}
|
||||
|
||||
+/**
|
||||
+ * drm_gem_dmabuf_export - dma_buf export implementation for GEM
|
||||
+ * @dma_buf: buffer to be exported
|
||||
+ *
|
||||
+ * This wraps dma_buf_export() for use by generic GEM drivers that are using
|
||||
+ * drm_gem_dmabuf_release(). In addition to calling dma_buf_export(), we take
|
||||
+ * a reference to the drm_device which is released by drm_gem_dmabuf_release().
|
||||
+ *
|
||||
+ * Returns the new dmabuf.
|
||||
+ */
|
||||
+struct dma_buf *drm_gem_dmabuf_export(struct drm_device *dev,
|
||||
+ struct dma_buf_export_info *exp_info)
|
||||
+{
|
||||
+ struct dma_buf *dma_buf;
|
||||
+
|
||||
+ dma_buf = dma_buf_export(exp_info);
|
||||
+ if (!IS_ERR(dma_buf))
|
||||
+ drm_dev_ref(dev);
|
||||
+
|
||||
+ return dma_buf;
|
||||
+}
|
||||
+EXPORT_SYMBOL(drm_gem_dmabuf_export);
|
||||
+
|
||||
/**
|
||||
* drm_gem_dmabuf_release - dma_buf release implementation for GEM
|
||||
* @dma_buf: buffer to be released
|
||||
*
|
||||
* Generic release function for dma_bufs exported as PRIME buffers. GEM drivers
|
||||
* must use this in their dma_buf ops structure as the release callback.
|
||||
+ * drm_gem_dmabuf_release() should be used in conjunction with
|
||||
+ * drm_gem_dmabuf_export().
|
||||
*/
|
||||
void drm_gem_dmabuf_release(struct dma_buf *dma_buf)
|
||||
{
|
||||
struct drm_gem_object *obj = dma_buf->priv;
|
||||
+ struct drm_device *dev = obj->dev;
|
||||
|
||||
/* drop the reference on the export fd holds */
|
||||
drm_gem_object_unreference_unlocked(obj);
|
||||
+
|
||||
+ drm_dev_unref(dev);
|
||||
}
|
||||
EXPORT_SYMBOL(drm_gem_dmabuf_release);
|
||||
|
||||
@@ -444,7 +472,7 @@ struct dma_buf *drm_gem_prime_export(struct drm_device *dev,
|
||||
if (dev->driver->gem_prime_res_obj)
|
||||
exp_info.resv = dev->driver->gem_prime_res_obj(obj);
|
||||
|
||||
- return dma_buf_export(&exp_info);
|
||||
+ return drm_gem_dmabuf_export(dev, &exp_info);
|
||||
}
|
||||
EXPORT_SYMBOL(drm_gem_prime_export);
|
||||
|
||||
diff --git a/drivers/gpu/drm/i915/i915_gem_dmabuf.c b/drivers/gpu/drm/i915/i915_gem_dmabuf.c
|
||||
index e9c2bfd85b52..d4a021629bd6 100644
|
||||
--- a/drivers/gpu/drm/i915/i915_gem_dmabuf.c
|
||||
+++ b/drivers/gpu/drm/i915/i915_gem_dmabuf.c
|
||||
@@ -244,7 +244,7 @@ struct dma_buf *i915_gem_prime_export(struct drm_device *dev,
|
||||
return ERR_PTR(ret);
|
||||
}
|
||||
|
||||
- return dma_buf_export(&exp_info);
|
||||
+ return drm_gem_dmabuf_export(dev, &exp_info);
|
||||
}
|
||||
|
||||
static int i915_gem_object_get_pages_dmabuf(struct drm_i915_gem_object *obj)
|
||||
diff --git a/drivers/gpu/drm/tegra/gem.c b/drivers/gpu/drm/tegra/gem.c
|
||||
index 01e16e146bfe..da06f1c1ee0f 100644
|
||||
--- a/drivers/gpu/drm/tegra/gem.c
|
||||
+++ b/drivers/gpu/drm/tegra/gem.c
|
||||
@@ -625,7 +625,7 @@ struct dma_buf *tegra_gem_prime_export(struct drm_device *drm,
|
||||
exp_info.flags = flags;
|
||||
exp_info.priv = gem;
|
||||
|
||||
- return dma_buf_export(&exp_info);
|
||||
+ return drm_gem_dmabuf_export(drm, &exp_info);
|
||||
}
|
||||
|
||||
struct drm_gem_object *tegra_gem_prime_import(struct drm_device *drm,
|
||||
diff --git a/drivers/gpu/drm/udl/udl_dmabuf.c b/drivers/gpu/drm/udl/udl_dmabuf.c
|
||||
index e2243edd1ce3..ac90ffdb5912 100644
|
||||
--- a/drivers/gpu/drm/udl/udl_dmabuf.c
|
||||
+++ b/drivers/gpu/drm/udl/udl_dmabuf.c
|
||||
@@ -209,7 +209,7 @@ struct dma_buf *udl_gem_prime_export(struct drm_device *dev,
|
||||
exp_info.flags = flags;
|
||||
exp_info.priv = obj;
|
||||
|
||||
- return dma_buf_export(&exp_info);
|
||||
+ return drm_gem_dmabuf_export(dev, &exp_info);
|
||||
}
|
||||
|
||||
static int udl_prime_create(struct drm_device *dev,
|
||||
diff --git a/include/drm/drmP.h b/include/drm/drmP.h
|
||||
index 93da65df2e7e..4aba6478d718 100644
|
||||
--- a/include/drm/drmP.h
|
||||
+++ b/include/drm/drmP.h
|
||||
@@ -1124,6 +1124,8 @@ static inline int drm_debugfs_remove_files(const struct drm_info_list *files,
|
||||
}
|
||||
#endif
|
||||
|
||||
+struct dma_buf_export_info;
|
||||
+
|
||||
extern struct dma_buf *drm_gem_prime_export(struct drm_device *dev,
|
||||
struct drm_gem_object *obj,
|
||||
int flags);
|
||||
@@ -1134,6 +1136,8 @@ extern struct drm_gem_object *drm_gem_prime_import(struct drm_device *dev,
|
||||
struct dma_buf *dma_buf);
|
||||
extern int drm_gem_prime_fd_to_handle(struct drm_device *dev,
|
||||
struct drm_file *file_priv, int prime_fd, uint32_t *handle);
|
||||
+struct dma_buf *drm_gem_dmabuf_export(struct drm_device *dev,
|
||||
+ struct dma_buf_export_info *exp_info);
|
||||
extern void drm_gem_dmabuf_release(struct dma_buf *dma_buf);
|
||||
|
||||
extern int drm_prime_sg_to_page_addr_arrays(struct sg_table *sgt, struct page **pages,
|
||||
|
||||
From f30ee0d19425a6c21a9959513e482282ba08dd6a Mon Sep 17 00:00:00 2001
|
||||
From: Chris Wilson <chris@chris-wilson.co.uk>
|
||||
Date: Wed, 7 Dec 2016 21:45:27 +0000
|
||||
Subject: [PATCH] UPSTREAM: drm: Take ownership of the dmabuf->obj when
|
||||
exporting
|
||||
|
||||
Currently the reference for the dmabuf->obj is incremented for the
|
||||
dmabuf in drm_gem_prime_handle_to_fd() (at the high level userspace
|
||||
interface), but is released in drm_gem_dmabuf_release() (the lowlevel
|
||||
handler). Improve the symmetry of the dmabuf->obj ownership by acquiring
|
||||
the reference in drm_gem_dmabuf_export(). This makes it easier to use
|
||||
the prime functions directly.
|
||||
|
||||
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
||||
[danvet: Update kerneldoc.]
|
||||
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
|
||||
Link: http://patchwork.freedesktop.org/patch/msgid/20161207214527.22533-1-chris@chris-wilson.co.uk
|
||||
(cherry picked from commit 72a93e8dd52c9feea42f1258d555e6070680a347)
|
||||
---
|
||||
drivers/gpu/drm/drm_prime.c | 12 +++++++-----
|
||||
1 file changed, 7 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/drm_prime.c b/drivers/gpu/drm/drm_prime.c
|
||||
index 94b4872255c8..dbd34fa7f71c 100644
|
||||
--- a/drivers/gpu/drm/drm_prime.c
|
||||
+++ b/drivers/gpu/drm/drm_prime.c
|
||||
@@ -289,7 +289,8 @@ static void drm_gem_unmap_dma_buf(struct dma_buf_attachment *attach,
|
||||
*
|
||||
* This wraps dma_buf_export() for use by generic GEM drivers that are using
|
||||
* drm_gem_dmabuf_release(). In addition to calling dma_buf_export(), we take
|
||||
- * a reference to the drm_device which is released by drm_gem_dmabuf_release().
|
||||
+ * a reference to the &drm_device and the exported &drm_gem_object (stored in
|
||||
+ * exp_info->priv) which is released by drm_gem_dmabuf_release().
|
||||
*
|
||||
* Returns the new dmabuf.
|
||||
*/
|
||||
@@ -299,8 +300,11 @@ struct dma_buf *drm_gem_dmabuf_export(struct drm_device *dev,
|
||||
struct dma_buf *dma_buf;
|
||||
|
||||
dma_buf = dma_buf_export(exp_info);
|
||||
- if (!IS_ERR(dma_buf))
|
||||
- drm_dev_ref(dev);
|
||||
+ if (IS_ERR(dma_buf))
|
||||
+ return dma_buf;
|
||||
+
|
||||
+ drm_dev_ref(dev);
|
||||
+ drm_gem_object_reference(exp_info->priv);
|
||||
|
||||
return dma_buf;
|
||||
}
|
||||
@@ -503,8 +507,6 @@ static struct dma_buf *export_and_register_object(struct drm_device *dev,
|
||||
*/
|
||||
obj->dma_buf = dmabuf;
|
||||
get_dma_buf(obj->dma_buf);
|
||||
- /* Grab a new ref since the callers is now used by the dma-buf */
|
||||
- drm_gem_object_reference(obj);
|
||||
|
||||
return dmabuf;
|
||||
}
|
||||
|
||||
From a1fe1ad6076ec27f60555a9393f40959cea94bff Mon Sep 17 00:00:00 2001
|
||||
From: Lucas Stach <l.stach@pengutronix.de>
|
||||
Date: Thu, 30 Nov 2017 18:34:28 +0100
|
||||
Subject: [PATCH] UPSTREAM: drm/prime: skip CPU sync in map/unmap dma_buf
|
||||
|
||||
Dma-bufs should already be device coherent, as they are only pulled in the
|
||||
CPU domain via the begin/end cpu_access calls. As we cache the mapping set
|
||||
up by dma_map_sg a CPU sync at this point will not actually guarantee proper
|
||||
coherency on non-coherent architectures, so we can as well stop pretending.
|
||||
|
||||
This is an important performance fix for architectures which need explicit
|
||||
cache synchronization and userspace doing lots of dma-buf imports.
|
||||
Improves Weston on Etnaviv performance 5x, where before this patch > 90%
|
||||
of Weston CPU time was spent synchronizing caches for buffers which are
|
||||
already device coherent.
|
||||
|
||||
Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
|
||||
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
|
||||
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
|
||||
Link: https://patchwork.freedesktop.org/patch/msgid/20171130173428.8666-1-l.stach@pengutronix.de
|
||||
(cherry picked from commit ca0e68e21aae10220eff71a297e7d794425add77)
|
||||
---
|
||||
drivers/gpu/drm/drm_prime.c | 11 ++++++++---
|
||||
1 file changed, 8 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/drm_prime.c b/drivers/gpu/drm/drm_prime.c
|
||||
index dbd34fa7f71c..133362279591 100644
|
||||
--- a/drivers/gpu/drm/drm_prime.c
|
||||
+++ b/drivers/gpu/drm/drm_prime.c
|
||||
@@ -203,9 +203,12 @@ static void drm_gem_map_detach(struct dma_buf *dma_buf,
|
||||
|
||||
sgt = prime_attach->sgt;
|
||||
if (sgt) {
|
||||
+ DEFINE_DMA_ATTRS(attrs);
|
||||
+ dma_set_attr(DMA_ATTR_SKIP_CPU_SYNC, &attrs);
|
||||
if (prime_attach->dir != DMA_NONE)
|
||||
- dma_unmap_sg(attach->dev, sgt->sgl, sgt->nents,
|
||||
- prime_attach->dir);
|
||||
+ dma_unmap_sg_attrs(attach->dev, sgt->sgl, sgt->nents,
|
||||
+ prime_attach->dir,
|
||||
+ &attrs);
|
||||
sg_free_table(sgt);
|
||||
}
|
||||
|
||||
@@ -263,7 +266,9 @@ static struct sg_table *drm_gem_map_dma_buf(struct dma_buf_attachment *attach,
|
||||
sgt = obj->dev->driver->gem_prime_get_sg_table(obj);
|
||||
|
||||
if (!IS_ERR(sgt)) {
|
||||
- if (!dma_map_sg(attach->dev, sgt->sgl, sgt->nents, dir)) {
|
||||
+ DEFINE_DMA_ATTRS(attrs);
|
||||
+ dma_set_attr(DMA_ATTR_SKIP_CPU_SYNC, &attrs);
|
||||
+ if (!dma_map_sg_attrs(attach->dev, sgt->sgl, sgt->nents, dir, &attrs)) {
|
||||
sg_free_table(sgt);
|
||||
kfree(sgt);
|
||||
sgt = ERR_PTR(-ENOMEM);
|
||||
|
||||
From bdfc956545f8292cf462a7feee96d811f5d34414 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Christian=20K=C3=B6nig?= <ckoenig.leichtzumerken@gmail.com>
|
||||
Date: Tue, 27 Feb 2018 12:49:56 +0100
|
||||
Subject: [PATCH] UPSTREAM: drm/prime: fix potential race in drm_gem_map_detach
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Unpin the GEM object only after freeing the sg table.
|
||||
|
||||
Signed-off-by: Christian König <christian.koenig@amd.com>
|
||||
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
|
||||
Acked-by: Roger He <Hongbo.He@amd.com>
|
||||
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
|
||||
Link: https://patchwork.freedesktop.org/patch/msgid/20180227115000.4105-1-christian.koenig@amd.com
|
||||
(cherry picked from commit 681066ec1d41e4b299146bada52cef846b323c04)
|
||||
---
|
||||
drivers/gpu/drm/drm_prime.c | 36 ++++++++++++++++++------------------
|
||||
1 file changed, 18 insertions(+), 18 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/drm_prime.c b/drivers/gpu/drm/drm_prime.c
|
||||
index 133362279591..95ecc69d03a0 100644
|
||||
--- a/drivers/gpu/drm/drm_prime.c
|
||||
+++ b/drivers/gpu/drm/drm_prime.c
|
||||
@@ -193,28 +193,28 @@ static void drm_gem_map_detach(struct dma_buf *dma_buf,
|
||||
struct drm_prime_attachment *prime_attach = attach->priv;
|
||||
struct drm_gem_object *obj = dma_buf->priv;
|
||||
struct drm_device *dev = obj->dev;
|
||||
- struct sg_table *sgt;
|
||||
-
|
||||
- if (dev->driver->gem_prime_unpin)
|
||||
- dev->driver->gem_prime_unpin(obj);
|
||||
|
||||
- if (!prime_attach)
|
||||
- return;
|
||||
+ if (prime_attach) {
|
||||
+ struct sg_table *sgt = prime_attach->sgt;
|
||||
+
|
||||
+ if (sgt) {
|
||||
+ DEFINE_DMA_ATTRS(attrs);
|
||||
+ dma_set_attr(DMA_ATTR_SKIP_CPU_SYNC, &attrs);
|
||||
+ if (prime_attach->dir != DMA_NONE)
|
||||
+ dma_unmap_sg_attrs(attach->dev, sgt->sgl,
|
||||
+ sgt->nents,
|
||||
+ prime_attach->dir,
|
||||
+ &attrs);
|
||||
+ sg_free_table(sgt);
|
||||
+ }
|
||||
|
||||
- sgt = prime_attach->sgt;
|
||||
- if (sgt) {
|
||||
- DEFINE_DMA_ATTRS(attrs);
|
||||
- dma_set_attr(DMA_ATTR_SKIP_CPU_SYNC, &attrs);
|
||||
- if (prime_attach->dir != DMA_NONE)
|
||||
- dma_unmap_sg_attrs(attach->dev, sgt->sgl, sgt->nents,
|
||||
- prime_attach->dir,
|
||||
- &attrs);
|
||||
- sg_free_table(sgt);
|
||||
+ kfree(sgt);
|
||||
+ kfree(prime_attach);
|
||||
+ attach->priv = NULL;
|
||||
}
|
||||
|
||||
- kfree(sgt);
|
||||
- kfree(prime_attach);
|
||||
- attach->priv = NULL;
|
||||
+ if (dev->driver->gem_prime_unpin)
|
||||
+ dev->driver->gem_prime_unpin(obj);
|
||||
}
|
||||
|
||||
void drm_prime_remove_buf_handle_locked(struct drm_prime_file_private *prime_fpriv,
|
||||
|
||||
From 54f13f6370c654d59a9a5938e5953888a65c1980 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Christian=20K=C3=B6nig?= <ckoenig.leichtzumerken@gmail.com>
|
||||
Date: Tue, 27 Feb 2018 12:49:57 +0100
|
||||
Subject: [PATCH] UPSTREAM: drm/prime: make the pages array optional for
|
||||
drm_prime_sg_to_page_addr_arrays
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Most of the time we only need the dma addresses.
|
||||
|
||||
Signed-off-by: Christian König <christian.koenig@amd.com>
|
||||
Reviewed-by: Roger He <Hongbo.He@amd.com>
|
||||
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
|
||||
Link: https://patchwork.freedesktop.org/patch/msgid/20180227115000.4105-2-christian.koenig@amd.com
|
||||
Link: https://patchwork.freedesktop.org/patch/msgid/20180227115000.4105-3-christian.koenig@amd.com
|
||||
Link: https://patchwork.freedesktop.org/patch/msgid/20180227115000.4105-4-christian.koenig@amd.com
|
||||
Link: https://patchwork.freedesktop.org/patch/msgid/20180227115000.4105-5-christian.koenig@amd.com
|
||||
Link: https://patchwork.freedesktop.org/patch/msgid/BN6PR12MB18262C0DE9B5F07B9A42EAE7F2C60@BN6PR12MB1826.namprd12.prod.outlook.com
|
||||
(cherry picked from commit 186ca446aea19e49d2e1433dd170c6e1c211a52a)
|
||||
---
|
||||
drivers/gpu/drm/drm_prime.c | 20 ++++++++++----------
|
||||
1 file changed, 10 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/drm_prime.c b/drivers/gpu/drm/drm_prime.c
|
||||
index 95ecc69d03a0..7ea65c4105c1 100644
|
||||
--- a/drivers/gpu/drm/drm_prime.c
|
||||
+++ b/drivers/gpu/drm/drm_prime.c
|
||||
@@ -827,40 +827,40 @@ EXPORT_SYMBOL(drm_prime_pages_to_sg);
|
||||
/**
|
||||
* drm_prime_sg_to_page_addr_arrays - convert an sg table into a page array
|
||||
* @sgt: scatter-gather table to convert
|
||||
- * @pages: array of page pointers to store the page array in
|
||||
+ * @pages: optional array of page pointers to store the page array in
|
||||
* @addrs: optional array to store the dma bus address of each page
|
||||
- * @max_pages: size of both the passed-in arrays
|
||||
+ * @max_entries: size of both the passed-in arrays
|
||||
*
|
||||
* Exports an sg table into an array of pages and addresses. This is currently
|
||||
* required by the TTM driver in order to do correct fault handling.
|
||||
*/
|
||||
int drm_prime_sg_to_page_addr_arrays(struct sg_table *sgt, struct page **pages,
|
||||
- dma_addr_t *addrs, int max_pages)
|
||||
+ dma_addr_t *addrs, int max_entries)
|
||||
{
|
||||
unsigned count;
|
||||
struct scatterlist *sg;
|
||||
struct page *page;
|
||||
- u32 len;
|
||||
- int pg_index;
|
||||
+ u32 len, index;
|
||||
dma_addr_t addr;
|
||||
|
||||
- pg_index = 0;
|
||||
+ index = 0;
|
||||
for_each_sg(sgt->sgl, sg, sgt->nents, count) {
|
||||
len = sg->length;
|
||||
page = sg_page(sg);
|
||||
addr = sg_dma_address(sg);
|
||||
|
||||
while (len > 0) {
|
||||
- if (WARN_ON(pg_index >= max_pages))
|
||||
+ if (WARN_ON(index >= max_entries))
|
||||
return -1;
|
||||
- pages[pg_index] = page;
|
||||
+ if (pages)
|
||||
+ pages[index] = page;
|
||||
if (addrs)
|
||||
- addrs[pg_index] = addr;
|
||||
+ addrs[index] = addr;
|
||||
|
||||
page++;
|
||||
addr += PAGE_SIZE;
|
||||
len -= PAGE_SIZE;
|
||||
- pg_index++;
|
||||
+ index++;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
|
||||
From c5e39a7e46511dffadabea97e3d74310561d1ba0 Mon Sep 17 00:00:00 2001
|
||||
From: Chris Wilson <chris@chris-wilson.co.uk>
|
||||
Date: Sat, 19 Aug 2017 13:05:58 +0100
|
||||
Subject: [PATCH] UPSTREAM: drm: Release driver tracking before making the
|
||||
object available again
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
This is the same bug as we fixed in commit f6cd7daecff5 ("drm: Release
|
||||
driver references to handle before making it available again"), but now
|
||||
the exposure is via the PRIME lookup tables. If we remove the
|
||||
object/handle from the PRIME lut, then a new request for the same
|
||||
object/fd will generate a new handle, thus for a short window that
|
||||
object is known to userspace by two different handles. Fix this by
|
||||
releasing the driver tracking before PRIME.
|
||||
|
||||
Fixes: 0ff926c7d4f0 ("drm/prime: add exported buffers to current fprivs
|
||||
imported buffer list (v2)")
|
||||
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
||||
Cc: David Airlie <airlied@linux.ie>
|
||||
Cc: Daniel Vetter <daniel.vetter@intel.com>
|
||||
Cc: Rob Clark <robdclark@gmail.com>
|
||||
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
|
||||
Cc: Thierry Reding <treding@nvidia.com>
|
||||
Cc: stable@vger.kernel.org
|
||||
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
|
||||
Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
|
||||
Link: https://patchwork.freedesktop.org/patch/msgid/20170819120558.6465-1-chris@chris-wilson.co.uk
|
||||
(cherry picked from commit d0a133f7f5bc3583e460ba6bb54474a50ada5201)
|
||||
---
|
||||
drivers/gpu/drm/drm_gem.c | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/drm_gem.c b/drivers/gpu/drm/drm_gem.c
|
||||
index d7f39a03c2c9..966ea63581b1 100644
|
||||
--- a/drivers/gpu/drm/drm_gem.c
|
||||
+++ b/drivers/gpu/drm/drm_gem.c
|
||||
@@ -255,13 +255,13 @@ drm_gem_object_release_handle(int id, void *ptr, void *data)
|
||||
struct drm_gem_object *obj = ptr;
|
||||
struct drm_device *dev = obj->dev;
|
||||
|
||||
+ if (dev->driver->gem_close_object)
|
||||
+ dev->driver->gem_close_object(obj, file_priv);
|
||||
+
|
||||
if (drm_core_check_feature(dev, DRIVER_PRIME))
|
||||
drm_gem_remove_prime_handles(obj, file_priv);
|
||||
drm_vma_node_revoke(&obj->vma_node, file_priv->filp);
|
||||
|
||||
- if (dev->driver->gem_close_object)
|
||||
- dev->driver->gem_close_object(obj, file_priv);
|
||||
-
|
||||
drm_gem_object_handle_unreference_unlocked(obj);
|
||||
|
||||
return 0;
|
||||
|
||||
From 42f26aa9c8d429886b0af174b740f72741e571e2 Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Karlman <jonas@kwiboo.se>
|
||||
Date: Sat, 17 Feb 2018 05:30:36 +0100
|
||||
Subject: [PATCH] vcodec: skip reduce freq
|
||||
|
||||
---
|
||||
drivers/video/rockchip/vcodec/vcodec_service.c | 4 +---
|
||||
1 file changed, 1 insertion(+), 3 deletions(-)
|
||||
|
||||
diff --git a/drivers/video/rockchip/vcodec/vcodec_service.c b/drivers/video/rockchip/vcodec/vcodec_service.c
|
||||
index 0f177d9ab4c2..903ea8554649 100644
|
||||
--- a/drivers/video/rockchip/vcodec/vcodec_service.c
|
||||
+++ b/drivers/video/rockchip/vcodec/vcodec_service.c
|
||||
@@ -1602,9 +1602,6 @@ static void try_set_reg(struct vpu_subdev_data *data)
|
||||
reg_from_wait_to_run(pservice, reg);
|
||||
reg_copy_to_hw(reg->data, reg);
|
||||
}
|
||||
- } else {
|
||||
- if (pservice->hw_ops->reduce_freq)
|
||||
- pservice->hw_ops->reduce_freq(pservice);
|
||||
}
|
||||
|
||||
mutex_unlock(&pservice->shutdown_lock);
|
||||
@@ -2353,6 +2350,7 @@ static void vcodec_set_freq_rk3328(struct vpu_service_info *pservice,
|
||||
if (curr == reg->freq)
|
||||
return;
|
||||
|
||||
+ atomic_set(&pservice->freq_status, reg->freq);
|
||||
if (pservice->dev_id == VCODEC_DEVICE_ID_RKVDEC) {
|
||||
if (reg->reg[1] & 0x00800000) {
|
||||
if (rkv_dec_get_fmt(reg->reg) == FMT_H264D)
|
@ -20,7 +20,6 @@ devices = {
|
||||
'rockbox' : { 'dtb' : 'rk3328-rockbox.dtb', 'config' : 'evb-rk3328_defconfig' },
|
||||
},
|
||||
'RK3399' : {
|
||||
'odroidn1' : { 'dtb' : 'rk3399-odroidn1.dtb', 'config' : 'odroidn1_config' },
|
||||
'rock960' : { 'dtb' : 'rk3399-rock960.dtb', 'config' : 'evb-rk3399_config' },
|
||||
'rockpro64' : { 'dtb' : 'rk3399-rockpro64.dtb', 'config' : 'evb-rk3399_config' },
|
||||
'sapphire' : { 'dtb' : 'rk3399-sapphire.dtb', 'config' : 'evb-rk3399_config' },
|
||||
|
Loading…
x
Reference in New Issue
Block a user