mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-24 11:16:51 +00:00
Merge pull request #3559 from MilhouseVH/le92_linux_5.1
Backports: kernel 5.1, Allwinner, u-boot, mali, dvb-latest
This commit is contained in:
commit
ef00cbec7a
16
Makefile
16
Makefile
@ -17,22 +17,6 @@ noobs:
|
||||
amlpkg:
|
||||
./scripts/image amlpkg
|
||||
|
||||
# legacy sequential build targets
|
||||
system-st:
|
||||
./scripts/image_st
|
||||
|
||||
release-st:
|
||||
./scripts/image_st release
|
||||
|
||||
image-st:
|
||||
./scripts/image_st mkimage
|
||||
|
||||
noobs-st:
|
||||
./scripts/image_st noobs
|
||||
|
||||
amlpkg-st:
|
||||
./scripts/image_st amlpkg
|
||||
|
||||
clean:
|
||||
rm -rf $(BUILD_DIRS)/* $(BUILD_DIRS)/.stamps
|
||||
|
||||
|
@ -104,10 +104,6 @@ show_config() {
|
||||
config_message="$config_message\n - OEM Support:\t\t\t\t $OEM_SUPPORT"
|
||||
config_message="$config_message\n - Default ROOT Password:\t\t $ROOT_PASSWORD"
|
||||
config_message="$config_message\n - Bootloader:\t\t\t\t $BOOTLOADER"
|
||||
if [ "$BOOTLOADER" = "u-boot" ]; then
|
||||
config_message="$config_message\n - U-Boot configuration:\t\t $UBOOT_CONFIG"
|
||||
config_message="$config_message\n - U-Boot config file:\t\t $UBOOT_CONFIGFILE"
|
||||
fi
|
||||
config_message="$config_message\n - UDevil support:\t\t\t $UDEVIL"
|
||||
config_message="$config_message\n - Installer support:\t\t\t $INSTALLER_SUPPORT"
|
||||
for config_package in $ADDITIONAL_PACKAGES; do
|
||||
|
@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="mariadb-connector-c"
|
||||
PKG_VERSION="3.1.0"
|
||||
PKG_SHA256="feb82b124fd492264a07ca9618bf68d65487ec4a39c8375015f6b0f58c0ab17c"
|
||||
PKG_VERSION="3.1.1"
|
||||
PKG_SHA256="63a0ecfa3c87ba0361aef3b2c849abe280f7371030e84f41ce0dc4466db85637"
|
||||
PKG_LICENSE="LGPL"
|
||||
PKG_SITE="https://mariadb.org/"
|
||||
PKG_URL="https://github.com/MariaDB/mariadb-connector-c/archive/v$PKG_VERSION.tar.gz"
|
||||
|
@ -66,10 +66,12 @@ make_target() {
|
||||
make configure-host
|
||||
make -C libiberty
|
||||
make -C bfd
|
||||
make -C opcodes
|
||||
}
|
||||
|
||||
makeinstall_target() {
|
||||
mkdir -p $SYSROOT_PREFIX/usr/lib
|
||||
cp libiberty/libiberty.a $SYSROOT_PREFIX/usr/lib
|
||||
make DESTDIR="$SYSROOT_PREFIX" -C bfd install
|
||||
make DESTDIR="$SYSROOT_PREFIX" -C opcodes install
|
||||
}
|
||||
|
@ -2,26 +2,42 @@
|
||||
# Copyright (C) 2019-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="libmali"
|
||||
PKG_VERSION="ad56ed30985471c0950a654cc9db1e86310650d5"
|
||||
PKG_SHA256="72438ea73cf6c2e8e770545872386b66ccad200c568261e5304845547099c9ed"
|
||||
PKG_VERSION="4cbf211cfd9b07854aab4978e50b1151052c6d4c"
|
||||
PKG_SHA256="d3c5dd43ee0830feada4a86d32b9c794cddab29a863dfd1dddb3954f380086c5"
|
||||
PKG_ARCH="arm aarch64"
|
||||
PKG_LICENSE="nonfree"
|
||||
PKG_SITE="https://github.com/LibreELEC/libmali"
|
||||
PKG_URL="https://github.com/LibreELEC/libmali/archive/$PKG_VERSION.tar.gz"
|
||||
PKG_LONGDESC="OpenGL ES user-space binary for the ARM Mali GPU family"
|
||||
PKG_STAMP="$MALI_FAMILY"
|
||||
|
||||
PKG_DEPENDS_TARGET="libdrm"
|
||||
|
||||
if [ "$MALI_FAMILY" = "t620" -o "$MALI_FAMILY" = "t720" -o "$MALI_FAMILY" = "g52" ]; then
|
||||
if listcontains "$MALI_FAMILY" "(t620|t720)"; then
|
||||
PKG_DEPENDS_TARGET+=" wayland"
|
||||
fi
|
||||
|
||||
PKG_CMAKE_OPTS_TARGET="-DMALI_VARIANT=$MALI_FAMILY"
|
||||
|
||||
if [ -n "$MALI_REVISION" ]; then
|
||||
PKG_CMAKE_OPTS_TARGET+=" -DMALI_REVISION=$MALI_REVISION"
|
||||
if [ "$LINUX" != "rockchip-4.4" ]; then
|
||||
listcontains "$MALI_FAMILY" "4[0-9]+" && PKG_DEPENDS_TARGET+=" mali-utgard"
|
||||
listcontains "$MALI_FAMILY" "t[0-9]+" && PKG_DEPENDS_TARGET+=" mali-midgard"
|
||||
listcontains "$MALI_FAMILY" "g[0-9]+" && PKG_DEPENDS_TARGET+=" mali-bifrost"
|
||||
fi
|
||||
|
||||
PKG_CMAKE_OPTS_TARGET="-DMALI_VARIANT=${MALI_FAMILY// /;}"
|
||||
|
||||
if [ "$TARGET_ARCH" = "aarch64" ]; then
|
||||
PKG_CMAKE_OPTS_TARGET+=" -DMALI_ARCH=aarch64-linux-gnu"
|
||||
fi
|
||||
|
||||
post_makeinstall_target() {
|
||||
mkdir -p $INSTALL/usr/bin
|
||||
cp -v $PKG_DIR/scripts/libmali-setup $INSTALL/usr/bin
|
||||
|
||||
if [ $(ls -1q $INSTALL/usr/lib/libmali-*.so | wc -l) -gt 1 ]; then
|
||||
ln -sfv /var/lib/libmali/libmali.so $INSTALL/usr/lib/libmali.so
|
||||
fi
|
||||
}
|
||||
|
||||
post_install() {
|
||||
enable_service libmali-setup.service
|
||||
}
|
||||
|
44
packages/graphics/libmali/scripts/libmali-setup
Executable file
44
packages/graphics/libmali/scripts/libmali-setup
Executable file
@ -0,0 +1,44 @@
|
||||
#!/bin/sh
|
||||
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
# Copyright (C) 2019-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
GPUINFO=/sys/kernel/debug/mali/version
|
||||
[ ! -f "$GPUINFO" ] && GPUINFO=$(find /sys/devices/platform -name gpuinfo)
|
||||
|
||||
echo "GPUINFO: $GPUINFO"
|
||||
[ ! -f "$GPUINFO" ] && exit
|
||||
|
||||
GPU=$(cat $GPUINFO)
|
||||
echo "GPU: $GPU"
|
||||
|
||||
case $GPU in
|
||||
Mali-400*) LIB="libmali-utgard-400-*.so" ;;
|
||||
Mali-450*) LIB="libmali-utgard-450-*.so" ;;
|
||||
Mali-T60x*) LIB="libmali-midgard-t60x-*.so" ;;
|
||||
Mali-T62x*) LIB="libmali-midgard-t620-*.so" ;;
|
||||
Mali-T72x*) LIB="libmali-midgard-t720-*.so" ;;
|
||||
Mali-T76x*r0p0*) LIB="libmali-midgard-t76x-*-r0p0-*.so" ;;
|
||||
Mali-T76x*r1p0*) LIB="libmali-midgard-t76x-*-r1p0-*.so" ;;
|
||||
Mali-T82x*) LIB="libmali-midgard-t82x-*.so" ;;
|
||||
Mali-T83x*) LIB="libmali-midgard-t83x-*.so" ;;
|
||||
Mali-T86x*) LIB="libmali-midgard-t86x-*.so" ;;
|
||||
Mali-T88x*) LIB="libmali-midgard-t88x-*.so" ;;
|
||||
Mali-G31*) LIB="libmali-bifrost-g31-*.so" ;;
|
||||
Mali-G51*) LIB="libmali-bifrost-g51-*.so" ;;
|
||||
Mali-G52*) LIB="libmali-bifrost-g52-*.so" ;;
|
||||
Mali-G71*) LIB="libmali-bifrost-g71-*.so" ;;
|
||||
Mali-G72*) LIB="libmali-bifrost-g72-*.so" ;;
|
||||
Mali-G76*) LIB="libmali-bifrost-g76-*.so" ;;
|
||||
esac
|
||||
|
||||
echo "LIB: $LIB"
|
||||
[ -z "$LIB" ] && exit
|
||||
|
||||
LIBMALI=$(find /usr/lib -name $LIB)
|
||||
|
||||
echo "LIBMALI: $LIBMALI"
|
||||
[ ! -f "$LIBMALI" ] && exit
|
||||
|
||||
mkdir -p /var/lib/libmali
|
||||
ln -sf $LIBMALI /var/lib/libmali/libmali.so
|
12
packages/graphics/libmali/system.d/libmali-setup.service
Normal file
12
packages/graphics/libmali/system.d/libmali-setup.service
Normal file
@ -0,0 +1,12 @@
|
||||
[Unit]
|
||||
Description=Setup symlink for ARM Mali library
|
||||
Before=graphical.target
|
||||
After=multi-user.target
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
RemainAfterExit=yes
|
||||
ExecStart=/usr/bin/libmali-setup
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="crazycat"
|
||||
PKG_VERSION="c59ee3624b7f6bf5bdaeec7c73c69ef4938d3952"
|
||||
PKG_SHA256="00b9fade221327e1aed8f06ef0477f2761b57cc5fe6310c4536e361b17a595d1"
|
||||
PKG_VERSION="532599d255411a24f93b585a92b1b0c49e2012f7"
|
||||
PKG_SHA256="0e3addc3562057a77edefdde0052a78aec145c4dd5b737b53dd25ce389b95093"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://bitbucket.org/CrazyCat/media_build"
|
||||
PKG_URL="https://bitbucket.org/CrazyCat/media_build/get/$PKG_VERSION.tar.gz"
|
||||
|
@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="media_tree"
|
||||
PKG_VERSION="2019-01-10-15d90a6ae98e"
|
||||
PKG_SHA256="cf170bfc0e78959c6b289db6f4cf7ec7b400dd4704f45909e1535a935702e8bc"
|
||||
PKG_VERSION="2017-08-20-3b6471c7becd"
|
||||
PKG_SHA256="7fa8d0be68991d1bc6a244888cf2308d2f6152748c1d417efa0784d101ba262b"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://git.linuxtv.org/media_tree.git"
|
||||
PKG_URL="http://linuxtv.org/downloads/drivers/linux-media-${PKG_VERSION}.tar.bz2"
|
||||
|
@ -2,7 +2,7 @@ Combined patches from https://github.com/b-rad-NDi/Ubuntu-media-tree-kernel-buil
|
||||
to support all kind of Hauppauge DVB cards.
|
||||
|
||||
diff --git a/drivers/media/dvb-frontends/lgdt3306a.c b/drivers/media/dvb-frontends/lgdt3306a.c
|
||||
index 0e1f5da..409db8e 100644
|
||||
index 99c6289..ceaf617 100644
|
||||
--- a/drivers/media/dvb-frontends/lgdt3306a.c
|
||||
+++ b/drivers/media/dvb-frontends/lgdt3306a.c
|
||||
@@ -855,6 +855,7 @@ static int lgdt3306a_fe_sleep(struct dvb_frontend *fe)
|
||||
@ -48,7 +48,7 @@ index 0e1f5da..409db8e 100644
|
||||
return ret;
|
||||
}
|
||||
diff --git a/drivers/media/dvb-frontends/si2168.c b/drivers/media/dvb-frontends/si2168.c
|
||||
index 324493e..4d43424 100644
|
||||
index 17301c6..9b021ac 100644
|
||||
--- a/drivers/media/dvb-frontends/si2168.c
|
||||
+++ b/drivers/media/dvb-frontends/si2168.c
|
||||
@@ -18,6 +18,10 @@
|
||||
@ -420,7 +420,7 @@ index 324493e..4d43424 100644
|
||||
cmd.wlen = 6;
|
||||
cmd.rlen = 4;
|
||||
ret = si2168_cmd_execute(client, &cmd);
|
||||
@@ -714,6 +960,11 @@ static const struct dvb_frontend_ops si2168_ops = {
|
||||
@@ -717,6 +963,11 @@ static const struct dvb_frontend_ops si2168_ops = {
|
||||
.set_frontend = si2168_set_frontend,
|
||||
|
||||
.read_status = si2168_read_status,
|
||||
@ -433,40 +433,30 @@ index 324493e..4d43424 100644
|
||||
|
||||
static int si2168_probe(struct i2c_client *client,
|
||||
diff --git a/drivers/media/i2c/cx25840/cx25840-core.c b/drivers/media/i2c/cx25840/cx25840-core.c
|
||||
index b168bf3..1f06119 100644
|
||||
index f071a94..14ce009 100644
|
||||
--- a/drivers/media/i2c/cx25840/cx25840-core.c
|
||||
+++ b/drivers/media/i2c/cx25840/cx25840-core.c
|
||||
@@ -684,14 +684,14 @@ static void cx23885_initialize(struct i2c_client *client)
|
||||
*/
|
||||
cx25840_write4(client, 0x404, 0x0010253e);
|
||||
|
||||
- /* CC on - Undocumented Register */
|
||||
+ /* CC on - VBI_LINE_CTRL3, FLD_VBI_MD_LINE12 */
|
||||
cx25840_write(client, state->vbi_regs_offset + 0x42f, 0x66);
|
||||
|
||||
/* HVR-1250 / HVR1850 DIF related */
|
||||
/* Power everything up */
|
||||
cx25840_write4(client, 0x130, 0x0);
|
||||
|
||||
- /* Undocumented */
|
||||
+ /* SRC_COMB_CFG */
|
||||
if (is_cx23888(state))
|
||||
cx25840_write4(client, 0x454, 0x6628021F);
|
||||
else
|
||||
@@ -1127,16 +1127,25 @@ static int set_input(struct i2c_client *client, enum cx25840_video_input vid_inp
|
||||
@@ -1495,23 +1495,25 @@ static int set_input(struct i2c_client *client,
|
||||
cx25840_write4(client, 0x410, 0xffff0dbf);
|
||||
cx25840_write4(client, 0x414, 0x00137d03);
|
||||
|
||||
- cx25840_write4(client, state->vbi_regs_offset + 0x42c, 0x42600000);
|
||||
- cx25840_write4(client, state->vbi_regs_offset + 0x430, 0x0000039b);
|
||||
- cx25840_write4(client, state->vbi_regs_offset + 0x438, 0x00000000);
|
||||
-
|
||||
- cx25840_write4(client, state->vbi_regs_offset + 0x440, 0xF8E3E824);
|
||||
- cx25840_write4(client, state->vbi_regs_offset + 0x444, 0x401040dc);
|
||||
- cx25840_write4(client, state->vbi_regs_offset + 0x448, 0xcd3f02a0);
|
||||
- cx25840_write4(client, state->vbi_regs_offset + 0x44c, 0x161f1000);
|
||||
- cx25840_write4(client, state->vbi_regs_offset + 0x450, 0x00000802);
|
||||
- cx25840_write4(client, state->vbi_regs_offset + 0x42c,
|
||||
- 0x42600000);
|
||||
- cx25840_write4(client, state->vbi_regs_offset + 0x430,
|
||||
- 0x0000039b);
|
||||
- cx25840_write4(client, state->vbi_regs_offset + 0x438,
|
||||
- 0x00000000);
|
||||
-
|
||||
- cx25840_write4(client, state->vbi_regs_offset + 0x440,
|
||||
- 0xF8E3E824);
|
||||
- cx25840_write4(client, state->vbi_regs_offset + 0x444,
|
||||
- 0x401040dc);
|
||||
- cx25840_write4(client, state->vbi_regs_offset + 0x448,
|
||||
- 0xcd3f02a0);
|
||||
- cx25840_write4(client, state->vbi_regs_offset + 0x44c,
|
||||
- 0x161f1000);
|
||||
- cx25840_write4(client, state->vbi_regs_offset + 0x450,
|
||||
- 0x00000802);
|
||||
+ /* These are not VBI controls */
|
||||
+ if (is_cx23888(state)) {
|
||||
+ /* 888 MISC_TIM_CTRL */
|
||||
@ -486,17 +476,9 @@ index b168bf3..1f06119 100644
|
||||
+ /* 888 HTL_CTRL */
|
||||
+ cx25840_write4(client, 0x450, 0x00000802);
|
||||
+ }
|
||||
|
||||
cx25840_write4(client, 0x91c, 0x01000000);
|
||||
cx25840_write4(client, 0x8e0, 0x03063870);
|
||||
cx25840_write4(client, 0x8d4, 0x7FFF0024);
|
||||
@@ -1743,6 +1752,7 @@ static int cx25840_s_stream(struct v4l2_subdev *sd, int enable)
|
||||
if (is_cx2388x(state) || is_cx231xx(state))
|
||||
return 0;
|
||||
|
||||
+ /* PIN_CTRL1 */
|
||||
if (enable) {
|
||||
v = cx25840_read(client, 0x115) | 0x0c;
|
||||
cx25840_write(client, 0x115, v);
|
||||
diff --git a/drivers/media/pci/cx23885/cx23885-cards.c b/drivers/media/pci/cx23885/cx23885-cards.c
|
||||
index ed3210d..9598b99 100644
|
||||
--- a/drivers/media/pci/cx23885/cx23885-cards.c
|
||||
@ -589,10 +571,10 @@ index ed3210d..9598b99 100644
|
||||
.vmux = CX25840_VIN7_CH3 |
|
||||
CX25840_VIN4_CH2 |
|
||||
diff --git a/drivers/media/pci/cx23885/cx23885-dvb.c b/drivers/media/pci/cx23885/cx23885-dvb.c
|
||||
index 0d0929c..0366c4d 100644
|
||||
index e2e63f0..aea7738 100644
|
||||
--- a/drivers/media/pci/cx23885/cx23885-dvb.c
|
||||
+++ b/drivers/media/pci/cx23885/cx23885-dvb.c
|
||||
@@ -2382,6 +2382,16 @@ static int dvb_register(struct cx23885_tsport *port)
|
||||
@@ -2383,6 +2383,16 @@ static int dvb_register(struct cx23885_tsport *port)
|
||||
goto frontend_detach;
|
||||
}
|
||||
port->i2c_client_tuner = client_tuner;
|
||||
@ -609,7 +591,7 @@ index 0d0929c..0366c4d 100644
|
||||
break;
|
||||
|
||||
/* port c - terrestrial/cable */
|
||||
@@ -2471,6 +2481,16 @@ static int dvb_register(struct cx23885_tsport *port)
|
||||
@@ -2472,6 +2482,16 @@ static int dvb_register(struct cx23885_tsport *port)
|
||||
goto frontend_detach;
|
||||
}
|
||||
port->i2c_client_tuner = client_tuner;
|
||||
@ -626,7 +608,7 @@ index 0d0929c..0366c4d 100644
|
||||
break;
|
||||
|
||||
/* port c - terrestrial/cable */
|
||||
@@ -2542,6 +2562,11 @@ static int dvb_register(struct cx23885_tsport *port)
|
||||
@@ -2543,6 +2563,11 @@ static int dvb_register(struct cx23885_tsport *port)
|
||||
goto frontend_detach;
|
||||
}
|
||||
port->i2c_client_tuner = client_tuner;
|
||||
@ -768,7 +750,7 @@ index 168178c..6d6e7fb 100644
|
||||
break;
|
||||
default:
|
||||
diff --git a/drivers/media/tuners/si2157.c b/drivers/media/tuners/si2157.c
|
||||
index d389f1f..b93f333 100644
|
||||
index d389f1f..2563ab4 100644
|
||||
--- a/drivers/media/tuners/si2157.c
|
||||
+++ b/drivers/media/tuners/si2157.c
|
||||
@@ -1,5 +1,5 @@
|
||||
@ -833,7 +815,25 @@ index d389f1f..b93f333 100644
|
||||
/* power up */
|
||||
if (dev->chiptype == SI2157_CHIPTYPE_SI2146) {
|
||||
memcpy(cmd.args, "\xc0\x05\x01\x00\x00\x0b\x00\x00\x01", 9);
|
||||
@@ -230,6 +235,45 @@ skip_fw_download:
|
||||
@@ -138,6 +143,7 @@ static int si2157_init(struct dvb_frontend *fe)
|
||||
chip_id = cmd.args[1] << 24 | cmd.args[2] << 16 | cmd.args[3] << 8 |
|
||||
cmd.args[4] << 0;
|
||||
|
||||
+ #define SI2177_A30 ('A' << 24 | 77 << 16 | '3' << 8 | '0' << 0)
|
||||
#define SI2158_A20 ('A' << 24 | 58 << 16 | '2' << 8 | '0' << 0)
|
||||
#define SI2148_A20 ('A' << 24 | 48 << 16 | '2' << 8 | '0' << 0)
|
||||
#define SI2157_A30 ('A' << 24 | 57 << 16 | '3' << 8 | '0' << 0)
|
||||
@@ -153,6 +159,9 @@ static int si2157_init(struct dvb_frontend *fe)
|
||||
case SI2141_A10:
|
||||
fw_name = SI2141_A10_FIRMWARE;
|
||||
break;
|
||||
+ case SI2177_A30:
|
||||
+ fw_name = SI2157_A30_FIRMWARE;
|
||||
+ break;
|
||||
case SI2157_A30:
|
||||
case SI2147_A30:
|
||||
case SI2146_A10:
|
||||
@@ -230,6 +239,45 @@ skip_fw_download:
|
||||
|
||||
dev_info(&client->dev, "firmware version: %c.%c.%d\n",
|
||||
cmd.args[6], cmd.args[7], cmd.args[8]);
|
||||
@ -879,7 +879,7 @@ index d389f1f..b93f333 100644
|
||||
warm:
|
||||
/* init statistics in order signal app which are supported */
|
||||
c->strength.len = 1;
|
||||
@@ -274,6 +318,84 @@ err:
|
||||
@@ -274,6 +322,84 @@ err:
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -964,7 +964,7 @@ index d389f1f..b93f333 100644
|
||||
static int si2157_set_params(struct dvb_frontend *fe)
|
||||
{
|
||||
struct i2c_client *client = fe->tuner_priv;
|
||||
@@ -344,7 +466,7 @@ static int si2157_set_params(struct dvb_frontend *fe)
|
||||
@@ -344,7 +470,7 @@ static int si2157_set_params(struct dvb_frontend *fe)
|
||||
if (ret)
|
||||
goto err;
|
||||
|
||||
@ -973,7 +973,7 @@ index d389f1f..b93f333 100644
|
||||
if (if_frequency != dev->if_frequency) {
|
||||
memcpy(cmd.args, "\x14\x00\x06\x07", 4);
|
||||
cmd.args[4] = (if_frequency / 1000) & 0xff;
|
||||
@@ -358,7 +480,7 @@ static int si2157_set_params(struct dvb_frontend *fe)
|
||||
@@ -358,7 +484,7 @@ static int si2157_set_params(struct dvb_frontend *fe)
|
||||
dev->if_frequency = if_frequency;
|
||||
}
|
||||
|
||||
@ -982,7 +982,7 @@ index d389f1f..b93f333 100644
|
||||
memcpy(cmd.args, "\x41\x00\x00\x00\x00\x00\x00\x00", 8);
|
||||
cmd.args[4] = (c->frequency >> 0) & 0xff;
|
||||
cmd.args[5] = (c->frequency >> 8) & 0xff;
|
||||
@@ -370,24 +492,298 @@ static int si2157_set_params(struct dvb_frontend *fe)
|
||||
@@ -370,24 +496,298 @@ static int si2157_set_params(struct dvb_frontend *fe)
|
||||
if (ret)
|
||||
goto err;
|
||||
|
||||
@ -991,15 +991,15 @@ index d389f1f..b93f333 100644
|
||||
+
|
||||
+ si2157_tune_wait(client, 1); /* wait to complete, ignore any errors */
|
||||
+
|
||||
+ return 0;
|
||||
+err:
|
||||
return 0;
|
||||
err:
|
||||
+ dev->bandwidth = 0;
|
||||
+ dev->frequency = 0;
|
||||
+ dev->if_frequency = 0;
|
||||
+ dev_dbg(&client->dev, "failed=%d\n", ret);
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
dev_dbg(&client->dev, "failed=%d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
+static int si2157_set_analog_params(struct dvb_frontend *fe,
|
||||
+ struct analog_parameters *params)
|
||||
+{
|
||||
@ -1202,15 +1202,15 @@ index d389f1f..b93f333 100644
|
||||
+
|
||||
+ si2157_tune_wait(client, 0); /* wait to complete, ignore any errors */
|
||||
+
|
||||
return 0;
|
||||
err:
|
||||
+ return 0;
|
||||
+err:
|
||||
+ dev->bandwidth = 0;
|
||||
+ dev->frequency = 0;
|
||||
+ dev->if_frequency = 0;
|
||||
dev_dbg(&client->dev, "failed=%d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
+ dev_dbg(&client->dev, "failed=%d\n", ret);
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+static int si2157_get_frequency(struct dvb_frontend *fe, u32 *frequency)
|
||||
+{
|
||||
+ struct i2c_client *client = fe->tuner_priv;
|
||||
@ -1283,7 +1283,7 @@ index d389f1f..b93f333 100644
|
||||
.frequency_min_hz = 42 * MHz,
|
||||
.frequency_max_hz = 870 * MHz,
|
||||
},
|
||||
@@ -395,7 +791,12 @@ static const struct dvb_tuner_ops si2157_ops = {
|
||||
@@ -395,7 +795,12 @@ static const struct dvb_tuner_ops si2157_ops = {
|
||||
.init = si2157_init,
|
||||
.sleep = si2157_sleep,
|
||||
.set_params = si2157_set_params,
|
||||
@ -1297,7 +1297,7 @@ index d389f1f..b93f333 100644
|
||||
};
|
||||
|
||||
static void si2157_stat_work(struct work_struct *work)
|
||||
@@ -455,7 +856,7 @@ static int si2157_probe(struct i2c_client *client,
|
||||
@@ -455,7 +860,7 @@ static int si2157_probe(struct i2c_client *client,
|
||||
cmd.wlen = 0;
|
||||
cmd.rlen = 1;
|
||||
ret = si2157_cmd_execute(client, &cmd);
|
||||
@ -1306,8 +1306,21 @@ index d389f1f..b93f333 100644
|
||||
goto err_kfree;
|
||||
|
||||
memcpy(&fe->ops.tuner_ops, &si2157_ops, sizeof(struct dvb_tuner_ops));
|
||||
@@ -529,6 +934,7 @@ static const struct i2c_device_id si2157_id_table[] = {
|
||||
{"si2157", SI2157_CHIPTYPE_SI2157},
|
||||
{"si2146", SI2157_CHIPTYPE_SI2146},
|
||||
{"si2141", SI2157_CHIPTYPE_SI2141},
|
||||
+ {"si2177", SI2157_CHIPTYPE_SI2177},
|
||||
{}
|
||||
};
|
||||
MODULE_DEVICE_TABLE(i2c, si2157_id_table);
|
||||
@@ -550,3 +956,4 @@ MODULE_AUTHOR("Antti Palosaari <crope@iki.fi>");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_FIRMWARE(SI2158_A20_FIRMWARE);
|
||||
MODULE_FIRMWARE(SI2141_A10_FIRMWARE);
|
||||
+MODULE_FIRMWARE(SI2157_A30_FIRMWARE);
|
||||
diff --git a/drivers/media/tuners/si2157_priv.h b/drivers/media/tuners/si2157_priv.h
|
||||
index 50f8630..1e5ce5b 100644
|
||||
index 50f8630..84ed808 100644
|
||||
--- a/drivers/media/tuners/si2157_priv.h
|
||||
+++ b/drivers/media/tuners/si2157_priv.h
|
||||
@@ -37,6 +37,8 @@ struct si2157_dev {
|
||||
@ -1319,11 +1332,26 @@ index 50f8630..1e5ce5b 100644
|
||||
struct delayed_work stat_work;
|
||||
|
||||
#if defined(CONFIG_MEDIA_CONTROLLER)
|
||||
@@ -50,6 +52,7 @@ struct si2157_dev {
|
||||
#define SI2157_CHIPTYPE_SI2157 0
|
||||
#define SI2157_CHIPTYPE_SI2146 1
|
||||
#define SI2157_CHIPTYPE_SI2141 2
|
||||
+#define SI2157_CHIPTYPE_SI2177 3
|
||||
|
||||
/* firmware command struct */
|
||||
#define SI2157_ARGLEN 30
|
||||
@@ -61,5 +64,5 @@ struct si2157_cmd {
|
||||
|
||||
#define SI2158_A20_FIRMWARE "dvb-tuner-si2158-a20-01.fw"
|
||||
#define SI2141_A10_FIRMWARE "dvb-tuner-si2141-a10-01.fw"
|
||||
-
|
||||
+#define SI2157_A30_FIRMWARE "dvb-tuner-si2157-a30-05.fw"
|
||||
#endif
|
||||
diff --git a/drivers/media/usb/cx231xx/cx231xx-avcore.c b/drivers/media/usb/cx231xx/cx231xx-avcore.c
|
||||
index fdd3c22..25aa7bb 100644
|
||||
index d417b5f..f575ae0 100644
|
||||
--- a/drivers/media/usb/cx231xx/cx231xx-avcore.c
|
||||
+++ b/drivers/media/usb/cx231xx/cx231xx-avcore.c
|
||||
@@ -599,14 +599,27 @@ int cx231xx_set_video_input_mux(struct cx231xx *dev, u8 input)
|
||||
@@ -587,14 +587,27 @@ int cx231xx_set_video_input_mux(struct cx231xx *dev, u8 input)
|
||||
return status;
|
||||
}
|
||||
}
|
||||
@ -1354,7 +1382,7 @@ index fdd3c22..25aa7bb 100644
|
||||
|
||||
break;
|
||||
default:
|
||||
@@ -1205,12 +1218,22 @@ int cx231xx_set_audio_decoder_input(struct cx231xx *dev,
|
||||
@@ -1193,12 +1206,22 @@ int cx231xx_set_audio_decoder_input(struct cx231xx *dev,
|
||||
cx231xx_set_field(FLD_SIF_EN, 0));
|
||||
break;
|
||||
default:
|
||||
@ -1381,10 +1409,10 @@ index fdd3c22..25aa7bb 100644
|
||||
break;
|
||||
|
||||
diff --git a/drivers/media/usb/cx231xx/cx231xx-video.c b/drivers/media/usb/cx231xx/cx231xx-video.c
|
||||
index 0d451c4..d5e51a5 100644
|
||||
index f882047..77c118b 100644
|
||||
--- a/drivers/media/usb/cx231xx/cx231xx-video.c
|
||||
+++ b/drivers/media/usb/cx231xx/cx231xx-video.c
|
||||
@@ -1293,7 +1293,7 @@ int cx231xx_s_frequency(struct file *file, void *priv,
|
||||
@@ -1281,7 +1281,7 @@ int cx231xx_s_frequency(struct file *file, void *priv,
|
||||
struct cx231xx_fh *fh = priv;
|
||||
struct cx231xx *dev = fh->dev;
|
||||
struct v4l2_frequency new_freq = *f;
|
||||
@ -1393,7 +1421,7 @@ index 0d451c4..d5e51a5 100644
|
||||
u32 if_frequency = 5400000;
|
||||
|
||||
dev_dbg(dev->dev,
|
||||
@@ -1310,14 +1310,30 @@ int cx231xx_s_frequency(struct file *file, void *priv,
|
||||
@@ -1298,14 +1298,30 @@ int cx231xx_s_frequency(struct file *file, void *priv,
|
||||
/* set pre channel change settings in DIF first */
|
||||
rc = cx231xx_tuner_pre_channel_change(dev);
|
||||
|
||||
@ -1428,7 +1456,7 @@ index 0d451c4..d5e51a5 100644
|
||||
if (dev->norm & (V4L2_STD_MN | V4L2_STD_NTSC_443))
|
||||
if_frequency = 5400000; /*5.4MHz */
|
||||
else if (dev->norm & V4L2_STD_B)
|
||||
@@ -1584,8 +1600,19 @@ int cx231xx_querycap(struct file *file, void *priv,
|
||||
@@ -1572,8 +1588,19 @@ int cx231xx_querycap(struct file *file, void *priv,
|
||||
else
|
||||
cap->device_caps |= V4L2_CAP_VIDEO_CAPTURE;
|
||||
}
|
||||
@ -1449,7 +1477,7 @@ index 0d451c4..d5e51a5 100644
|
||||
cap->capabilities = cap->device_caps | V4L2_CAP_READWRITE |
|
||||
V4L2_CAP_VBI_CAPTURE | V4L2_CAP_VIDEO_CAPTURE |
|
||||
V4L2_CAP_STREAMING | V4L2_CAP_DEVICE_CAPS;
|
||||
@@ -2191,10 +2218,20 @@ static void cx231xx_vdev_init(struct cx231xx *dev,
|
||||
@@ -2179,10 +2206,20 @@ static void cx231xx_vdev_init(struct cx231xx *dev,
|
||||
|
||||
video_set_drvdata(vfd, dev);
|
||||
if (dev->tuner_type == TUNER_ABSENT) {
|
||||
@ -1474,6 +1502,582 @@ index 0d451c4..d5e51a5 100644
|
||||
}
|
||||
}
|
||||
|
||||
diff --git a/drivers/media/usb/pvrusb2/Kconfig b/drivers/media/usb/pvrusb2/Kconfig
|
||||
index 64f9df0..e6a4f73 100644
|
||||
--- a/drivers/media/usb/pvrusb2/Kconfig
|
||||
+++ b/drivers/media/usb/pvrusb2/Kconfig
|
||||
@@ -41,6 +41,8 @@ config VIDEO_PVRUSB2_DVB
|
||||
select DVB_S5H1409 if MEDIA_SUBDRV_AUTOSELECT
|
||||
select DVB_S5H1411 if MEDIA_SUBDRV_AUTOSELECT
|
||||
select DVB_TDA10048 if MEDIA_SUBDRV_AUTOSELECT
|
||||
+ select DVB_LGDT3306A if MEDIA_SUBDRV_AUTOSELECT
|
||||
+ select DVB_SI2168 if MEDIA_SUBDRV_AUTOSELECT
|
||||
select MEDIA_TUNER_TDA18271 if MEDIA_SUBDRV_AUTOSELECT
|
||||
select MEDIA_TUNER_SIMPLE if MEDIA_SUBDRV_AUTOSELECT
|
||||
select MEDIA_TUNER_TDA8290 if MEDIA_SUBDRV_AUTOSELECT
|
||||
diff --git a/drivers/media/usb/pvrusb2/pvrusb2-cx2584x-v4l.c b/drivers/media/usb/pvrusb2/pvrusb2-cx2584x-v4l.c
|
||||
index d5bec0f..36016ab 100644
|
||||
--- a/drivers/media/usb/pvrusb2/pvrusb2-cx2584x-v4l.c
|
||||
+++ b/drivers/media/usb/pvrusb2/pvrusb2-cx2584x-v4l.c
|
||||
@@ -111,10 +111,35 @@ static const struct routing_scheme routing_defav400 = {
|
||||
.cnt = ARRAY_SIZE(routing_schemeav400),
|
||||
};
|
||||
|
||||
+static const struct routing_scheme_item routing_scheme160xxx[] = {
|
||||
+ [PVR2_CVAL_INPUT_TV] = {
|
||||
+ .vid = CX25840_COMPOSITE7,
|
||||
+ .aud = CX25840_AUDIO8,
|
||||
+ },
|
||||
+ [PVR2_CVAL_INPUT_RADIO] = {
|
||||
+ .vid = CX25840_COMPOSITE4,
|
||||
+ .aud = CX25840_AUDIO6,
|
||||
+ },
|
||||
+ [PVR2_CVAL_INPUT_COMPOSITE] = {
|
||||
+ .vid = CX25840_COMPOSITE3,
|
||||
+ .aud = CX25840_AUDIO_SERIAL,
|
||||
+ },
|
||||
+ [PVR2_CVAL_INPUT_SVIDEO] = {
|
||||
+ .vid = CX25840_SVIDEO1,
|
||||
+ .aud = CX25840_AUDIO_SERIAL,
|
||||
+ },
|
||||
+};
|
||||
+
|
||||
+static const struct routing_scheme routing_def160xxx = {
|
||||
+ .def = routing_scheme160xxx,
|
||||
+ .cnt = ARRAY_SIZE(routing_scheme160xxx),
|
||||
+};
|
||||
+
|
||||
static const struct routing_scheme *routing_schemes[] = {
|
||||
[PVR2_ROUTING_SCHEME_HAUPPAUGE] = &routing_def0,
|
||||
[PVR2_ROUTING_SCHEME_GOTVIEW] = &routing_defgv,
|
||||
[PVR2_ROUTING_SCHEME_AV400] = &routing_defav400,
|
||||
+ [PVR2_ROUTING_SCHEME_HAUP160XXX] = &routing_def160xxx,
|
||||
};
|
||||
|
||||
void pvr2_cx25840_subdev_update(struct pvr2_hdw *hdw, struct v4l2_subdev *sd)
|
||||
diff --git a/drivers/media/usb/pvrusb2/pvrusb2-devattr.c b/drivers/media/usb/pvrusb2/pvrusb2-devattr.c
|
||||
index 06de1c8..97b4fc8 100644
|
||||
--- a/drivers/media/usb/pvrusb2/pvrusb2-devattr.c
|
||||
+++ b/drivers/media/usb/pvrusb2/pvrusb2-devattr.c
|
||||
@@ -37,6 +37,9 @@ pvr2_device_desc structures.
|
||||
#include "tda18271.h"
|
||||
#include "tda8290.h"
|
||||
#include "tuner-simple.h"
|
||||
+#include "si2157.h"
|
||||
+#include "lgdt3306a.h"
|
||||
+#include "si2168.h"
|
||||
#endif
|
||||
|
||||
|
||||
@@ -188,10 +191,10 @@ static struct lgdt330x_config pvr2_lgdt3303_config = {
|
||||
|
||||
static int pvr2_lgdt3303_attach(struct pvr2_dvb_adapter *adap)
|
||||
{
|
||||
- adap->fe = dvb_attach(lgdt330x_attach, &pvr2_lgdt3303_config,
|
||||
- 0x0e,
|
||||
- &adap->channel.hdw->i2c_adap);
|
||||
- if (adap->fe)
|
||||
+ adap->fe[0] = dvb_attach(lgdt330x_attach, &pvr2_lgdt3303_config,
|
||||
+ 0x0e,
|
||||
+ &adap->channel.hdw->i2c_adap);
|
||||
+ if (adap->fe[0])
|
||||
return 0;
|
||||
|
||||
return -EIO;
|
||||
@@ -199,7 +202,7 @@ static int pvr2_lgdt3303_attach(struct pvr2_dvb_adapter *adap)
|
||||
|
||||
static int pvr2_lgh06xf_attach(struct pvr2_dvb_adapter *adap)
|
||||
{
|
||||
- dvb_attach(simple_tuner_attach, adap->fe,
|
||||
+ dvb_attach(simple_tuner_attach, adap->fe[0],
|
||||
&adap->channel.hdw->i2c_adap, 0x61,
|
||||
TUNER_LG_TDVS_H06XF);
|
||||
|
||||
@@ -248,10 +251,10 @@ static struct lgdt330x_config pvr2_lgdt3302_config = {
|
||||
|
||||
static int pvr2_lgdt3302_attach(struct pvr2_dvb_adapter *adap)
|
||||
{
|
||||
- adap->fe = dvb_attach(lgdt330x_attach, &pvr2_lgdt3302_config,
|
||||
+ adap->fe[0] = dvb_attach(lgdt330x_attach, &pvr2_lgdt3302_config,
|
||||
0x0e,
|
||||
&adap->channel.hdw->i2c_adap);
|
||||
- if (adap->fe)
|
||||
+ if (adap->fe[0])
|
||||
return 0;
|
||||
|
||||
return -EIO;
|
||||
@@ -259,7 +262,7 @@ static int pvr2_lgdt3302_attach(struct pvr2_dvb_adapter *adap)
|
||||
|
||||
static int pvr2_fcv1236d_attach(struct pvr2_dvb_adapter *adap)
|
||||
{
|
||||
- dvb_attach(simple_tuner_attach, adap->fe,
|
||||
+ dvb_attach(simple_tuner_attach, adap->fe[0],
|
||||
&adap->channel.hdw->i2c_adap, 0x61,
|
||||
TUNER_PHILIPS_FCV1236D);
|
||||
|
||||
@@ -335,9 +338,9 @@ static struct tda18271_config hauppauge_tda18271_dvb_config = {
|
||||
|
||||
static int pvr2_tda10048_attach(struct pvr2_dvb_adapter *adap)
|
||||
{
|
||||
- adap->fe = dvb_attach(tda10048_attach, &hauppauge_tda10048_config,
|
||||
+ adap->fe[0] = dvb_attach(tda10048_attach, &hauppauge_tda10048_config,
|
||||
&adap->channel.hdw->i2c_adap);
|
||||
- if (adap->fe)
|
||||
+ if (adap->fe[0])
|
||||
return 0;
|
||||
|
||||
return -EIO;
|
||||
@@ -345,10 +348,10 @@ static int pvr2_tda10048_attach(struct pvr2_dvb_adapter *adap)
|
||||
|
||||
static int pvr2_73xxx_tda18271_8295_attach(struct pvr2_dvb_adapter *adap)
|
||||
{
|
||||
- dvb_attach(tda829x_attach, adap->fe,
|
||||
+ dvb_attach(tda829x_attach, adap->fe[0],
|
||||
&adap->channel.hdw->i2c_adap, 0x42,
|
||||
&tda829x_no_probe);
|
||||
- dvb_attach(tda18271_attach, adap->fe, 0x60,
|
||||
+ dvb_attach(tda18271_attach, adap->fe[0], 0x60,
|
||||
&adap->channel.hdw->i2c_adap,
|
||||
&hauppauge_tda18271_dvb_config);
|
||||
|
||||
@@ -433,9 +436,9 @@ static struct tda18271_config hauppauge_tda18271_config = {
|
||||
|
||||
static int pvr2_s5h1409_attach(struct pvr2_dvb_adapter *adap)
|
||||
{
|
||||
- adap->fe = dvb_attach(s5h1409_attach, &pvr2_s5h1409_config,
|
||||
+ adap->fe[0] = dvb_attach(s5h1409_attach, &pvr2_s5h1409_config,
|
||||
&adap->channel.hdw->i2c_adap);
|
||||
- if (adap->fe)
|
||||
+ if (adap->fe[0])
|
||||
return 0;
|
||||
|
||||
return -EIO;
|
||||
@@ -443,9 +446,9 @@ static int pvr2_s5h1409_attach(struct pvr2_dvb_adapter *adap)
|
||||
|
||||
static int pvr2_s5h1411_attach(struct pvr2_dvb_adapter *adap)
|
||||
{
|
||||
- adap->fe = dvb_attach(s5h1411_attach, &pvr2_s5h1411_config,
|
||||
+ adap->fe[0] = dvb_attach(s5h1411_attach, &pvr2_s5h1411_config,
|
||||
&adap->channel.hdw->i2c_adap);
|
||||
- if (adap->fe)
|
||||
+ if (adap->fe[0])
|
||||
return 0;
|
||||
|
||||
return -EIO;
|
||||
@@ -453,10 +456,10 @@ static int pvr2_s5h1411_attach(struct pvr2_dvb_adapter *adap)
|
||||
|
||||
static int pvr2_tda18271_8295_attach(struct pvr2_dvb_adapter *adap)
|
||||
{
|
||||
- dvb_attach(tda829x_attach, adap->fe,
|
||||
+ dvb_attach(tda829x_attach, adap->fe[0],
|
||||
&adap->channel.hdw->i2c_adap, 0x42,
|
||||
&tda829x_no_probe);
|
||||
- dvb_attach(tda18271_attach, adap->fe, 0x60,
|
||||
+ dvb_attach(tda18271_attach, adap->fe[0], 0x60,
|
||||
&adap->channel.hdw->i2c_adap,
|
||||
&hauppauge_tda18271_config);
|
||||
|
||||
@@ -525,7 +528,164 @@ static const struct pvr2_device_desc pvr2_device_751xx = {
|
||||
#endif
|
||||
};
|
||||
|
||||
+/*------------------------------------------------------------------------*/
|
||||
+/* Hauppauge PVR-USB2 Model 160000 / 160111 -- HVR-1955 / HVR-1975 */
|
||||
+
|
||||
+#ifdef CONFIG_VIDEO_PVRUSB2_DVB
|
||||
+static int pvr2_si2157_attach(struct pvr2_dvb_adapter *adap);
|
||||
+static int pvr2_si2168_attach(struct pvr2_dvb_adapter *adap);
|
||||
+static int pvr2_dual_fe_attach(struct pvr2_dvb_adapter *adap);
|
||||
+static int pvr2_lgdt3306a_attach(struct pvr2_dvb_adapter *adap);
|
||||
+
|
||||
+static const struct pvr2_dvb_props pvr2_160000_dvb_props = {
|
||||
+ .frontend_attach = pvr2_dual_fe_attach,
|
||||
+ .tuner_attach = pvr2_si2157_attach,
|
||||
+};
|
||||
+static const struct pvr2_dvb_props pvr2_160111_dvb_props = {
|
||||
+ .frontend_attach = pvr2_lgdt3306a_attach,
|
||||
+ .tuner_attach = pvr2_si2157_attach,
|
||||
+};
|
||||
+
|
||||
+static int pvr2_si2157_attach(struct pvr2_dvb_adapter *adap)
|
||||
+{
|
||||
+ struct si2157_config si2157_config = {};
|
||||
+
|
||||
+ si2157_config.inversion = 1;
|
||||
+ si2157_config.fe = adap->fe[0];
|
||||
+
|
||||
+ adap->i2c_client_tuner = dvb_module_probe("si2157", "si2177",
|
||||
+ &adap->channel.hdw->i2c_adap,
|
||||
+ 0x60, &si2157_config);
|
||||
+
|
||||
+ if (!adap->i2c_client_tuner)
|
||||
+ return -ENODEV;
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int pvr2_si2168_attach(struct pvr2_dvb_adapter *adap)
|
||||
+{
|
||||
+ struct si2168_config si2168_config = {};
|
||||
+ struct i2c_adapter *adapter;
|
||||
+
|
||||
+ pr_debug("%s()\n", __func__);
|
||||
+
|
||||
+ si2168_config.fe = &adap->fe[1];
|
||||
+ si2168_config.i2c_adapter = &adapter;
|
||||
+ si2168_config.ts_mode = SI2168_TS_PARALLEL; /*2, 1-serial, 2-parallel.*/
|
||||
+ si2168_config.ts_clock_gapped = 1; /*0-disabled, 1-enabled.*/
|
||||
+ si2168_config.ts_clock_inv = 0; /*0-not-invert, 1-invert*/
|
||||
+ si2168_config.spectral_inversion = 1; /*0-not-invert, 1-invert*/
|
||||
+
|
||||
+ adap->i2c_client_demod[1] = dvb_module_probe("si2168", NULL,
|
||||
+ &adap->channel.hdw->i2c_adap,
|
||||
+ 0x64, &si2168_config);
|
||||
+
|
||||
+ if (!adap->i2c_client_demod[1])
|
||||
+ return -ENODEV;
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int pvr2_lgdt3306a_attach(struct pvr2_dvb_adapter *adap)
|
||||
+{
|
||||
+ struct lgdt3306a_config lgdt3306a_config;
|
||||
+ struct i2c_adapter *adapter;
|
||||
+
|
||||
+ pr_debug("%s()\n", __func__);
|
||||
+
|
||||
+ lgdt3306a_config.fe = &adap->fe[0];
|
||||
+ lgdt3306a_config.i2c_adapter = &adapter;
|
||||
+ lgdt3306a_config.deny_i2c_rptr = 1;
|
||||
+ lgdt3306a_config.spectral_inversion = 1;
|
||||
+ lgdt3306a_config.qam_if_khz = 4000;
|
||||
+ lgdt3306a_config.vsb_if_khz = 3250;
|
||||
+ lgdt3306a_config.mpeg_mode = LGDT3306A_MPEG_PARALLEL;
|
||||
+ lgdt3306a_config.tpclk_edge = LGDT3306A_TPCLK_FALLING_EDGE;
|
||||
+ lgdt3306a_config.tpvalid_polarity = LGDT3306A_TP_VALID_LOW;
|
||||
+ lgdt3306a_config.xtalMHz = 25, /* demod clock MHz; 24/25 supported */
|
||||
+
|
||||
+ adap->i2c_client_demod[0] = dvb_module_probe("lgdt3306a", NULL,
|
||||
+ &adap->channel.hdw->i2c_adap,
|
||||
+ 0x59, &lgdt3306a_config);
|
||||
+
|
||||
+ if (!adap->i2c_client_demod[0])
|
||||
+ return -ENODEV;
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int pvr2_dual_fe_attach(struct pvr2_dvb_adapter *adap)
|
||||
+{
|
||||
+ pr_debug("%s()\n", __func__);
|
||||
+
|
||||
+ if (pvr2_lgdt3306a_attach(adap) != 0)
|
||||
+ return -ENODEV;
|
||||
+
|
||||
+ if (pvr2_si2168_attach(adap) != 0) {
|
||||
+ dvb_module_release(adap->i2c_client_demod[0]);
|
||||
+ return -ENODEV;
|
||||
+ }
|
||||
|
||||
+ return 0;
|
||||
+}
|
||||
+#endif
|
||||
+
|
||||
+#define PVR2_FIRMWARE_160xxx "v4l-pvrusb2-160xxx-01.fw"
|
||||
+static const char *pvr2_fw1_names_160xxx[] = {
|
||||
+ PVR2_FIRMWARE_160xxx,
|
||||
+};
|
||||
+
|
||||
+static const struct pvr2_device_client_desc pvr2_cli_160xxx[] = {
|
||||
+ { .module_id = PVR2_CLIENT_ID_CX25840 },
|
||||
+};
|
||||
+
|
||||
+static const struct pvr2_device_desc pvr2_device_160000 = {
|
||||
+ .description = "WinTV HVR-1975 Model 160000",
|
||||
+ .shortname = "160000",
|
||||
+ .client_table.lst = pvr2_cli_160xxx,
|
||||
+ .client_table.cnt = ARRAY_SIZE(pvr2_cli_160xxx),
|
||||
+ .fx2_firmware.lst = pvr2_fw1_names_160xxx,
|
||||
+ .fx2_firmware.cnt = ARRAY_SIZE(pvr2_fw1_names_160xxx),
|
||||
+ .default_tuner_type = TUNER_ABSENT,
|
||||
+ .flag_has_cx25840 = !0,
|
||||
+ .flag_has_hauppauge_rom = !0,
|
||||
+ .flag_has_analogtuner = !0,
|
||||
+ .flag_has_composite = !0,
|
||||
+ .flag_has_svideo = !0,
|
||||
+ .flag_fx2_16kb = !0,
|
||||
+ .signal_routing_scheme = PVR2_ROUTING_SCHEME_HAUPPAUGE,
|
||||
+ .digital_control_scheme = PVR2_DIGITAL_SCHEME_HAUPPAUGE,
|
||||
+ .default_std_mask = V4L2_STD_NTSC_M,
|
||||
+ .led_scheme = PVR2_LED_SCHEME_HAUPPAUGE,
|
||||
+ .ir_scheme = PVR2_IR_SCHEME_ZILOG,
|
||||
+#ifdef CONFIG_VIDEO_PVRUSB2_DVB
|
||||
+ .dvb_props = &pvr2_160000_dvb_props,
|
||||
+#endif
|
||||
+};
|
||||
+static const struct pvr2_device_desc pvr2_device_160111 = {
|
||||
+ .description = "WinTV HVR-1955 Model 160111",
|
||||
+ .shortname = "160111",
|
||||
+ .client_table.lst = pvr2_cli_160xxx,
|
||||
+ .client_table.cnt = ARRAY_SIZE(pvr2_cli_160xxx),
|
||||
+ .fx2_firmware.lst = pvr2_fw1_names_160xxx,
|
||||
+ .fx2_firmware.cnt = ARRAY_SIZE(pvr2_fw1_names_160xxx),
|
||||
+ .default_tuner_type = TUNER_ABSENT,
|
||||
+ .flag_has_cx25840 = !0,
|
||||
+ .flag_has_hauppauge_rom = !0,
|
||||
+ .flag_has_analogtuner = !0,
|
||||
+ .flag_has_composite = !0,
|
||||
+ .flag_has_svideo = !0,
|
||||
+ .flag_fx2_16kb = !0,
|
||||
+ .signal_routing_scheme = PVR2_ROUTING_SCHEME_HAUPPAUGE,
|
||||
+ .digital_control_scheme = PVR2_DIGITAL_SCHEME_HAUPPAUGE,
|
||||
+ .default_std_mask = V4L2_STD_NTSC_M,
|
||||
+ .led_scheme = PVR2_LED_SCHEME_HAUPPAUGE,
|
||||
+ .ir_scheme = PVR2_IR_SCHEME_ZILOG,
|
||||
+#ifdef CONFIG_VIDEO_PVRUSB2_DVB
|
||||
+ .dvb_props = &pvr2_160111_dvb_props,
|
||||
+#endif
|
||||
+};
|
||||
|
||||
/*------------------------------------------------------------------------*/
|
||||
|
||||
@@ -552,6 +712,10 @@ struct usb_device_id pvr2_device_table[] = {
|
||||
.driver_info = (kernel_ulong_t)&pvr2_device_751xx},
|
||||
{ USB_DEVICE(0x0ccd, 0x0039),
|
||||
.driver_info = (kernel_ulong_t)&pvr2_device_av400},
|
||||
+ { USB_DEVICE(0x2040, 0x7502),
|
||||
+ .driver_info = (kernel_ulong_t)&pvr2_device_160111},
|
||||
+ { USB_DEVICE(0x2040, 0x7510),
|
||||
+ .driver_info = (kernel_ulong_t)&pvr2_device_160000},
|
||||
{ }
|
||||
};
|
||||
|
||||
diff --git a/drivers/media/usb/pvrusb2/pvrusb2-devattr.h b/drivers/media/usb/pvrusb2/pvrusb2-devattr.h
|
||||
index c1e7d48..ea0b2bf 100644
|
||||
--- a/drivers/media/usb/pvrusb2/pvrusb2-devattr.h
|
||||
+++ b/drivers/media/usb/pvrusb2/pvrusb2-devattr.h
|
||||
@@ -66,6 +66,7 @@ struct pvr2_string_table {
|
||||
#define PVR2_ROUTING_SCHEME_GOTVIEW 1
|
||||
#define PVR2_ROUTING_SCHEME_ONAIR 2
|
||||
#define PVR2_ROUTING_SCHEME_AV400 3
|
||||
+#define PVR2_ROUTING_SCHEME_HAUP160XXX 4
|
||||
|
||||
#define PVR2_DIGITAL_SCHEME_NONE 0
|
||||
#define PVR2_DIGITAL_SCHEME_HAUPPAUGE 1
|
||||
diff --git a/drivers/media/usb/pvrusb2/pvrusb2-dvb.c b/drivers/media/usb/pvrusb2/pvrusb2-dvb.c
|
||||
index 4b32b21..8f492ec 100644
|
||||
--- a/drivers/media/usb/pvrusb2/pvrusb2-dvb.c
|
||||
+++ b/drivers/media/usb/pvrusb2/pvrusb2-dvb.c
|
||||
@@ -343,26 +343,19 @@ static int pvr2_dvb_frontend_init(struct pvr2_dvb_adapter *adap)
|
||||
goto done;
|
||||
}
|
||||
|
||||
- if ((dvb_props->frontend_attach(adap) == 0) && (adap->fe)) {
|
||||
-
|
||||
- if (dvb_register_frontend(&adap->dvb_adap, adap->fe)) {
|
||||
+ if (dvb_props->frontend_attach(adap) == 0 && adap->fe[0]) {
|
||||
+ if (dvb_register_frontend(&adap->dvb_adap, adap->fe[0])) {
|
||||
pvr2_trace(PVR2_TRACE_ERROR_LEGS,
|
||||
"frontend registration failed!");
|
||||
- dvb_frontend_detach(adap->fe);
|
||||
- adap->fe = NULL;
|
||||
ret = -ENODEV;
|
||||
- goto done;
|
||||
+ goto fail_frontend0;
|
||||
}
|
||||
+ if (adap->fe[0]->ops.analog_ops.standby)
|
||||
+ adap->fe[0]->ops.analog_ops.standby(adap->fe[0]);
|
||||
|
||||
- if (dvb_props->tuner_attach)
|
||||
- dvb_props->tuner_attach(adap);
|
||||
-
|
||||
- if (adap->fe->ops.analog_ops.standby)
|
||||
- adap->fe->ops.analog_ops.standby(adap->fe);
|
||||
-
|
||||
- /* Ensure all frontends negotiate bus access */
|
||||
- adap->fe->ops.ts_bus_ctrl = pvr2_dvb_bus_ctrl;
|
||||
-
|
||||
+ pvr2_trace(PVR2_TRACE_INFO, "transferring fe[%d] ts_bus_ctrl() to pvr2_dvb_bus_ctrl()",
|
||||
+ adap->fe[0]->id);
|
||||
+ adap->fe[0]->ops.ts_bus_ctrl = pvr2_dvb_bus_ctrl;
|
||||
} else {
|
||||
pvr2_trace(PVR2_TRACE_ERROR_LEGS,
|
||||
"no frontend was attached!");
|
||||
@@ -370,17 +363,74 @@ static int pvr2_dvb_frontend_init(struct pvr2_dvb_adapter *adap)
|
||||
return ret;
|
||||
}
|
||||
|
||||
- done:
|
||||
+ if (dvb_props->tuner_attach && dvb_props->tuner_attach(adap)) {
|
||||
+ pvr2_trace(PVR2_TRACE_ERROR_LEGS, "tuner attach failed");
|
||||
+ ret = -ENODEV;
|
||||
+ goto fail_tuner;
|
||||
+ }
|
||||
+
|
||||
+ if (adap->fe[1]) {
|
||||
+ adap->fe[1]->id = 1;
|
||||
+ adap->fe[1]->tuner_priv = adap->fe[0]->tuner_priv;
|
||||
+ memcpy(&adap->fe[1]->ops.tuner_ops,
|
||||
+ &adap->fe[0]->ops.tuner_ops,
|
||||
+ sizeof(struct dvb_tuner_ops));
|
||||
+
|
||||
+ if (dvb_register_frontend(&adap->dvb_adap, adap->fe[1])) {
|
||||
+ pvr2_trace(PVR2_TRACE_ERROR_LEGS,
|
||||
+ "frontend registration failed!");
|
||||
+ ret = -ENODEV;
|
||||
+ goto fail_frontend1;
|
||||
+ }
|
||||
+ /* MFE lock */
|
||||
+ adap->dvb_adap.mfe_shared = 1;
|
||||
+
|
||||
+ if (adap->fe[1]->ops.analog_ops.standby)
|
||||
+ adap->fe[1]->ops.analog_ops.standby(adap->fe[1]);
|
||||
+
|
||||
+ pvr2_trace(PVR2_TRACE_INFO, "transferring fe[%d] ts_bus_ctrl() to pvr2_dvb_bus_ctrl()",
|
||||
+ adap->fe[1]->id);
|
||||
+ adap->fe[1]->ops.ts_bus_ctrl = pvr2_dvb_bus_ctrl;
|
||||
+ }
|
||||
+done:
|
||||
pvr2_channel_limit_inputs(&adap->channel, 0);
|
||||
return ret;
|
||||
+
|
||||
+fail_frontend1:
|
||||
+ dvb_frontend_detach(adap->fe[1]);
|
||||
+ adap->fe[1] = NULL;
|
||||
+fail_tuner:
|
||||
+ dvb_unregister_frontend(adap->fe[0]);
|
||||
+fail_frontend0:
|
||||
+ dvb_frontend_detach(adap->fe[0]);
|
||||
+ adap->fe[0] = NULL;
|
||||
+ dvb_module_release(adap->i2c_client_tuner);
|
||||
+ dvb_module_release(adap->i2c_client_demod[1]);
|
||||
+ dvb_module_release(adap->i2c_client_demod[0]);
|
||||
+
|
||||
+ return ret;
|
||||
}
|
||||
|
||||
static int pvr2_dvb_frontend_exit(struct pvr2_dvb_adapter *adap)
|
||||
{
|
||||
- if (adap->fe != NULL) {
|
||||
- dvb_unregister_frontend(adap->fe);
|
||||
- dvb_frontend_detach(adap->fe);
|
||||
+ if (adap->fe[1]) {
|
||||
+ dvb_unregister_frontend(adap->fe[1]);
|
||||
+ dvb_frontend_detach(adap->fe[1]);
|
||||
+ adap->fe[1] = NULL;
|
||||
+ }
|
||||
+ if (adap->fe[0]) {
|
||||
+ dvb_unregister_frontend(adap->fe[0]);
|
||||
+ dvb_frontend_detach(adap->fe[0]);
|
||||
+ adap->fe[0] = NULL;
|
||||
}
|
||||
+
|
||||
+ dvb_module_release(adap->i2c_client_tuner);
|
||||
+ adap->i2c_client_tuner = NULL;
|
||||
+ dvb_module_release(adap->i2c_client_demod[1]);
|
||||
+ adap->i2c_client_demod[1] = NULL;
|
||||
+ dvb_module_release(adap->i2c_client_demod[0]);
|
||||
+ adap->i2c_client_demod[0] = NULL;
|
||||
+
|
||||
return 0;
|
||||
}
|
||||
|
||||
diff --git a/drivers/media/usb/pvrusb2/pvrusb2-dvb.h b/drivers/media/usb/pvrusb2/pvrusb2-dvb.h
|
||||
index e7f71fb..c0b27f5 100644
|
||||
--- a/drivers/media/usb/pvrusb2/pvrusb2-dvb.h
|
||||
+++ b/drivers/media/usb/pvrusb2/pvrusb2-dvb.h
|
||||
@@ -18,7 +18,10 @@ struct pvr2_dvb_adapter {
|
||||
struct dmxdev dmxdev;
|
||||
struct dvb_demux demux;
|
||||
struct dvb_net dvb_net;
|
||||
- struct dvb_frontend *fe;
|
||||
+ struct dvb_frontend *fe[2];
|
||||
+
|
||||
+ struct i2c_client *i2c_client_demod[2];
|
||||
+ struct i2c_client *i2c_client_tuner;
|
||||
|
||||
int feedcount;
|
||||
int max_feed_count;
|
||||
diff --git a/drivers/media/usb/pvrusb2/pvrusb2-fx2-cmd.h b/drivers/media/usb/pvrusb2/pvrusb2-fx2-cmd.h
|
||||
index 0a01de4..640b033 100644
|
||||
--- a/drivers/media/usb/pvrusb2/pvrusb2-fx2-cmd.h
|
||||
+++ b/drivers/media/usb/pvrusb2/pvrusb2-fx2-cmd.h
|
||||
@@ -38,6 +38,10 @@
|
||||
|
||||
#define FX2CMD_FWPOST1 0x52u
|
||||
|
||||
+/* These 2 only exist on Model 160xxx */
|
||||
+#define FX2CMD_HCW_DEMOD_RESET_PIN 0xd4u
|
||||
+#define FX2CMD_HCW_MAKO_SLEEP_PIN 0xd5u
|
||||
+
|
||||
#define FX2CMD_POWER_OFF 0xdcu
|
||||
#define FX2CMD_POWER_ON 0xdeu
|
||||
|
||||
diff --git a/drivers/media/usb/pvrusb2/pvrusb2-hdw.c b/drivers/media/usb/pvrusb2/pvrusb2-hdw.c
|
||||
index 1914391..63916ca 100644
|
||||
--- a/drivers/media/usb/pvrusb2/pvrusb2-hdw.c
|
||||
+++ b/drivers/media/usb/pvrusb2/pvrusb2-hdw.c
|
||||
@@ -316,6 +316,8 @@ static const struct pvr2_fx2cmd_descdef pvr2_fx2cmd_desc[] = {
|
||||
{FX2CMD_ONAIR_DTV_STREAMING_OFF, "onair dtv stream off"},
|
||||
{FX2CMD_ONAIR_DTV_POWER_ON, "onair dtv power on"},
|
||||
{FX2CMD_ONAIR_DTV_POWER_OFF, "onair dtv power off"},
|
||||
+ {FX2CMD_HCW_DEMOD_RESET_PIN, "hcw demod reset pin"},
|
||||
+ {FX2CMD_HCW_MAKO_SLEEP_PIN, "hcw mako sleep pin"},
|
||||
};
|
||||
|
||||
|
||||
@@ -2139,10 +2141,28 @@ static void pvr2_hdw_setup_low(struct pvr2_hdw *hdw)
|
||||
((0) << 16));
|
||||
}
|
||||
|
||||
- // This step MUST happen after the earlier powerup step.
|
||||
+ /* This step MUST happen after the earlier powerup step */
|
||||
pvr2_i2c_core_init(hdw);
|
||||
if (!pvr2_hdw_dev_ok(hdw)) return;
|
||||
|
||||
+ /* Reset demod only on Hauppauge 160xxx platform */
|
||||
+ if (hdw->usb_dev->descriptor.idVendor == 0x2040 &&
|
||||
+ (hdw->usb_dev->descriptor.idProduct == 0x7502 ||
|
||||
+ hdw->usb_dev->descriptor.idProduct == 0x7510)) {
|
||||
+ pr_info("%s(): resetting 160xxx demod\n", __func__);
|
||||
+ /* TODO: not sure this is proper place to reset once only */
|
||||
+ pvr2_issue_simple_cmd(hdw,
|
||||
+ FX2CMD_HCW_DEMOD_RESET_PIN |
|
||||
+ (1 << 8) |
|
||||
+ ((0) << 16));
|
||||
+ msleep(10);
|
||||
+ pvr2_issue_simple_cmd(hdw,
|
||||
+ FX2CMD_HCW_DEMOD_RESET_PIN |
|
||||
+ (1 << 8) |
|
||||
+ ((1) << 16));
|
||||
+ msleep(10);
|
||||
+ }
|
||||
+
|
||||
pvr2_hdw_load_modules(hdw);
|
||||
if (!pvr2_hdw_dev_ok(hdw)) return;
|
||||
|
||||
@@ -4012,6 +4032,20 @@ int pvr2_hdw_cmd_decoder_reset(struct pvr2_hdw *hdw)
|
||||
static int pvr2_hdw_cmd_hcw_demod_reset(struct pvr2_hdw *hdw, int onoff)
|
||||
{
|
||||
hdw->flag_ok = !0;
|
||||
+
|
||||
+ /* Use this for Hauppauge 160xxx only */
|
||||
+ if (hdw->usb_dev->descriptor.idVendor == 0x2040 &&
|
||||
+ (hdw->usb_dev->descriptor.idProduct == 0x7502 ||
|
||||
+ hdw->usb_dev->descriptor.idProduct == 0x7510)) {
|
||||
+ pr_debug("%s(): resetting demod on Hauppauge 160xxx platform skipped\n",
|
||||
+ __func__);
|
||||
+ /* Can't reset 160xxx or it will trash Demod tristate */
|
||||
+ return pvr2_issue_simple_cmd(hdw,
|
||||
+ FX2CMD_HCW_MAKO_SLEEP_PIN |
|
||||
+ (1 << 8) |
|
||||
+ ((onoff ? 1 : 0) << 16));
|
||||
+ }
|
||||
+
|
||||
return pvr2_issue_simple_cmd(hdw,
|
||||
FX2CMD_HCW_DEMOD_RESETIN |
|
||||
(1 << 8) |
|
||||
--
|
||||
2.17.1
|
||||
|
||||
|
@ -1,217 +0,0 @@
|
||||
From: Thomas Hollstegge <thomas.hollstegge@gmail.com>
|
||||
[v3] media: dvbsky: Add support for MyGica T230C v2
|
||||
https://lore.kernel.org/patchwork/cover/904817/
|
||||
|
||||
diff --git a/drivers/media/dvb-frontends/si2168.c b/drivers/media/dvb-frontends/si2168.c
|
||||
index 4d43424..3402b96 100644
|
||||
--- a/drivers/media/dvb-frontends/si2168.c
|
||||
+++ b/drivers/media/dvb-frontends/si2168.c
|
||||
@@ -96,13 +96,15 @@ static int si2168_ts_bus_ctrl(struct dvb_frontend *fe, int acquire)
|
||||
dev_dbg(&client->dev, "%s acquire: %d\n", __func__, acquire);
|
||||
|
||||
/* set TS_MODE property */
|
||||
- memcpy(cmd.args, "\x14\x00\x01\x10\x10\x00", 6);
|
||||
+ memcpy(cmd.args, "\x14\x00\x01\x10\x00\x00", 6);
|
||||
if (acquire)
|
||||
cmd.args[4] |= dev->ts_mode;
|
||||
else
|
||||
cmd.args[4] |= SI2168_TS_TRISTATE;
|
||||
if (dev->ts_clock_gapped)
|
||||
cmd.args[4] |= 0x40;
|
||||
+ cmd.args[4] |= (dev->ts_clock_mode & 0x03) << 4;
|
||||
+
|
||||
cmd.wlen = 6;
|
||||
cmd.rlen = 4;
|
||||
ret = si2168_cmd_execute(client, &cmd);
|
||||
@@ -644,6 +646,18 @@ static int si2168_set_frontend(struct dvb_frontend *fe)
|
||||
if (ret)
|
||||
goto err;
|
||||
|
||||
+ /* set TS frequency */
|
||||
+ if (dev->ts_clock_freq) {
|
||||
+ memcpy(cmd.args, "\x14\x00\x0d\x10", 4);
|
||||
+ cmd.args[4] = ((dev->ts_clock_freq / 10000) >> 0) & 0xff;
|
||||
+ cmd.args[5] = ((dev->ts_clock_freq / 10000) >> 8) & 0xff;
|
||||
+ cmd.wlen = 6;
|
||||
+ cmd.rlen = 4;
|
||||
+ ret = si2168_cmd_execute(client, &cmd);
|
||||
+ if (ret)
|
||||
+ goto err;
|
||||
+ }
|
||||
+
|
||||
memcpy(cmd.args, "\x14\x00\x08\x10\xd7\x05", 6);
|
||||
cmd.args[5] |= dev->ts_clock_inv ? 0x00 : 0x10;
|
||||
cmd.wlen = 6;
|
||||
@@ -1057,6 +1071,10 @@ static int si2168_probe(struct i2c_client *client,
|
||||
dev->ts_mode = config->ts_mode;
|
||||
dev->ts_clock_inv = config->ts_clock_inv;
|
||||
dev->ts_clock_gapped = config->ts_clock_gapped;
|
||||
+ dev->ts_clock_mode = config->ts_clock_mode;
|
||||
+ if (dev->ts_clock_mode == 0)
|
||||
+ dev->ts_clock_mode = SI2168_TS_CLOCK_MODE_AUTO_ADAPT;
|
||||
+ dev->ts_clock_freq = config->ts_clock_freq;
|
||||
dev->spectral_inversion = config->spectral_inversion;
|
||||
|
||||
dev_info(&client->dev, "Silicon Labs Si2168-%c%d%d successfully identified\n",
|
||||
diff --git a/drivers/media/dvb-frontends/si2168.h b/drivers/media/dvb-frontends/si2168.h
|
||||
index d519edd..3f52ee8 100644
|
||||
--- a/drivers/media/dvb-frontends/si2168.h
|
||||
+++ b/drivers/media/dvb-frontends/si2168.h
|
||||
@@ -47,6 +47,14 @@ struct si2168_config {
|
||||
/* TS clock gapped */
|
||||
bool ts_clock_gapped;
|
||||
|
||||
+ /* TS clock mode */
|
||||
+#define SI2168_TS_CLOCK_MODE_AUTO_ADAPT 0x01
|
||||
+#define SI2168_TS_CLOCK_MODE_MANUAL 0x02
|
||||
+ u8 ts_clock_mode;
|
||||
+
|
||||
+ /* TS clock frequency (for manual mode) */
|
||||
+ u32 ts_clock_freq;
|
||||
+
|
||||
/* Inverted spectrum */
|
||||
bool spectral_inversion;
|
||||
};
|
||||
diff --git a/drivers/media/dvb-frontends/si2168_priv.h b/drivers/media/dvb-frontends/si2168_priv.h
|
||||
index 2d362e1..8173d6c 100644
|
||||
--- a/drivers/media/dvb-frontends/si2168_priv.h
|
||||
+++ b/drivers/media/dvb-frontends/si2168_priv.h
|
||||
@@ -48,6 +48,8 @@ struct si2168_dev {
|
||||
u8 ts_mode;
|
||||
bool ts_clock_inv;
|
||||
bool ts_clock_gapped;
|
||||
+ u8 ts_clock_mode;
|
||||
+ u32 ts_clock_freq;
|
||||
bool spectral_inversion;
|
||||
};
|
||||
|
||||
diff --git a/drivers/media/usb/dvb-usb-v2/dvbsky.c b/drivers/media/usb/dvb-usb-v2/dvbsky.c
|
||||
index e28bd88..4a4c6ae 100644
|
||||
--- a/drivers/media/usb/dvb-usb-v2/dvbsky.c
|
||||
+++ b/drivers/media/usb/dvb-usb-v2/dvbsky.c
|
||||
@@ -583,6 +583,66 @@ static int dvbsky_mygica_t230c_attach(struct dvb_usb_adapter *adap)
|
||||
return 0;
|
||||
}
|
||||
|
||||
+static int dvbsky_mygica_t230c_v2_attach(struct dvb_usb_adapter *adap)
|
||||
+{
|
||||
+ struct dvbsky_state *state = adap_to_priv(adap);
|
||||
+ struct dvb_usb_device *d = adap_to_d(adap);
|
||||
+ struct i2c_adapter *i2c_adapter;
|
||||
+ struct i2c_client *client_demod, *client_tuner;
|
||||
+ struct i2c_board_info info;
|
||||
+ struct si2168_config si2168_config;
|
||||
+ struct si2157_config si2157_config;
|
||||
+
|
||||
+ /* attach demod */
|
||||
+ memset(&si2168_config, 0, sizeof(si2168_config));
|
||||
+ si2168_config.i2c_adapter = &i2c_adapter;
|
||||
+ si2168_config.fe = &adap->fe[0];
|
||||
+ si2168_config.ts_mode = SI2168_TS_PARALLEL;
|
||||
+ si2168_config.ts_clock_inv = 1;
|
||||
+ si2168_config.ts_clock_mode = SI2168_TS_CLOCK_MODE_MANUAL;
|
||||
+ si2168_config.ts_clock_freq = 10000000;
|
||||
+ memset(&info, 0, sizeof(struct i2c_board_info));
|
||||
+ strlcpy(info.type, "si2168", sizeof(info.type));
|
||||
+ info.addr = 0x64;
|
||||
+ info.platform_data = &si2168_config;
|
||||
+
|
||||
+ request_module("si2168");
|
||||
+ client_demod = i2c_new_device(&d->i2c_adap, &info);
|
||||
+ if (!client_demod || !client_demod->dev.driver)
|
||||
+ goto fail_demod_device;
|
||||
+ if (!try_module_get(client_demod->dev.driver->owner))
|
||||
+ goto fail_demod_module;
|
||||
+
|
||||
+ /* attach tuner */
|
||||
+ memset(&si2157_config, 0, sizeof(si2157_config));
|
||||
+ si2157_config.fe = adap->fe[0];
|
||||
+ si2157_config.if_port = 0;
|
||||
+ memset(&info, 0, sizeof(struct i2c_board_info));
|
||||
+ strlcpy(info.type, "si2141", sizeof(info.type));
|
||||
+ info.addr = 0x60;
|
||||
+ info.platform_data = &si2157_config;
|
||||
+
|
||||
+ request_module("si2157");
|
||||
+ client_tuner = i2c_new_device(i2c_adapter, &info);
|
||||
+ if (!client_tuner || !client_tuner->dev.driver)
|
||||
+ goto fail_tuner_device;
|
||||
+ if (!try_module_get(client_tuner->dev.driver->owner))
|
||||
+ goto fail_tuner_module;
|
||||
+
|
||||
+ state->i2c_client_demod = client_demod;
|
||||
+ state->i2c_client_tuner = client_tuner;
|
||||
+ return 0;
|
||||
+
|
||||
+fail_tuner_module:
|
||||
+ i2c_unregister_device(client_tuner);
|
||||
+fail_tuner_device:
|
||||
+ module_put(client_demod->dev.driver->owner);
|
||||
+fail_demod_module:
|
||||
+ i2c_unregister_device(client_demod);
|
||||
+fail_demod_device:
|
||||
+ return -ENODEV;
|
||||
+}
|
||||
+
|
||||
|
||||
static int dvbsky_identify_state(struct dvb_usb_device *d, const char **name)
|
||||
{
|
||||
@@ -762,6 +822,33 @@ static struct dvb_usb_device_properties mygica_t230c_props = {
|
||||
}
|
||||
};
|
||||
|
||||
+static struct dvb_usb_device_properties mygica_t230c_v2_props = {
|
||||
+ .driver_name = KBUILD_MODNAME,
|
||||
+ .owner = THIS_MODULE,
|
||||
+ .adapter_nr = adapter_nr,
|
||||
+ .size_of_priv = sizeof(struct dvbsky_state),
|
||||
+
|
||||
+ .generic_bulk_ctrl_endpoint = 0x01,
|
||||
+ .generic_bulk_ctrl_endpoint_response = 0x81,
|
||||
+ .generic_bulk_ctrl_delay = DVBSKY_MSG_DELAY,
|
||||
+
|
||||
+ .i2c_algo = &dvbsky_i2c_algo,
|
||||
+ .frontend_attach = dvbsky_mygica_t230c_v2_attach,
|
||||
+ .init = dvbsky_init,
|
||||
+ .get_rc_config = dvbsky_get_rc_config,
|
||||
+ .streaming_ctrl = dvbsky_streaming_ctrl,
|
||||
+ .identify_state = dvbsky_identify_state,
|
||||
+ .exit = dvbsky_exit,
|
||||
+
|
||||
+ .num_adapters = 1,
|
||||
+ .adapter = {
|
||||
+ {
|
||||
+ .stream = DVB_USB_STREAM_BULK(0x82, 8, 4096),
|
||||
+ }
|
||||
+ }
|
||||
+};
|
||||
+
|
||||
+
|
||||
static const struct usb_device_id dvbsky_id_table[] = {
|
||||
{ DVB_USB_DEVICE(0x0572, 0x6831,
|
||||
&dvbsky_s960_props, "DVBSky S960/S860", RC_MAP_DVBSKY) },
|
||||
@@ -797,6 +884,9 @@ static const struct usb_device_id dvbsky_id_table[] = {
|
||||
{ DVB_USB_DEVICE(USB_VID_CONEXANT, USB_PID_MYGICA_T230C,
|
||||
&mygica_t230c_props, "MyGica Mini DVB-T2 USB Stick T230C",
|
||||
RC_MAP_TOTAL_MEDIA_IN_HAND_02) },
|
||||
+ { DVB_USB_DEVICE(USB_VID_CONEXANT, USB_PID_MYGICA_T230C_V2,
|
||||
+ &mygica_t230c_v2_props, "MyGica Mini DVB-T2 USB Stick T230C v2",
|
||||
+ RC_MAP_TOTAL_MEDIA_IN_HAND_02) },
|
||||
{ }
|
||||
};
|
||||
MODULE_DEVICE_TABLE(usb, dvbsky_id_table);
|
||||
diff --git a/include/media/dvb-usb-ids.h b/include/media/dvb-usb-ids.h
|
||||
index f9e73b4..d606248 100644
|
||||
--- a/include/media/dvb-usb-ids.h
|
||||
+++ b/include/media/dvb-usb-ids.h
|
||||
@@ -387,6 +387,7 @@
|
||||
#define USB_PID_MYGICA_D689 0xd811
|
||||
#define USB_PID_MYGICA_T230 0xc688
|
||||
#define USB_PID_MYGICA_T230C 0xc689
|
||||
+#define USB_PID_MYGICA_T230C_V2 0xc68a
|
||||
#define USB_PID_ELGATO_EYETV_DIVERSITY 0x0011
|
||||
#define USB_PID_ELGATO_EYETV_DTT 0x0021
|
||||
#define USB_PID_ELGATO_EYETV_DTT_2 0x003f
|
||||
--
|
||||
2.17.1
|
||||
|
@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="media_tree_cc"
|
||||
PKG_VERSION="2019-03-08"
|
||||
PKG_SHA256="e3394cb051c9bd450e84f6597072fe65ab7d1a45113cfbe5027dd9137129834f"
|
||||
PKG_VERSION="2019-05-12"
|
||||
PKG_SHA256="55bd8b54c83110a30d8ad44761e888a4bad4745f1ae4765dcf44f2752fc96419"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://bitbucket.org/CrazyCat/media_build/downloads/"
|
||||
PKG_URL="$DISTRO_SRC/$PKG_NAME-$PKG_VERSION.tar.bz2"
|
||||
|
@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="digital_devices"
|
||||
PKG_VERSION="e3601828472485b299495ec15dcd7e4cc4c770a3"
|
||||
PKG_SHA256="2e75a97602cd7512655020d7147a18eee76a9b7befa2aaca82d1548a0995c313"
|
||||
PKG_VERSION="040a1c58b660781297acc5eda09d934ced245c5e"
|
||||
PKG_SHA256="a0d7e8e78bc9e56b014d61585506dcb5fef4fa8b31d5f5e5aeaabb98343a3611"
|
||||
PKG_ARCH="x86_64"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://github.com/DigitalDevices/dddvb/"
|
||||
|
@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="dvb-latest"
|
||||
PKG_VERSION="c23276037794bae357fa8d23e3a4f11af9ad46e9"
|
||||
PKG_SHA256="c69d5c6af435887bd46d8da4816f724905e36fd7d080c8e1c437fbe4848ea813"
|
||||
PKG_VERSION="d121a2bedf6dd541c6182041142ec54fd94760ab"
|
||||
PKG_SHA256="45dcd91f283ee9cfd7a75b291ab40c6b25d054362960c63d5a806db9b9489f70"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://git.linuxtv.org/media_build.git"
|
||||
PKG_URL="https://git.linuxtv.org/media_build.git/snapshot/${PKG_VERSION}.tar.gz"
|
||||
|
@ -3,8 +3,8 @@
|
||||
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="RTL8192CU"
|
||||
PKG_VERSION="d7c7e6aa73fc457cfc5e5272878d111c657ce6dc"
|
||||
PKG_SHA256="3b7a4b198913fa45958c7309e0358c34628d791038a473f6d4e95bcf70b7d56f"
|
||||
PKG_VERSION="f32ef3984db7c7f7644edec0fa28a63a47b1a7d6"
|
||||
PKG_SHA256="7e8df7cce0918630121c7493a6333d392b3099b1126e8c355aa221cee032c80b"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://github.com/pvaret/rtl8192cu-fixes"
|
||||
PKG_URL="$PKG_SITE/archive/$PKG_VERSION.tar.gz"
|
||||
|
@ -3,8 +3,8 @@
|
||||
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="RTL8192DU"
|
||||
PKG_VERSION="3105cd3179d5e60a7aa675611a3592a45b29bfcb"
|
||||
PKG_SHA256="0a19e86192418d4179def917a9cea3aa0f2f2da7c44a520c085b9d78d9d2c09e"
|
||||
PKG_VERSION="72b53f8a6c2a6696d60791df4455c3073fffc4e4"
|
||||
PKG_SHA256="dec3cc45601c2c6dab47816523cb5a5731393d34cc75ec0f96a91191d3563fdd"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://github.com/lwfinger/rtl8192du"
|
||||
PKG_URL="https://github.com/lwfinger/rtl8192du/archive/$PKG_VERSION.tar.gz"
|
||||
|
@ -3,8 +3,8 @@
|
||||
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="RTL8192EU"
|
||||
PKG_VERSION="b63646fb61fec4895f0fd4aec1a0cb0e8873eaeb"
|
||||
PKG_SHA256="7e24457f371121e1f587ec759b3338bc9b63bd03632840a11076791155c0c93f"
|
||||
PKG_VERSION="0a7199b457b25edc4d9534158a068e486b1c8bb0"
|
||||
PKG_SHA256="defee6fda236bc9d77cd5cf0ceca8e86f820a1f9fa5d63c5ca7c369be1a3513e"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://github.com/Mange/rtl8192eu-linux-driver"
|
||||
PKG_URL="https://github.com/Mange/rtl8192eu-linux-driver/archive/$PKG_VERSION.tar.gz"
|
||||
|
@ -3,8 +3,8 @@
|
||||
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="RTL8812AU"
|
||||
PKG_VERSION="7c257daf52d0aac298c13135bd3ff5f388edc72b"
|
||||
PKG_SHA256="88eaed2f0b394a36f806f02bd245e7bd181e2aaafc2b7ff4521f4adb2fa6dc29"
|
||||
PKG_VERSION="bdfef37665b34be7a84835fba97e44447b30f98c"
|
||||
PKG_SHA256="44ccdeb90da2e750330108e71e6986e1a9000ba2e6b5709460a271d570a75769"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://github.com/MilhouseVH/RTL8812AU"
|
||||
PKG_URL="https://github.com/MilhouseVH/RTL8812AU/archive/$PKG_VERSION.tar.gz"
|
||||
|
@ -0,0 +1,68 @@
|
||||
From aa1fc45ace58d802d038857b6fed8af9d771fbcc Mon Sep 17 00:00:00 2001
|
||||
From: MilhouseVH <milhouseVH.github@nmacleod.com>
|
||||
Date: Mon, 18 Mar 2019 16:29:45 +0000
|
||||
Subject: [PATCH] get rid of legacy 'get_ds()' function
|
||||
|
||||
https://github.com/torvalds/linux/commit/736706bee3298208343a76096370e4f6a5c55915
|
||||
---
|
||||
x86-32/src/wl/sys/wl_cfg80211_hybrid.c | 2 +-
|
||||
x86-32/src/wl/sys/wl_iw.c | 2 +-
|
||||
x86-64/src/wl/sys/wl_cfg80211_hybrid.c | 2 +-
|
||||
x86-64/src/wl/sys/wl_iw.c | 2 +-
|
||||
4 files changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/x86-32/src/wl/sys/wl_cfg80211_hybrid.c b/x86-32/src/wl/sys/wl_cfg80211_hybrid.c
|
||||
index 7b606e0..51c81bc 100644
|
||||
--- a/x86-32/src/wl/sys/wl_cfg80211_hybrid.c
|
||||
+++ b/x86-32/src/wl/sys/wl_cfg80211_hybrid.c
|
||||
@@ -450,7 +450,7 @@ wl_dev_ioctl(struct net_device *dev, u32 cmd, void *arg, u32 len)
|
||||
ifr.ifr_data = (caddr_t)&ioc;
|
||||
|
||||
fs = get_fs();
|
||||
- set_fs(get_ds());
|
||||
+ set_fs(KERNEL_DS);
|
||||
#if defined(WL_USE_NETDEV_OPS)
|
||||
err = dev->netdev_ops->ndo_do_ioctl(dev, &ifr, SIOCDEVPRIVATE);
|
||||
#else
|
||||
diff --git a/x86-32/src/wl/sys/wl_iw.c b/x86-32/src/wl/sys/wl_iw.c
|
||||
index c4c610b..9c3c74e 100644
|
||||
--- a/x86-32/src/wl/sys/wl_iw.c
|
||||
+++ b/x86-32/src/wl/sys/wl_iw.c
|
||||
@@ -117,7 +117,7 @@ dev_wlc_ioctl(
|
||||
ifr.ifr_data = (caddr_t) &ioc;
|
||||
|
||||
fs = get_fs();
|
||||
- set_fs(get_ds());
|
||||
+ set_fs(KERNEL_DS);
|
||||
#if defined(WL_USE_NETDEV_OPS)
|
||||
ret = dev->netdev_ops->ndo_do_ioctl(dev, &ifr, SIOCDEVPRIVATE);
|
||||
#else
|
||||
diff --git a/x86-64/src/wl/sys/wl_cfg80211_hybrid.c b/x86-64/src/wl/sys/wl_cfg80211_hybrid.c
|
||||
index 7b606e0..51c81bc 100644
|
||||
--- a/x86-64/src/wl/sys/wl_cfg80211_hybrid.c
|
||||
+++ b/x86-64/src/wl/sys/wl_cfg80211_hybrid.c
|
||||
@@ -450,7 +450,7 @@ wl_dev_ioctl(struct net_device *dev, u32 cmd, void *arg, u32 len)
|
||||
ifr.ifr_data = (caddr_t)&ioc;
|
||||
|
||||
fs = get_fs();
|
||||
- set_fs(get_ds());
|
||||
+ set_fs(KERNEL_DS);
|
||||
#if defined(WL_USE_NETDEV_OPS)
|
||||
err = dev->netdev_ops->ndo_do_ioctl(dev, &ifr, SIOCDEVPRIVATE);
|
||||
#else
|
||||
diff --git a/x86-64/src/wl/sys/wl_iw.c b/x86-64/src/wl/sys/wl_iw.c
|
||||
index c4c610b..9c3c74e 100644
|
||||
--- a/x86-64/src/wl/sys/wl_iw.c
|
||||
+++ b/x86-64/src/wl/sys/wl_iw.c
|
||||
@@ -117,7 +117,7 @@ dev_wlc_ioctl(
|
||||
ifr.ifr_data = (caddr_t) &ioc;
|
||||
|
||||
fs = get_fs();
|
||||
- set_fs(get_ds());
|
||||
+ set_fs(KERNEL_DS);
|
||||
#if defined(WL_USE_NETDEV_OPS)
|
||||
ret = dev->netdev_ops->ndo_do_ioctl(dev, &ifr, SIOCDEVPRIVATE);
|
||||
#else
|
||||
--
|
||||
2.14.1
|
||||
|
@ -1,27 +0,0 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="gpu-sunxi-midgard"
|
||||
PKG_VERSION="r22p0-01rel0"
|
||||
PKG_SHA256="02f80e777dc945d645fce888afc926555ec61b70079c1da289bf1a3a9544452f"
|
||||
PKG_ARCH="arm aarch64"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://developer.arm.com/products/software/mali-drivers/"
|
||||
PKG_URL="https://developer.arm.com/-/media/Files/downloads/mali-drivers/kernel/mali-midgard-gpu/TX011-SW-99002-$PKG_VERSION.tgz"
|
||||
PKG_DEPENDS_TARGET="toolchain linux"
|
||||
PKG_NEED_UNPACK="$LINUX_DEPENDS"
|
||||
PKG_LONGDESC="gpu-sunxi-midgard: Linux drivers for Mali GPUs found in Allwinner SoCs"
|
||||
PKG_TOOLCHAIN="manual"
|
||||
PKG_IS_KERNEL_PKG="yes"
|
||||
|
||||
make_target() {
|
||||
kernel_make -C $(kernel_path) M=$PKG_BUILD/driver/product/kernel/drivers/gpu/arm/midgard/ \
|
||||
EXTRA_CFLAGS="-DCONFIG_MALI_PLATFORM_DEVICETREE -DCONFIG_MALI_BACKEND=gpu -DCONFIG_MALI_DEVFREQ" CONFIG_MALI_DEVFREQ=y \
|
||||
CONFIG_MALI_MIDGARD=m CONFIG_MALI_PLATFORM_DEVICETREE=y CONFIG_MALI_BACKEND=gpu modules
|
||||
}
|
||||
|
||||
makeinstall_target() {
|
||||
kernel_make -C $(kernel_path) M=$PKG_BUILD/driver/product/kernel/drivers/gpu/arm/midgard/ \
|
||||
INSTALL_MOD_PATH=$INSTALL/$(get_kernel_overlay_dir) INSTALL_MOD_STRIP=1 DEPMOD=: \
|
||||
modules_install
|
||||
}
|
@ -1,89 +0,0 @@
|
||||
diff -Nur a/driver/product/kernel/drivers/gpu/arm/midgard/mali_kbase_core_linux.c b/driver/product/kernel/drivers/gpu/arm/midgard/mali_kbase_core_linux.c
|
||||
--- a/driver/product/kernel/drivers/gpu/arm/midgard/mali_kbase_core_linux.c 2018-03-06 18:05:25.000000000 +0100
|
||||
+++ b/driver/product/kernel/drivers/gpu/arm/midgard/mali_kbase_core_linux.c 2018-04-04 22:26:50.310273475 +0200
|
||||
@@ -3225,6 +3225,20 @@
|
||||
}
|
||||
#endif /* LINUX_VERSION_CODE >= 3, 12, 0 */
|
||||
|
||||
+ kbdev->mali_rst = of_reset_control_get_by_index(kbdev->dev->of_node, 0);
|
||||
+ if (IS_ERR(kbdev->mali_rst)) {
|
||||
+ dev_err(kbdev->dev, "Couldn't get mali reset line\n");
|
||||
+ err = PTR_ERR(kbdev->mali_rst);
|
||||
+ goto fail;
|
||||
+ }
|
||||
+
|
||||
+ kbdev->bus_clk = of_clk_get(kbdev->dev->of_node, 1);
|
||||
+ if (IS_ERR(kbdev->bus_clk)) {
|
||||
+ dev_err(kbdev->dev, "Couldn't get the mali bus clock\n");
|
||||
+ err = PTR_ERR(kbdev->bus_clk);
|
||||
+ goto fail;
|
||||
+ }
|
||||
+
|
||||
kbdev->clock = of_clk_get(kbdev->dev->of_node, 0);
|
||||
if (IS_ERR_OR_NULL(kbdev->clock)) {
|
||||
err = PTR_ERR(kbdev->clock);
|
||||
@@ -3236,6 +3250,8 @@
|
||||
dev_info(kbdev->dev, "Continuing without Mali clock control\n");
|
||||
/* Allow probe to continue without clock. */
|
||||
} else {
|
||||
+ reset_control_deassert(kbdev->mali_rst);
|
||||
+ clk_prepare_enable(kbdev->bus_clk);
|
||||
err = clk_prepare_enable(kbdev->clock);
|
||||
if (err) {
|
||||
dev_err(kbdev->dev,
|
||||
@@ -3268,6 +3284,16 @@
|
||||
kbdev->clock = NULL;
|
||||
}
|
||||
|
||||
+if (kbdev->bus_clk) {
|
||||
+ clk_put(kbdev->bus_clk);
|
||||
+ kbdev->bus_clk = NULL;
|
||||
+}
|
||||
+
|
||||
+if (kbdev->mali_rst) {
|
||||
+ reset_control_put(kbdev->mali_rst);
|
||||
+ kbdev->mali_rst = NULL;
|
||||
+}
|
||||
+
|
||||
#ifdef CONFIG_REGULATOR
|
||||
if (NULL != kbdev->regulator) {
|
||||
regulator_put(kbdev->regulator);
|
||||
@@ -3293,6 +3319,18 @@
|
||||
kbdev->clock = NULL;
|
||||
}
|
||||
|
||||
+ if (kbdev->bus_clk) {
|
||||
+ clk_disable_unprepare(kbdev->bus_clk);
|
||||
+ clk_put(kbdev->bus_clk);
|
||||
+ kbdev->bus_clk = NULL;
|
||||
+ }
|
||||
+
|
||||
+ if (kbdev->mali_rst) {
|
||||
+ reset_control_assert(kbdev->mali_rst);
|
||||
+ reset_control_put(kbdev->mali_rst);
|
||||
+ kbdev->mali_rst = NULL;
|
||||
+ }
|
||||
+
|
||||
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 12, 0)) && defined(CONFIG_OF) \
|
||||
&& defined(CONFIG_REGULATOR)
|
||||
if (kbdev->regulator) {
|
||||
diff -Nur a/driver/product/kernel/drivers/gpu/arm/midgard/mali_kbase_defs.h b/driver/product/kernel/drivers/gpu/arm/midgard/mali_kbase_defs.h
|
||||
--- a/driver/product/kernel/drivers/gpu/arm/midgard/mali_kbase_defs.h 2018-03-06 18:05:25.000000000 +0100
|
||||
+++ b/driver/product/kernel/drivers/gpu/arm/midgard/mali_kbase_defs.h 2018-04-04 22:05:56.017916193 +0200
|
||||
@@ -68,6 +68,7 @@
|
||||
#endif /* CONFIG_MALI_DEVFREQ */
|
||||
|
||||
#include <linux/clk.h>
|
||||
+#include <linux/reset.h>
|
||||
#include <linux/regulator/consumer.h>
|
||||
|
||||
#if defined(CONFIG_PM_RUNTIME) || \
|
||||
@@ -1434,6 +1435,8 @@
|
||||
} irqs[3];
|
||||
|
||||
struct clk *clock;
|
||||
+ struct clk *bus_clk;
|
||||
+ struct reset_control *mali_rst;
|
||||
#ifdef CONFIG_REGULATOR
|
||||
struct regulator *regulator;
|
||||
#endif
|
File diff suppressed because it is too large
Load Diff
@ -1,98 +0,0 @@
|
||||
From ee7f0a678fff8316ec0be973f1b3780a63f50942 Mon Sep 17 00:00:00 2001
|
||||
From: Myy Miouyouyou <myy@miouyouyou.fr>
|
||||
Date: Mon, 11 Dec 2017 21:04:56 +0100
|
||||
Subject: [PATCH] gpu: arm: Midgard: setup_timer() -> timer_setup()
|
||||
|
||||
This patch is due the changes provoked by series of commit ending
|
||||
at 513ae785c63c30741e46f43960213d4ae5382ec0, and removing the
|
||||
setup_timer macros.
|
||||
The previous patches replaced made sure that timers were all set
|
||||
up with setup_timer and replaced setup_timer calls by timer_setup
|
||||
calls.
|
||||
|
||||
This changed was introduced in the 4.15-rc1.
|
||||
|
||||
Signed-off-by: Myy Miouyouyou <myy@miouyouyou.fr>
|
||||
---
|
||||
drivers/gpu/arm/midgard/mali_kbase.h | 2 +-
|
||||
drivers/gpu/arm/midgard/mali_kbase_context.c | 4 ++--
|
||||
drivers/gpu/arm/midgard/mali_kbase_softjobs.c | 4 ++--
|
||||
drivers/gpu/arm/midgard/mali_kbase_tlstream.c | 6 ++----
|
||||
4 files changed, 7 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/driver/product/kernel/drivers/gpu/arm/midgard/mali_kbase.h b/driver/product/kernel/drivers/gpu/arm/midgard/mali_kbase.h
|
||||
index a4ceab9e0..27bde3b71 100644
|
||||
--- a/driver/product/kernel/drivers/gpu/arm/midgard/mali_kbase.h
|
||||
+++ b/driver/product/kernel/drivers/gpu/arm/midgard/mali_kbase.h
|
||||
@@ -213,7 +213,7 @@ int kbase_soft_event_update(struct kbase_context *kctx,
|
||||
|
||||
bool kbase_replay_process(struct kbase_jd_atom *katom);
|
||||
|
||||
-void kbasep_soft_job_timeout_worker(unsigned long data);
|
||||
+void kbasep_soft_job_timeout_worker(struct timer_list *t);
|
||||
void kbasep_complete_triggered_soft_events(struct kbase_context *kctx, u64 evt);
|
||||
|
||||
/* api used internally for register access. Contains validation and tracing */
|
||||
diff --git a/driver/product/kernel/drivers/gpu/arm/midgard/mali_kbase_context.c b/driver/product/kernel/drivers/gpu/arm/midgard/mali_kbase_context.c
|
||||
index f43db48fd..589df768c 100644
|
||||
--- a/driver/product/kernel/drivers/gpu/arm/midgard/mali_kbase_context.c
|
||||
+++ b/driver/product/kernel/drivers/gpu/arm/midgard/mali_kbase_context.c
|
||||
@@ -165,9 +165,9 @@ kbase_create_context(struct kbase_device *kbdev, bool is_compat)
|
||||
|
||||
mutex_init(&kctx->vinstr_cli_lock);
|
||||
|
||||
- setup_timer(&kctx->soft_job_timeout,
|
||||
+ timer_setup(&kctx->soft_job_timeout,
|
||||
kbasep_soft_job_timeout_worker,
|
||||
- (uintptr_t)kctx);
|
||||
+ 0);
|
||||
|
||||
return kctx;
|
||||
|
||||
diff --git a/driver/product/kernel/drivers/gpu/arm/midgard/mali_kbase_softjobs.c b/driver/product/kernel/drivers/gpu/arm/midgard/mali_kbase_softjobs.c
|
||||
index 127ada07f..019edf562 100644
|
||||
--- a/driver/product/kernel/drivers/gpu/arm/midgard/mali_kbase_softjobs.c
|
||||
+++ b/driver/product/kernel/drivers/gpu/arm/midgard/mali_kbase_softjobs.c
|
||||
@@ -370,9 +370,9 @@ static void kbase_fence_debug_timeout(struct kbase_jd_atom *katom)
|
||||
}
|
||||
#endif /* CONFIG_MALI_FENCE_DEBUG */
|
||||
|
||||
-void kbasep_soft_job_timeout_worker(unsigned long data)
|
||||
+void kbasep_soft_job_timeout_worker(struct timer_list *t)
|
||||
{
|
||||
- struct kbase_context *kctx = (struct kbase_context *)data;
|
||||
+ struct kbase_context *kctx = from_timer(kctx, t, soft_job_timeout);
|
||||
u32 timeout_ms = (u32)atomic_read(
|
||||
&kctx->kbdev->js_data.soft_job_timeout_ms);
|
||||
struct timer_list *timer = &kctx->soft_job_timeout;
|
||||
diff --git a/driver/product/kernel/drivers/gpu/arm/midgard/mali_kbase_tlstream.c b/driver/product/kernel/drivers/gpu/arm/midgard/mali_kbase_tlstream.c
|
||||
index d01aa23b2..11d8b59c7 100644
|
||||
--- a/driver/product/kernel/drivers/gpu/arm/midgard/mali_kbase_tlstream.c
|
||||
+++ b/driver/product/kernel/drivers/gpu/arm/midgard/mali_kbase_tlstream.c
|
||||
@@ -1042,13 +1042,11 @@ static void kbasep_tlstream_flush_stream(enum tl_stream_type stype)
|
||||
* Timer is executed periodically to check if any of the stream contains
|
||||
* buffer ready to be submitted to user space.
|
||||
*/
|
||||
-static void kbasep_tlstream_autoflush_timer_callback(unsigned long data)
|
||||
+static void kbasep_tlstream_autoflush_timer_callback(struct timer_list *unused)
|
||||
{
|
||||
enum tl_stream_type stype;
|
||||
int rcode;
|
||||
|
||||
- CSTD_UNUSED(data);
|
||||
-
|
||||
for (stype = 0; stype < TL_STREAM_TYPE_COUNT; stype++) {
|
||||
struct tl_stream *stream = tl_stream[stype];
|
||||
unsigned long flags;
|
||||
@@ -1371,7 +1369,7 @@ int kbase_tlstream_init(void)
|
||||
|
||||
/* Initialize autoflush timer. */
|
||||
atomic_set(&autoflush_timer_active, 0);
|
||||
- setup_timer(&autoflush_timer,
|
||||
+ timer_setup(&autoflush_timer,
|
||||
kbasep_tlstream_autoflush_timer_callback,
|
||||
0);
|
||||
|
||||
--
|
||||
2.14.1
|
||||
|
@ -1,35 +0,0 @@
|
||||
From 44a5ba2e969adfb64c84f294c16490194988dcc7 Mon Sep 17 00:00:00 2001
|
||||
From: Myy Miouyouyou <myy@miouyouyou.fr>
|
||||
Date: Sun, 24 Dec 2017 19:30:12 +0100
|
||||
Subject: [PATCH] drivers: gpu: Arm: Midgard: Replace ACCESS_ONCE by READ_ONCE
|
||||
|
||||
The ACCESS_ONCE macro has now been removed in the 4.15.0-rc4,
|
||||
and every ACCESS_ONCE call has been replaced by either READ_ONCE or
|
||||
WRITE_ONCE calls.
|
||||
Since the Midgard GPU drivers are not mainlined, the change
|
||||
needs to be applied manually.
|
||||
|
||||
See commit b899a850431e2dd0943205a63a68573f3e312d0d and its parents,
|
||||
for more informations.
|
||||
|
||||
Signed-off-by: Myy Miouyouyou <myy@miouyouyou.fr>
|
||||
---
|
||||
drivers/gpu/arm/midgard/mali_kbase_mem.h | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/driver/product/kernel/drivers/gpu/arm/midgard/mali_kbase_mem.h b/driver/product/kernel/drivers/gpu/arm/midgard/mali_kbase_mem.h
|
||||
index e9a8d5dd6..eac685699 100644
|
||||
--- a/driver/product/kernel/drivers/gpu/arm/midgard/mali_kbase_mem.h
|
||||
+++ b/driver/product/kernel/drivers/gpu/arm/midgard/mali_kbase_mem.h
|
||||
@@ -591,7 +591,7 @@ void kbase_mem_pool_free_pages(struct kbase_mem_pool *pool, size_t nr_pages,
|
||||
*/
|
||||
static inline size_t kbase_mem_pool_size(struct kbase_mem_pool *pool)
|
||||
{
|
||||
- return ACCESS_ONCE(pool->cur_size);
|
||||
+ return READ_ONCE(pool->cur_size);
|
||||
}
|
||||
|
||||
/**
|
||||
--
|
||||
2.14.1
|
||||
|
@ -1,32 +0,0 @@
|
||||
From 47e8aad9419ff8843a373c3e5aa2c9d261d8cd07 Mon Sep 17 00:00:00 2001
|
||||
From: Myy Miouyouyou <myy@miouyouyou.fr>
|
||||
Date: Mon, 23 Apr 2018 20:54:13 +0200
|
||||
Subject: [PATCH] gpu: arm: midgard: Remove sys_close references
|
||||
|
||||
sys_close is now replaced by ksys_close in an effort to remove
|
||||
in-kernel system calls references.
|
||||
|
||||
See 2ca2a09d6215fd9621aa3e2db7cc9428a61f2911 and
|
||||
https://lkml.org/lkml/2018/3/25/93 for more details.
|
||||
|
||||
Signed-off-by: Myy Miouyouyou <myy@miouyouyou.fr>
|
||||
---
|
||||
drivers/gpu/arm/midgard/mali_kbase_sync.h | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/driver/product/kernel/drivers/gpu/arm/midgard/mali_kbase_sync.h b/drivers/gpu/arm/midgard/mali_kbase_sync.h
|
||||
index de72147d..33b58059 100644
|
||||
--- a/driver/product/kernel/drivers/gpu/arm/midgard/mali_kbase_sync.h
|
||||
+++ b/driver/product/kernel/drivers/gpu/arm/midgard/mali_kbase_sync.h
|
||||
@@ -156,7 +156,7 @@ void kbase_sync_fence_out_remove(struct kbase_jd_atom *katom);
|
||||
*/
|
||||
static inline void kbase_sync_fence_close_fd(int fd)
|
||||
{
|
||||
- sys_close(fd);
|
||||
+ ksys_close(fd);
|
||||
}
|
||||
|
||||
/**
|
||||
--
|
||||
2.14.1
|
||||
|
@ -1,60 +0,0 @@
|
||||
diff -Nur a/driver/product/kernel/drivers/gpu/arm/midgard/mali_kbase_mem_linux.c c/driver/product/kernel/drivers/gpu/arm/midgard/mali_kbase_mem_linux.c
|
||||
--- a/driver/product/kernel/drivers/gpu/arm/midgard/mali_kbase_mem_linux.c 2018-12-01 17:49:08.000000000 +0100
|
||||
+++ c/driver/product/kernel/drivers/gpu/arm/midgard/mali_kbase_mem_linux.c 2018-12-01 20:27:42.057964019 +0100
|
||||
@@ -1668,6 +1668,7 @@
|
||||
struct kbase_cpu_mapping *map = vma->vm_private_data;
|
||||
pgoff_t rel_pgoff;
|
||||
size_t i;
|
||||
+ int ret = VM_FAULT_SIGBUS;
|
||||
pgoff_t addr;
|
||||
|
||||
KBASE_DEBUG_ASSERT(map);
|
||||
@@ -1693,9 +1694,9 @@
|
||||
addr = (pgoff_t)(vmf->address >> PAGE_SHIFT);
|
||||
#endif
|
||||
while (i < map->alloc->nents && (addr < vma->vm_end >> PAGE_SHIFT)) {
|
||||
- int ret = vm_insert_pfn(vma, addr << PAGE_SHIFT,
|
||||
+ ret = vmf_insert_pfn(vma, addr << PAGE_SHIFT,
|
||||
PFN_DOWN(as_phys_addr_t(map->alloc->pages[i])));
|
||||
- if (ret < 0 && ret != -EBUSY)
|
||||
+ if (unlikely(ret & VM_FAULT_ERROR))
|
||||
goto locked_bad_fault;
|
||||
|
||||
i++; addr++;
|
||||
@@ -1707,7 +1708,7 @@
|
||||
|
||||
locked_bad_fault:
|
||||
kbase_gpu_vm_unlock(map->kctx);
|
||||
- return VM_FAULT_SIGBUS;
|
||||
+ return ret;
|
||||
}
|
||||
|
||||
const struct vm_operations_struct kbase_vm_ops = {
|
||||
@@ -1776,10 +1777,11 @@
|
||||
phys_addr_t phys;
|
||||
|
||||
phys = as_phys_addr_t(page_array[i + start_off]);
|
||||
- err = vm_insert_pfn(vma, addr, PFN_DOWN(phys));
|
||||
- if (WARN_ON(err))
|
||||
+ err = vmf_insert_pfn(vma, addr, PFN_DOWN(phys));
|
||||
+ if (unlikely(WARN_ON(err & VM_FAULT_ERROR)))
|
||||
break;
|
||||
|
||||
+ err = 0;
|
||||
addr += PAGE_SIZE;
|
||||
}
|
||||
} else {
|
||||
diff -Nur a/driver/product/kernel/drivers/gpu/arm/midgard/mali_kbase_smc.c c/driver/product/kernel/drivers/gpu/arm/midgard/mali_kbase_smc.c
|
||||
--- a/driver/product/kernel/drivers/gpu/arm/midgard/mali_kbase_smc.c 2018-01-13 23:26:00.000000000 +0100
|
||||
+++ c/driver/product/kernel/drivers/gpu/arm/midgard/mali_kbase_smc.c 2018-12-01 20:03:30.071690693 +0100
|
||||
@@ -27,6 +27,10 @@
|
||||
|
||||
#include <linux/compiler.h>
|
||||
|
||||
+#ifndef __asmeq
|
||||
+#define __asmeq(x, y) ".ifnc " x "," y " ; .err ; .endif\n\t"
|
||||
+#endif
|
||||
+
|
||||
static noinline u64 invoke_smc_fid(u64 function_id,
|
||||
u64 arg0, u64 arg1, u64 arg2)
|
||||
{
|
@ -1,30 +0,0 @@
|
||||
diff -Nur a/driver/product/kernel/drivers/gpu/arm/midgard/mali_kbase_core_linux.c b/driver/product/kernel/drivers/gpu/arm/midgard/mali_kbase_core_linux.c
|
||||
--- a/driver/product/kernel/drivers/gpu/arm/midgard/mali_kbase_core_linux.c 2018-12-01 21:10:15.000000000 +0100
|
||||
+++ b/driver/product/kernel/drivers/gpu/arm/midgard/mali_kbase_core_linux.c 2018-12-01 23:28:48.956901556 +0100
|
||||
@@ -3815,12 +3815,18 @@
|
||||
"Continuing without Mali regulator control\n");
|
||||
/* Allow probe to continue without regulator */
|
||||
}
|
||||
+ err = regulator_enable(kbdev->regulator);
|
||||
+ if (err) {
|
||||
+ dev_err(kbdev->dev, "Failed to enable regulator\n");
|
||||
+ return err;
|
||||
+ }
|
||||
#endif /* LINUX_VERSION_CODE >= 3, 12, 0 */
|
||||
|
||||
kbdev->mali_rst = of_reset_control_get_by_index(kbdev->dev->of_node, 0);
|
||||
if (IS_ERR(kbdev->mali_rst)) {
|
||||
dev_err(kbdev->dev, "Couldn't get mali reset line\n");
|
||||
err = PTR_ERR(kbdev->mali_rst);
|
||||
+ kbdev->mali_rst = NULL;
|
||||
goto fail;
|
||||
}
|
||||
|
||||
@@ -3828,6 +3834,7 @@
|
||||
if (IS_ERR(kbdev->bus_clk)) {
|
||||
dev_err(kbdev->dev, "Couldn't get the mali bus clock\n");
|
||||
err = PTR_ERR(kbdev->bus_clk);
|
||||
+ kbdev->bus_clk = NULL;
|
||||
goto fail;
|
||||
}
|
||||
|
@ -1,15 +0,0 @@
|
||||
diff -Nur a/driver/product/kernel/drivers/gpu/arm/midgard/mali_kbase_gpuprops.c b/driver/product/kernel/drivers/gpu/arm/midgard/mali_kbase_gpuprops.c
|
||||
--- a/driver/product/kernel/drivers/gpu/arm/midgard/mali_kbase_gpuprops.c 2019-02-09 23:20:20.000000000 +0100
|
||||
+++ b/driver/product/kernel/drivers/gpu/arm/midgard/mali_kbase_gpuprops.c 2019-02-10 08:26:47.874751287 +0100
|
||||
@@ -243,7 +243,11 @@
|
||||
/* Populate the base_gpu_props structure */
|
||||
kbase_gpuprops_update_core_props_gpu_id(gpu_props);
|
||||
gpu_props->core_props.log2_program_counter_size = KBASE_GPU_PC_SIZE_LOG2;
|
||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,0,0)
|
||||
+ gpu_props->core_props.gpu_available_memory_size = totalram_pages() << PAGE_SHIFT;
|
||||
+#else
|
||||
gpu_props->core_props.gpu_available_memory_size = totalram_pages << PAGE_SHIFT;
|
||||
+#endif
|
||||
|
||||
for (i = 0; i < BASE_GPU_NUM_TEXTURE_FEATURES_REGISTERS; i++)
|
||||
gpu_props->core_props.texture_features[i] = gpu_props->raw_props.texture_features[i];
|
@ -1,28 +0,0 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="gpu-sunxi"
|
||||
PKG_VERSION="r9p0-01rel0"
|
||||
PKG_SHA256="7a67127341d17640c1fff5dad80258fb2a37c8a2121b81525fe2327e4532ce2b"
|
||||
PKG_ARCH="arm aarch64"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://developer.arm.com/products/software/mali-drivers/utgard-kernel"
|
||||
PKG_URL="https://developer.arm.com/-/media/Files/downloads/mali-drivers/kernel/mali-utgard-gpu/DX910-SW-99002-$PKG_VERSION.tgz"
|
||||
PKG_DEPENDS_TARGET="toolchain linux"
|
||||
PKG_NEED_UNPACK="$LINUX_DEPENDS"
|
||||
PKG_LONGDESC="gpu-sunxi: Linux drivers for Mali GPUs found in Allwinner SoCs"
|
||||
PKG_TOOLCHAIN="manual"
|
||||
PKG_IS_KERNEL_PKG="yes"
|
||||
|
||||
make_target() {
|
||||
kernel_make -C $(kernel_path) M=$PKG_BUILD/driver/src/devicedrv/mali/ \
|
||||
MALI_PLATFORM_FILES=platform/sunxi/sunxi.c \
|
||||
EXTRA_CFLAGS="-DMALI_FAKE_PLATFORM_DEVICE=1 -DCONFIG_MALI_DMA_BUF_MAP_ON_ATTACH" \
|
||||
CONFIG_MALI400=m
|
||||
}
|
||||
|
||||
makeinstall_target() {
|
||||
kernel_make -C $(kernel_path) M=$PKG_BUILD/driver/src/devicedrv/mali/ \
|
||||
INSTALL_MOD_PATH=$INSTALL/$(get_kernel_overlay_dir) INSTALL_MOD_STRIP=1 DEPMOD=: \
|
||||
modules_install
|
||||
}
|
@ -1,426 +0,0 @@
|
||||
From 2b56fc78a4acbffbdebf5b690035d1ba70ef592c Mon Sep 17 00:00:00 2001
|
||||
From: Maxime Ripard <maxime.ripard@free-electrons.com>
|
||||
Date: Tue, 29 Nov 2016 10:18:40 +0100
|
||||
Subject: [PATCH 4/4] mali: Add sunxi platform
|
||||
|
||||
Add a platform for the Mali GPU integrated in the Allwinner SoCs.
|
||||
|
||||
Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
|
||||
---
|
||||
src/devicedrv/mali/platform/sunxi/sunxi.c | 404 +++++++++++++++++++++++
|
||||
1 file changed, 404 insertions(+)
|
||||
create mode 100644 src/devicedrv/mali/platform/sunxi/sunxi.c
|
||||
|
||||
--- /dev/null
|
||||
+++ b/driver/src/devicedrv/mali/platform/sunxi/sunxi.c
|
||||
@@ -0,0 +1,410 @@
|
||||
+
|
||||
+#include <linux/clk.h>
|
||||
+#include <linux/clkdev.h>
|
||||
+#include <linux/cma.h>
|
||||
+#include <linux/delay.h>
|
||||
+#include <linux/dma-contiguous.h>
|
||||
+#include <linux/dma-mapping.h>
|
||||
+#include <linux/io.h>
|
||||
+#include <linux/kernel.h>
|
||||
+#include <linux/module.h>
|
||||
+#include <linux/of_address.h>
|
||||
+#include <linux/of_device.h>
|
||||
+#include <linux/of_irq.h>
|
||||
+#include <linux/of_reserved_mem.h>
|
||||
+#include <linux/pm_runtime.h>
|
||||
+#include <linux/reset.h>
|
||||
+#include <linux/slab.h>
|
||||
+
|
||||
+#include <linux/clk/clk-conf.h>
|
||||
+
|
||||
+#include <linux/mali/mali_utgard.h>
|
||||
+
|
||||
+#include "mali_kernel_linux.h"
|
||||
+
|
||||
+struct mali {
|
||||
+ struct clk *bus_clk;
|
||||
+ struct clk *core_clk;
|
||||
+
|
||||
+ struct reset_control *reset;
|
||||
+
|
||||
+ struct platform_device *dev;
|
||||
+};
|
||||
+
|
||||
+struct mali *mali;
|
||||
+
|
||||
+struct resource *mali_create_mp1_resources(unsigned long address,
|
||||
+ int irq_gp, int irq_gpmmu,
|
||||
+ int irq_pp0, int irq_ppmmu0,
|
||||
+ int *len)
|
||||
+{
|
||||
+ struct resource target[] = {
|
||||
+ MALI_GPU_RESOURCES_MALI400_MP1_PMU(address,
|
||||
+ irq_gp, irq_gpmmu,
|
||||
+ irq_pp0, irq_ppmmu0)
|
||||
+ };
|
||||
+ struct resource *res;
|
||||
+
|
||||
+ res = kzalloc(sizeof(target), GFP_KERNEL);
|
||||
+ if (!res)
|
||||
+ return NULL;
|
||||
+
|
||||
+ memcpy(res, target, sizeof(target));
|
||||
+
|
||||
+ *len = ARRAY_SIZE(target);
|
||||
+
|
||||
+ return res;
|
||||
+}
|
||||
+
|
||||
+struct resource *mali_create_mp2_resources(unsigned long address,
|
||||
+ int irq_gp, int irq_gpmmu,
|
||||
+ int irq_pp0, int irq_ppmmu0,
|
||||
+ int irq_pp1, int irq_ppmmu1,
|
||||
+ int *len)
|
||||
+{
|
||||
+ struct resource target[] = {
|
||||
+ MALI_GPU_RESOURCES_MALI400_MP2_PMU(address,
|
||||
+ irq_gp, irq_gpmmu,
|
||||
+ irq_pp0, irq_ppmmu0,
|
||||
+ irq_pp1, irq_ppmmu1)
|
||||
+ };
|
||||
+ struct resource *res;
|
||||
+
|
||||
+ res = kzalloc(sizeof(target), GFP_KERNEL);
|
||||
+ if (!res)
|
||||
+ return NULL;
|
||||
+
|
||||
+ memcpy(res, target, sizeof(target));
|
||||
+
|
||||
+ *len = ARRAY_SIZE(target);
|
||||
+
|
||||
+ return res;
|
||||
+}
|
||||
+
|
||||
+struct resource *mali_create_450mp4_resources(unsigned long address,
|
||||
+ int irq_gp, int irq_gpmmu,
|
||||
+ int irq_pp0, int irq_ppmmu0,
|
||||
+ int irq_pp1, int irq_ppmmu1,
|
||||
+ int irq_pp2, int irq_ppmmu2,
|
||||
+ int irq_pp3, int irq_ppmmu3,
|
||||
+ int irq_pp, int *len)
|
||||
+{
|
||||
+ struct resource target[] = {
|
||||
+ MALI_GPU_RESOURCES_MALI450_MP4(address,
|
||||
+ irq_gp, irq_gpmmu,
|
||||
+ irq_pp0, irq_ppmmu0,
|
||||
+ irq_pp1, irq_ppmmu1,
|
||||
+ irq_pp2, irq_ppmmu2,
|
||||
+ irq_pp3, irq_ppmmu3,
|
||||
+ irq_pp)
|
||||
+ };
|
||||
+ struct resource *res;
|
||||
+
|
||||
+ res = kzalloc(sizeof(target), GFP_KERNEL);
|
||||
+ if (!res)
|
||||
+ return NULL;
|
||||
+
|
||||
+ memcpy(res, target, sizeof(target));
|
||||
+
|
||||
+ *len = ARRAY_SIZE(target);
|
||||
+
|
||||
+ return res;
|
||||
+}
|
||||
+
|
||||
+static const struct of_device_id mali_dt_ids[] = {
|
||||
+ { .compatible = "allwinner,sun4i-a10-mali" },
|
||||
+ { .compatible = "allwinner,sun7i-a20-mali" },
|
||||
+ { .compatible = "allwinner,sun8i-h3-mali" },
|
||||
+ { .compatible = "allwinner,sun50i-a64-mali" },
|
||||
+ { .compatible = "allwinner,sun50i-h5-mali" },
|
||||
+ { .compatible = "arm,mali-400" },
|
||||
+ { .compatible = "arm,mali-450" },
|
||||
+ { /* sentinel */ },
|
||||
+};
|
||||
+MODULE_DEVICE_TABLE(of, mali_dt_ids);
|
||||
+
|
||||
+static struct mali_gpu_device_data mali_gpu_data = {
|
||||
+ .max_job_runtime = 60000,
|
||||
+};
|
||||
+int mali_platform_device_register(void)
|
||||
+{
|
||||
+ int irq_gp, irq_gpmmu;
|
||||
+ int irq_pp0, irq_ppmmu0;
|
||||
+ int irq_pp1 = -EINVAL, irq_ppmmu1 = -EINVAL;
|
||||
+ int irq_pp2 = -EINVAL, irq_ppmmu2 = -EINVAL;
|
||||
+ int irq_pp3 = -EINVAL, irq_ppmmu3 = -EINVAL;
|
||||
+ int irq_pp = -EINVAL;
|
||||
+ int irq_pmu;
|
||||
+ struct resource *mali_res = NULL, res;
|
||||
+ struct device_node *np;
|
||||
+ struct device *dev;
|
||||
+ int ret, len;
|
||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,0,0)
|
||||
+ mali_gpu_data.shared_mem_size = totalram_pages() * PAGE_SIZE;
|
||||
+#else
|
||||
+ mali_gpu_data.shared_mem_size = totalram_pages * PAGE_SIZE;
|
||||
+#endif
|
||||
+
|
||||
+ np = of_find_matching_node(NULL, mali_dt_ids);
|
||||
+ if (!np) {
|
||||
+ pr_err("Couldn't find the mali node\n");
|
||||
+ return -ENODEV;
|
||||
+ }
|
||||
+
|
||||
+ mali = kzalloc(sizeof(*mali), GFP_KERNEL);
|
||||
+ if (!mali) {
|
||||
+ ret = -ENOMEM;
|
||||
+ goto err_put_node;
|
||||
+ }
|
||||
+
|
||||
+ ret = of_clk_set_defaults(np, false);
|
||||
+ if (ret) {
|
||||
+ pr_err("Couldn't set clock defaults\n");
|
||||
+ goto err_free_mem;
|
||||
+ }
|
||||
+
|
||||
+ mali->bus_clk = of_clk_get_by_name(np, "bus");
|
||||
+ if (IS_ERR(mali->bus_clk)) {
|
||||
+ pr_err("Couldn't retrieve our bus clock\n");
|
||||
+ ret = PTR_ERR(mali->bus_clk);
|
||||
+ goto err_free_mem;
|
||||
+ }
|
||||
+ clk_prepare_enable(mali->bus_clk);
|
||||
+
|
||||
+ mali->core_clk = of_clk_get_by_name(np, "core");
|
||||
+ if (IS_ERR(mali->core_clk)) {
|
||||
+ pr_err("Couldn't retrieve our module clock\n");
|
||||
+ ret = PTR_ERR(mali->core_clk);
|
||||
+ goto err_put_bus;
|
||||
+ }
|
||||
+ clk_prepare_enable(mali->core_clk);
|
||||
+
|
||||
+ if (of_device_is_compatible(np, "allwinner,sun4i-a10-mali") ||
|
||||
+ of_device_is_compatible(np, "allwinner,sun7i-a20-mali") ||
|
||||
+ of_device_is_compatible(np, "allwinner,sun8i-h3-mali") ||
|
||||
+ of_device_is_compatible(np, "allwinner,sun50i-a64-mali") ||
|
||||
+ of_device_is_compatible(np, "allwinner,sun50i-h5-mali")) {
|
||||
+ mali->reset = of_reset_control_get(np, NULL);
|
||||
+ if (IS_ERR(mali->reset)) {
|
||||
+ pr_err("Couldn't retrieve our reset handle\n");
|
||||
+ ret = PTR_ERR(mali->reset);
|
||||
+ goto err_put_mod;
|
||||
+ }
|
||||
+ reset_control_deassert(mali->reset);
|
||||
+ }
|
||||
+
|
||||
+ ret = of_address_to_resource(np, 0, &res);
|
||||
+ if (ret) {
|
||||
+ pr_err("Couldn't retrieve our base address\n");
|
||||
+ goto err_put_reset;
|
||||
+ }
|
||||
+
|
||||
+ irq_gp = of_irq_get_byname(np, "gp");
|
||||
+ if (irq_gp < 0) {
|
||||
+ pr_err("Couldn't retrieve our GP interrupt\n");
|
||||
+ ret = irq_gp;
|
||||
+ goto err_put_reset;
|
||||
+ }
|
||||
+
|
||||
+ irq_gpmmu = of_irq_get_byname(np, "gpmmu");
|
||||
+ if (irq_gpmmu < 0) {
|
||||
+ pr_err("Couldn't retrieve our GP MMU interrupt\n");
|
||||
+ ret = irq_gpmmu;
|
||||
+ goto err_put_reset;
|
||||
+ }
|
||||
+
|
||||
+ irq_pp0 = of_irq_get_byname(np, "pp0");
|
||||
+ if (irq_pp0 < 0) {
|
||||
+ pr_err("Couldn't retrieve our PP0 interrupt %d\n", irq_pp0);
|
||||
+ ret = irq_pp0;
|
||||
+ goto err_put_reset;
|
||||
+ }
|
||||
+
|
||||
+ irq_ppmmu0 = of_irq_get_byname(np, "ppmmu0");
|
||||
+ if (irq_ppmmu0 < 0) {
|
||||
+ pr_err("Couldn't retrieve our PP0 MMU interrupt\n");
|
||||
+ ret = irq_ppmmu0;
|
||||
+ goto err_put_reset;
|
||||
+ }
|
||||
+
|
||||
+ irq_pp1 = of_irq_get_byname(np, "pp1");
|
||||
+ irq_ppmmu1 = of_irq_get_byname(np, "ppmmu1");
|
||||
+ if ((irq_pp1 < 0) ^ (irq_ppmmu1 < 0 )) {
|
||||
+ pr_err("Couldn't retrieve our PP1 interrupts\n");
|
||||
+ ret = (irq_pp1 < 0) ? irq_pp1 : irq_ppmmu1;
|
||||
+ goto err_put_reset;
|
||||
+ }
|
||||
+
|
||||
+ if (of_device_is_compatible(np, "allwinner,sun50i-h5-mali")) {
|
||||
+ irq_pp2 = of_irq_get_byname(np, "pp2");
|
||||
+ if (irq_pp2 < 0) {
|
||||
+ pr_err("Couldn't retrieve our PP2 interrupt\n");
|
||||
+ ret = irq_pp2;
|
||||
+ goto err_put_reset;
|
||||
+ }
|
||||
+
|
||||
+ irq_ppmmu2 = of_irq_get_byname(np, "ppmmu2");
|
||||
+ if (irq_ppmmu2 < 0) {
|
||||
+ pr_err("Couldn't retrieve our PP2 interrupts\n");
|
||||
+ ret = irq_ppmmu2;
|
||||
+ goto err_put_reset;
|
||||
+ }
|
||||
+
|
||||
+ irq_pp3 = of_irq_get_byname(np, "pp3");
|
||||
+ if (irq_pp3 < 0) {
|
||||
+ pr_err("Couldn't retrieve our PP3 interrupt\n");
|
||||
+ ret = irq_pp3;
|
||||
+ goto err_put_reset;
|
||||
+ }
|
||||
+
|
||||
+ irq_ppmmu3 = of_irq_get_byname(np, "ppmmu3");
|
||||
+ if (irq_ppmmu3 < 0) {
|
||||
+ pr_err("Couldn't retrieve our PP3 interrupts\n");
|
||||
+ ret = irq_ppmmu3;
|
||||
+ goto err_put_reset;
|
||||
+ }
|
||||
+
|
||||
+ irq_pp = of_irq_get_byname(np, "pp");
|
||||
+ if (irq_pp < 0) {
|
||||
+ pr_err("Couldn't retrieve our PP broadcast interrupt\n");
|
||||
+ ret = irq_pp;
|
||||
+ goto err_put_reset;
|
||||
+ }
|
||||
+ } else {
|
||||
+ irq_pmu = of_irq_get_byname(np, "pmu");
|
||||
+ if (irq_pmu < 0) {
|
||||
+ pr_err("Couldn't retrieve our PMU interrupt\n");
|
||||
+ ret = irq_pmu;
|
||||
+ goto err_put_reset;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ mali->dev = platform_device_alloc("mali-utgard", 0);
|
||||
+ if (!mali->dev) {
|
||||
+ pr_err("Couldn't create platform device\n");
|
||||
+ ret = -EINVAL;
|
||||
+ goto err_put_reset;
|
||||
+ }
|
||||
+ dev = &mali->dev->dev;
|
||||
+ dev_set_name(dev, "mali-utgard");
|
||||
+ dev->of_node = np;
|
||||
+ dev->coherent_dma_mask = DMA_BIT_MASK(32);
|
||||
+ dev->dma_mask = &dev->coherent_dma_mask;
|
||||
+ dev->bus = &platform_bus_type;
|
||||
+
|
||||
+ ret = of_reserved_mem_device_init(&mali->dev->dev);
|
||||
+ if (ret && ret != -ENODEV) {
|
||||
+ pr_err("Couldn't claim our reserved memory region\n");
|
||||
+ goto err_free_mem_region;
|
||||
+ }
|
||||
+
|
||||
+ if (of_device_is_compatible(np, "allwinner,sun50i-h5-mali"))
|
||||
+ mali_res = mali_create_450mp4_resources(res.start,
|
||||
+ irq_gp, irq_gpmmu,
|
||||
+ irq_pp0, irq_ppmmu0,
|
||||
+ irq_pp1, irq_ppmmu1,
|
||||
+ irq_pp2, irq_ppmmu2,
|
||||
+ irq_pp3, irq_ppmmu3,
|
||||
+ irq_pp, &len);
|
||||
+ else if ((irq_pp1 >= 0) && (irq_ppmmu1 >= 0))
|
||||
+ mali_res = mali_create_mp2_resources(res.start,
|
||||
+ irq_gp, irq_gpmmu,
|
||||
+ irq_pp0, irq_ppmmu0,
|
||||
+ irq_pp1, irq_ppmmu1,
|
||||
+ &len);
|
||||
+ else
|
||||
+ mali_res = mali_create_mp1_resources(res.start,
|
||||
+ irq_gp, irq_gpmmu,
|
||||
+ irq_pp0, irq_ppmmu0,
|
||||
+ &len);
|
||||
+
|
||||
+ if (!mali_res) {
|
||||
+ pr_err("Couldn't create target resources\n");
|
||||
+ ret = -EINVAL;
|
||||
+ goto err_free_mem_region;
|
||||
+ }
|
||||
+
|
||||
+ clk_register_clkdev(mali->core_clk, "clk_mali", NULL);
|
||||
+
|
||||
+ ret = platform_device_add_resources(mali->dev, mali_res, len);
|
||||
+ kfree(mali_res);
|
||||
+ if (ret) {
|
||||
+ pr_err("Couldn't add our resources\n");
|
||||
+ goto err_free_mem_region;
|
||||
+ }
|
||||
+
|
||||
+ ret = platform_device_add_data(mali->dev, &mali_gpu_data,
|
||||
+ sizeof(mali_gpu_data));
|
||||
+ if (ret) {
|
||||
+ pr_err("Couldn't add our platform data\n");
|
||||
+ goto err_free_mem_region;
|
||||
+ }
|
||||
+
|
||||
+ ret = platform_device_add(mali->dev);
|
||||
+ if (ret) {
|
||||
+ pr_err("Couldn't add our device\n");
|
||||
+ goto err_free_mem_region;
|
||||
+ }
|
||||
+
|
||||
+#ifdef CONFIG_PM_RUNTIME
|
||||
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 37))
|
||||
+ pm_runtime_set_autosuspend_delay(&mali->dev->dev, 1000);
|
||||
+ pm_runtime_use_autosuspend(&mali->dev->dev);
|
||||
+#endif
|
||||
+ pm_runtime_enable(&mali->dev->dev);
|
||||
+#endif
|
||||
+
|
||||
+ pr_info("Allwinner sunXi mali glue initialized\n");
|
||||
+
|
||||
+ return 0;
|
||||
+
|
||||
+err_free_mem_region:
|
||||
+ of_reserved_mem_device_release(dev);
|
||||
+ platform_device_put(mali->dev);
|
||||
+err_put_reset:
|
||||
+ if (!IS_ERR_OR_NULL(mali->reset)) {
|
||||
+ reset_control_assert(mali->reset);
|
||||
+ reset_control_put(mali->reset);
|
||||
+ }
|
||||
+err_put_mod:
|
||||
+ clk_disable_unprepare(mali->core_clk);
|
||||
+ clk_put(mali->core_clk);
|
||||
+err_put_bus:
|
||||
+ clk_disable_unprepare(mali->bus_clk);
|
||||
+ clk_put(mali->bus_clk);
|
||||
+err_free_mem:
|
||||
+ kfree(mali);
|
||||
+err_put_node:
|
||||
+ of_node_put(np);
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+int mali_platform_device_unregister(void)
|
||||
+{
|
||||
+ struct device *dev = &mali->dev->dev;
|
||||
+
|
||||
+#ifdef CONFIG_PM_RUNTIME
|
||||
+ pm_runtime_disable(dev);
|
||||
+#endif
|
||||
+
|
||||
+ of_reserved_mem_device_release(dev);
|
||||
+
|
||||
+ platform_device_del(mali->dev);
|
||||
+ of_node_put(dev->of_node);
|
||||
+ platform_device_put(mali->dev);
|
||||
+
|
||||
+ if (!IS_ERR_OR_NULL(mali->reset)) {
|
||||
+ reset_control_assert(mali->reset);
|
||||
+ reset_control_put(mali->reset);
|
||||
+ }
|
||||
+
|
||||
+ clk_disable_unprepare(mali->core_clk);
|
||||
+ clk_put(mali->core_clk);
|
||||
+
|
||||
+ clk_disable_unprepare(mali->bus_clk);
|
||||
+ clk_put(mali->bus_clk);
|
||||
+
|
||||
+ kfree(mali);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
@ -1,155 +0,0 @@
|
||||
From 246fdac477cf109c354011c1ae0a7a8d928cb504 Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Karlman <jonas@kwiboo.se>
|
||||
Date: Mon, 12 Mar 2018 23:02:55 +0100
|
||||
Subject: [PATCH] v4.16 build fix
|
||||
|
||||
---
|
||||
.../driver/src/devicedrv/mali/common/mali_control_timer.c | 2 +-
|
||||
src/devicedrv/mali/common/mali_group.c | 8 ++++---
|
||||
src/devicedrv/mali/common/mali_osk_types.h | 8 ++++++-
|
||||
.../devicedrv/mali/linux/mali_memory_os_alloc.c | 6 +++++
|
||||
.../driver/src/devicedrv/mali/linux/mali_memory_secure.c | 4 ++++
|
||||
src/devicedrv/mali/linux/mali_osk_timers.c | 20 +++++++++++-----
|
||||
11 files changed, 84 insertions(+), 14 deletions(-)
|
||||
|
||||
diff --git a/driver/src/devicedrv/mali/common/mali_control_timer.c b/driver/src/devicedrv/mali/common/mali_control_timer.c
|
||||
index 1296ffe..bfe975f 100644
|
||||
--- a/driver/src/devicedrv/mali/common/mali_control_timer.c
|
||||
+++ b/driver/src/devicedrv/mali/common/mali_control_timer.c
|
||||
@@ -28,7 +28,7 @@ void mali_control_timer_add(u32 timeout)
|
||||
_mali_osk_timer_add(mali_control_timer, _mali_osk_time_mstoticks(timeout));
|
||||
}
|
||||
|
||||
-static void mali_control_timer_callback(void *arg)
|
||||
+static void mali_control_timer_callback(struct timer_list *t)
|
||||
{
|
||||
if (mali_utilization_enabled()) {
|
||||
struct mali_gpu_utilization_data *util_data = NULL;
|
||||
diff --git a/driver/src/devicedrv/mali/common/mali_group.c b/driver/src/devicedrv/mali/common/mali_group.c
|
||||
index e9005e1..4a43753 100644
|
||||
--- a/driver/src/devicedrv/mali/common/mali_group.c
|
||||
+++ b/driver/src/devicedrv/mali/common/mali_group.c
|
||||
@@ -44,7 +44,7 @@ int mali_max_job_runtime = MALI_MAX_JOB_RUNTIME_DEFAULT;
|
||||
static void mali_group_bottom_half_mmu(void *data);
|
||||
static void mali_group_bottom_half_gp(void *data);
|
||||
static void mali_group_bottom_half_pp(void *data);
|
||||
-static void mali_group_timeout(void *data);
|
||||
+static void mali_group_timeout(struct timer_list *t);
|
||||
static void mali_group_reset_pp(struct mali_group *group);
|
||||
static void mali_group_reset_mmu(struct mali_group *group);
|
||||
|
||||
@@ -1761,9 +1761,11 @@ static void mali_group_bottom_half_pp(void *data)
|
||||
0xFFFFFFFF, 0);
|
||||
}
|
||||
|
||||
-static void mali_group_timeout(void *data)
|
||||
+static void mali_group_timeout(struct timer_list *t)
|
||||
{
|
||||
- struct mali_group *group = (struct mali_group *)data;
|
||||
+ _mali_osk_timer_t *tim = container_of(t, _mali_osk_timer_t, timer);
|
||||
+ struct mali_group *group = container_of(&tim, struct mali_group, timeout_timer);
|
||||
+
|
||||
MALI_DEBUG_ASSERT_POINTER(group);
|
||||
|
||||
MALI_DEBUG_PRINT(2, ("Group: timeout handler for %s at %u\n",
|
||||
diff --git a/driver/src/devicedrv/mali/common/mali_osk_types.h b/driver/src/devicedrv/mali/common/mali_osk_types.h
|
||||
index 03161cf..c9d0fec 100644
|
||||
--- a/driver/src/devicedrv/mali/common/mali_osk_types.h
|
||||
+++ b/driver/src/devicedrv/mali/common/mali_osk_types.h
|
||||
@@ -50,6 +50,7 @@ typedef unsigned long long u64;
|
||||
#include <linux/types.h>
|
||||
#endif
|
||||
|
||||
+#include <linux/timer.h>
|
||||
/** @brief Mali Boolean type which uses MALI_TRUE and MALI_FALSE
|
||||
*/
|
||||
typedef unsigned long mali_bool;
|
||||
@@ -395,7 +396,12 @@ typedef struct _mali_osk_notification_t_struct {
|
||||
* by any callers of _mali_osk_timer_del(). Otherwise, a deadlock may occur.
|
||||
*
|
||||
* @param arg Function-specific data */
|
||||
-typedef void (*_mali_osk_timer_callback_t)(void *arg);
|
||||
+typedef void (*_mali_osk_timer_callback_t)(struct timer_list *t);
|
||||
+
|
||||
+
|
||||
+struct _mali_osk_timer_t_struct {
|
||||
+ struct timer_list timer;
|
||||
+};
|
||||
|
||||
/** @brief Private type for Timer Callback Objects */
|
||||
typedef struct _mali_osk_timer_t_struct _mali_osk_timer_t;
|
||||
diff --git a/driver/src/devicedrv/mali/linux/mali_memory_os_alloc.c b/driver/src/devicedrv/mali/linux/mali_memory_os_alloc.c
|
||||
index 5fe1270..92c245a 100644
|
||||
--- a/driver/src/devicedrv/mali/linux/mali_memory_os_alloc.c
|
||||
+++ b/driver/src/devicedrv/mali/linux/mali_memory_os_alloc.c
|
||||
@@ -202,7 +202,9 @@ int mali_mem_os_alloc_pages(mali_mem_os_mem *os_mem, u32 size)
|
||||
/* Allocate new pages, if needed. */
|
||||
for (i = 0; i < remaining; i++) {
|
||||
dma_addr_t dma_addr;
|
||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)
|
||||
+ gfp_t flags = __GFP_ZERO | __GFP_RETRY_MAYFAIL | __GFP_NOWARN;
|
||||
+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 13, 0)
|
||||
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0)
|
||||
gfp_t flags = __GFP_ZERO | __GFP_RETRY_MAYFAIL | __GFP_NOWARN | __GFP_COLD;
|
||||
#else
|
||||
gfp_t flags = __GFP_ZERO | __GFP_REPEAT | __GFP_NOWARN | __GFP_COLD;
|
||||
diff --git a/driver/src/devicedrv/mali/linux/mali_memory_secure.c b/driver/src/devicedrv/mali/linux/mali_memory_secure.c
|
||||
index 2836b1b..4f55fa5 100644
|
||||
--- a/driver/src/devicedrv/mali/linux/mali_memory_secure.c
|
||||
+++ b/driver/src/devicedrv/mali/linux/mali_memory_secure.c
|
||||
@@ -13,7 +13,11 @@
|
||||
#include "mali_memory_secure.h"
|
||||
#include "mali_osk.h"
|
||||
#include <linux/mutex.h>
|
||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 16, 0)
|
||||
+#include <linux/dma-direct.h>
|
||||
+#else
|
||||
#include <linux/dma-mapping.h>
|
||||
+#endif
|
||||
#include <linux/dma-buf.h>
|
||||
|
||||
_mali_osk_errcode_t mali_mem_secure_attach_dma_buf(mali_mem_secure *secure_mem, u32 size, int mem_fd)
|
||||
diff --git a/driver/src/devicedrv/mali/linux/mali_osk_timers.c b/driver/src/devicedrv/mali/linux/mali_osk_timers.c
|
||||
index e5d7238..701051a 100644
|
||||
--- a/driver/src/devicedrv/mali/linux/mali_osk_timers.c
|
||||
+++ b/driver/src/devicedrv/mali/linux/mali_osk_timers.c
|
||||
@@ -18,16 +18,25 @@
|
||||
#include "mali_osk.h"
|
||||
#include "mali_kernel_common.h"
|
||||
|
||||
-struct _mali_osk_timer_t_struct {
|
||||
- struct timer_list timer;
|
||||
-};
|
||||
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0)
|
||||
+
|
||||
+#define TIMER_DATA_TYPE unsigned long
|
||||
+#define TIMER_FUNC_TYPE void (*)(TIMER_DATA_TYPE)
|
||||
+
|
||||
+static inline void timer_setup(struct timer_list *timer,
|
||||
+ void (*callback)(struct timer_list *),
|
||||
+ unsigned int flags)
|
||||
+{
|
||||
+ __setup_timer(timer, (TIMER_FUNC_TYPE)callback,
|
||||
+ (TIMER_DATA_TYPE)timer, flags);
|
||||
+}
|
||||
+#endif
|
||||
|
||||
typedef void (*timer_timeout_function_t)(unsigned long);
|
||||
|
||||
_mali_osk_timer_t *_mali_osk_timer_init(void)
|
||||
{
|
||||
_mali_osk_timer_t *t = (_mali_osk_timer_t *)kmalloc(sizeof(_mali_osk_timer_t), GFP_KERNEL);
|
||||
- if (NULL != t) init_timer(&t->timer);
|
||||
return t;
|
||||
}
|
||||
|
||||
@@ -65,8 +74,7 @@ mali_bool _mali_osk_timer_pending(_mali_osk_timer_t *tim)
|
||||
void _mali_osk_timer_setcallback(_mali_osk_timer_t *tim, _mali_osk_timer_callback_t callback, void *data)
|
||||
{
|
||||
MALI_DEBUG_ASSERT_POINTER(tim);
|
||||
- tim->timer.data = (unsigned long)data;
|
||||
- tim->timer.function = (timer_timeout_function_t)callback;
|
||||
+ timer_setup(&tim->timer, callback, 0);
|
||||
}
|
||||
|
||||
void _mali_osk_timer_term(_mali_osk_timer_t *tim)
|
@ -1,128 +0,0 @@
|
||||
diff -Nur a/driver/src/devicedrv/mali/linux/mali_memory_block_alloc.c b/driver/src/devicedrv/mali/linux/mali_memory_block_alloc.c
|
||||
--- a/driver/src/devicedrv/mali/linux/mali_memory_block_alloc.c 2018-09-13 08:52:20.000000000 +0200
|
||||
+++ b/driver/src/devicedrv/mali/linux/mali_memory_block_alloc.c 2018-12-08 12:22:51.978513336 +0100
|
||||
@@ -309,9 +309,9 @@
|
||||
|
||||
list_for_each_entry(m_page, &block_mem->pfns, list) {
|
||||
MALI_DEBUG_ASSERT(m_page->type == MALI_PAGE_NODE_BLOCK);
|
||||
- ret = vm_insert_pfn(vma, addr, _mali_page_node_get_pfn(m_page));
|
||||
+ ret = vmf_insert_pfn(vma, addr, _mali_page_node_get_pfn(m_page));
|
||||
|
||||
- if (unlikely(0 != ret)) {
|
||||
+ if (unlikely(ret & VM_FAULT_ERROR)) {
|
||||
return -EFAULT;
|
||||
}
|
||||
addr += _MALI_OSK_MALI_PAGE_SIZE;
|
||||
diff -Nur a/driver/src/devicedrv/mali/linux/mali_memory_cow.c b/driver/src/devicedrv/mali/linux/mali_memory_cow.c
|
||||
--- a/driver/src/devicedrv/mali/linux/mali_memory_cow.c 2018-09-13 08:52:20.000000000 +0200
|
||||
+++ b/driver/src/devicedrv/mali/linux/mali_memory_cow.c 2018-12-08 12:27:17.681815893 +0100
|
||||
@@ -532,10 +532,10 @@
|
||||
* flush which makes it way slower than remap_pfn_range or vm_insert_pfn.
|
||||
ret = vm_insert_page(vma, addr, page);
|
||||
*/
|
||||
- ret = vm_insert_pfn(vma, addr, _mali_page_node_get_pfn(m_page));
|
||||
+ ret = vmf_insert_pfn(vma, addr, _mali_page_node_get_pfn(m_page));
|
||||
|
||||
- if (unlikely(0 != ret)) {
|
||||
- return ret;
|
||||
+ if (unlikely(ret & VM_FAULT_ERROR)) {
|
||||
+ return -EFAULT;
|
||||
}
|
||||
addr += _MALI_OSK_MALI_PAGE_SIZE;
|
||||
}
|
||||
@@ -569,9 +569,9 @@
|
||||
|
||||
list_for_each_entry(m_page, &cow->pages, list) {
|
||||
if ((count >= offset) && (count < offset + num)) {
|
||||
- ret = vm_insert_pfn(vma, vaddr, _mali_page_node_get_pfn(m_page));
|
||||
+ ret = vmf_insert_pfn(vma, vaddr, _mali_page_node_get_pfn(m_page));
|
||||
|
||||
- if (unlikely(0 != ret)) {
|
||||
+ if (unlikely(ret & VM_FAULT_ERROR)) {
|
||||
if (count == offset) {
|
||||
return _MALI_OSK_ERR_FAULT;
|
||||
} else {
|
||||
diff -Nur a/driver/src/devicedrv/mali/linux/mali_memory_os_alloc.c b/driver/src/devicedrv/mali/linux/mali_memory_os_alloc.c
|
||||
--- a/driver/src/devicedrv/mali/linux/mali_memory_os_alloc.c 2018-12-08 12:15:38.000000000 +0100
|
||||
+++ b/driver/src/devicedrv/mali/linux/mali_memory_os_alloc.c 2018-12-08 12:30:37.730811640 +0100
|
||||
@@ -376,9 +376,9 @@
|
||||
ret = vm_insert_page(vma, addr, page);
|
||||
*/
|
||||
page = m_page->page;
|
||||
- ret = vm_insert_pfn(vma, addr, page_to_pfn(page));
|
||||
+ ret = vmf_insert_pfn(vma, addr, page_to_pfn(page));
|
||||
|
||||
- if (unlikely(0 != ret)) {
|
||||
+ if (unlikely(ret & VM_FAULT_ERROR)) {
|
||||
return -EFAULT;
|
||||
}
|
||||
addr += _MALI_OSK_MALI_PAGE_SIZE;
|
||||
@@ -414,16 +414,11 @@
|
||||
|
||||
vm_end -= _MALI_OSK_MALI_PAGE_SIZE;
|
||||
if (mapping_page_num > 0) {
|
||||
- ret = vm_insert_pfn(vma, vm_end, page_to_pfn(m_page->page));
|
||||
+ ret = vmf_insert_pfn(vma, vm_end, page_to_pfn(m_page->page));
|
||||
|
||||
- if (unlikely(0 != ret)) {
|
||||
- /*will return -EBUSY If the page has already been mapped into table, but it's OK*/
|
||||
- if (-EBUSY == ret) {
|
||||
- break;
|
||||
- } else {
|
||||
- MALI_DEBUG_PRINT(1, ("OS Mem: mali_mem_os_resize_cpu_map_locked failed, ret = %d, offset is %d,page_count is %d\n",
|
||||
- ret, offset + mapping_page_num, os_mem->count));
|
||||
- }
|
||||
+ if (unlikely(ret & VM_FAULT_ERROR)) {
|
||||
+ MALI_DEBUG_PRINT(1, ("OS Mem: mali_mem_os_resize_cpu_map_locked failed, ret = %d, offset is %d,page_count is %d\n",
|
||||
+ ret, offset + mapping_page_num, os_mem->count));
|
||||
return _MALI_OSK_ERR_FAULT;
|
||||
}
|
||||
} else {
|
||||
@@ -437,16 +432,11 @@
|
||||
list_for_each_entry(m_page, &os_mem->pages, list) {
|
||||
if (count >= offset) {
|
||||
|
||||
- ret = vm_insert_pfn(vma, vstart, page_to_pfn(m_page->page));
|
||||
+ ret = vmf_insert_pfn(vma, vstart, page_to_pfn(m_page->page));
|
||||
|
||||
- if (unlikely(0 != ret)) {
|
||||
- /*will return -EBUSY If the page has already been mapped into table, but it's OK*/
|
||||
- if (-EBUSY == ret) {
|
||||
- break;
|
||||
- } else {
|
||||
- MALI_DEBUG_PRINT(1, ("OS Mem: mali_mem_os_resize_cpu_map_locked failed, ret = %d, count is %d, offset is %d,page_count is %d\n",
|
||||
- ret, count, offset, os_mem->count));
|
||||
- }
|
||||
+ if (unlikely(ret & VM_FAULT_ERROR)) {
|
||||
+ MALI_DEBUG_PRINT(1, ("OS Mem: mali_mem_os_resize_cpu_map_locked failed, ret = %d, count is %d, offset is %d,page_count is %d\n",
|
||||
+ ret, count, offset, os_mem->count));
|
||||
return _MALI_OSK_ERR_FAULT;
|
||||
}
|
||||
}
|
||||
diff -Nur a/driver/src/devicedrv/mali/linux/mali_memory_secure.c b/driver/src/devicedrv/mali/linux/mali_memory_secure.c
|
||||
--- a/driver/src/devicedrv/mali/linux/mali_memory_secure.c 2018-12-08 12:15:38.000000000 +0100
|
||||
+++ b/driver/src/devicedrv/mali/linux/mali_memory_secure.c 2018-12-08 12:31:05.461174554 +0100
|
||||
@@ -132,9 +132,9 @@
|
||||
MALI_DEBUG_ASSERT(0 == size % _MALI_OSK_MALI_PAGE_SIZE);
|
||||
|
||||
for (j = 0; j < size / _MALI_OSK_MALI_PAGE_SIZE; j++) {
|
||||
- ret = vm_insert_pfn(vma, addr, PFN_DOWN(phys));
|
||||
+ ret = vmf_insert_pfn(vma, addr, PFN_DOWN(phys));
|
||||
|
||||
- if (unlikely(0 != ret)) {
|
||||
+ if (unlikely(ret & VM_FAULT_ERROR)) {
|
||||
return -EFAULT;
|
||||
}
|
||||
addr += _MALI_OSK_MALI_PAGE_SIZE;
|
||||
diff -Nur a/driver/src/devicedrv/mali/linux/mali_osk_time.c b/driver/src/devicedrv/mali/linux/mali_osk_time.c
|
||||
--- a/driver/src/devicedrv/mali/linux/mali_osk_time.c 2018-09-13 08:52:20.000000000 +0200
|
||||
+++ b/driver/src/devicedrv/mali/linux/mali_osk_time.c 2018-12-08 12:32:12.632086846 +0100
|
||||
@@ -53,7 +53,5 @@
|
||||
|
||||
u64 _mali_osk_boot_time_get_ns(void)
|
||||
{
|
||||
- struct timespec tsval;
|
||||
- get_monotonic_boottime(&tsval);
|
||||
- return (u64)timespec_to_ns(&tsval);
|
||||
+ return (u64)ktime_to_ns(ktime_get_boottime());
|
||||
}
|
@ -1,35 +0,0 @@
|
||||
diff -Nur a/driver/src/devicedrv/mali/linux/mali_ukk_mem.c b/driver/src/devicedrv/mali/linux/mali_ukk_mem.c
|
||||
--- a/driver/src/devicedrv/mali/linux/mali_ukk_mem.c 2018-09-13 08:52:20.000000000 +0200
|
||||
+++ b/driver/src/devicedrv/mali/linux/mali_ukk_mem.c 2019-02-09 20:10:06.867561465 +0100
|
||||
@@ -207,10 +207,17 @@
|
||||
kargs.ctx = (uintptr_t)session_data;
|
||||
|
||||
/* Check if we can access the buffers */
|
||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,0,0)
|
||||
+ if (!access_ok(kargs.dest, kargs.size)
|
||||
+ || !access_ok(kargs.src, kargs.size)) {
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+#else
|
||||
if (!access_ok(VERIFY_WRITE, kargs.dest, kargs.size)
|
||||
|| !access_ok(VERIFY_READ, kargs.src, kargs.size)) {
|
||||
return -EINVAL;
|
||||
}
|
||||
+#endif
|
||||
|
||||
/* Check if size wraps */
|
||||
if ((kargs.size + kargs.dest) <= kargs.dest
|
||||
@@ -266,8 +273,13 @@
|
||||
goto err_exit;
|
||||
|
||||
user_buffer = (void __user *)(uintptr_t)kargs.buffer;
|
||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,0,0)
|
||||
+ if (!access_ok(user_buffer, kargs.size))
|
||||
+ goto err_exit;
|
||||
+#else
|
||||
if (!access_ok(VERIFY_WRITE, user_buffer, kargs.size))
|
||||
goto err_exit;
|
||||
+#endif
|
||||
|
||||
/* allocate temporary buffer (kernel side) to store mmu page table info */
|
||||
if (kargs.size <= 0)
|
45
packages/linux-drivers/mali-midgard/package.mk
Normal file
45
packages/linux-drivers/mali-midgard/package.mk
Normal file
@ -0,0 +1,45 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="mali-midgard"
|
||||
PKG_VERSION="9ce33e456c9320b90f7ce8770262c852a77e4b81" # TX011-SW-99002-r28p0-01rel0
|
||||
PKG_SHA256="ef8808d0d0535449cd23410832bcb7433e35568afcbb75683608a7df9dd536bc"
|
||||
PKG_ARCH="arm aarch64"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://developer.arm.com/products/software/mali-drivers/"
|
||||
PKG_URL="https://github.com/LibreELEC/mali-midgard/archive/${PKG_VERSION}.tar.gz"
|
||||
PKG_DEPENDS_TARGET="toolchain linux"
|
||||
PKG_NEED_UNPACK="$LINUX_DEPENDS"
|
||||
PKG_LONGDESC="mali-midgard: Linux drivers for Mali Midgard GPUs"
|
||||
PKG_TOOLCHAIN="manual"
|
||||
PKG_IS_KERNEL_PKG="yes"
|
||||
|
||||
case $PROJECT in
|
||||
Allwinner)
|
||||
PKG_EXTRA_CFLAGS="-DCONFIG_MALI_DEVFREQ -DCONFIG_MALI_PLATFORM_DEVICETREE"
|
||||
PKG_CONFIGS="CONFIG_MALI_DEVFREQ=y"
|
||||
;;
|
||||
Amlogic)
|
||||
PKG_CONFIGS="CONFIG_MALI_PLATFORM_NAME=meson"
|
||||
;;
|
||||
Rockchip)
|
||||
PKG_CONFIGS="CONFIG_MALI_PLATFORM_NAME=rk"
|
||||
;;
|
||||
esac
|
||||
|
||||
post_patch() {
|
||||
# rename kernel module to not clash with mali-bifrost
|
||||
find $PKG_BUILD -name Kbuild -exec sed -i 's/mali_kbase.o/mali_midgard.o/g; s/mali_kbase-/mali_midgard-/g' {} \;
|
||||
}
|
||||
|
||||
make_target() {
|
||||
kernel_make -C $(kernel_path) M=$PKG_BUILD/driver/product/kernel/drivers/gpu/arm/midgard \
|
||||
EXTRA_CFLAGS="${PKG_EXTRA_CFLAGS}" \
|
||||
CONFIG_MALI_MIDGARD=m ${PKG_CONFIGS}
|
||||
}
|
||||
|
||||
makeinstall_target() {
|
||||
kernel_make -C $(kernel_path) M=$PKG_BUILD/driver/product/kernel/drivers/gpu/arm/midgard \
|
||||
INSTALL_MOD_PATH=$INSTALL/$(get_kernel_overlay_dir) INSTALL_MOD_STRIP=1 DEPMOD=: \
|
||||
modules_install
|
||||
}
|
42
packages/linux-drivers/mali-utgard/package.mk
Normal file
42
packages/linux-drivers/mali-utgard/package.mk
Normal file
@ -0,0 +1,42 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="mali-utgard"
|
||||
PKG_VERSION="5d89e2a946c7e4dbd7e627202e7bd7c3ed49954a"
|
||||
PKG_SHA256="c3e6199f58807558eb665357a35e2f86c161fc1a55f27988e604671bc27e98c7"
|
||||
PKG_ARCH="arm aarch64"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://developer.arm.com/products/software/mali-drivers/utgard-kernel"
|
||||
PKG_URL="https://github.com/LibreELEC/mali-utgard/archive/${PKG_VERSION}.tar.gz"
|
||||
PKG_DEPENDS_TARGET="toolchain linux"
|
||||
PKG_NEED_UNPACK="$LINUX_DEPENDS"
|
||||
PKG_LONGDESC="mali-utgard: Linux drivers for Mali Utgard GPUs"
|
||||
PKG_TOOLCHAIN="manual"
|
||||
PKG_IS_KERNEL_PKG="yes"
|
||||
|
||||
case $PROJECT in
|
||||
Allwinner)
|
||||
PKG_MALI_PLATFORM="sunxi"
|
||||
;;
|
||||
Amlogic)
|
||||
PKG_MALI_PLATFORM="meson"
|
||||
;;
|
||||
Rockchip)
|
||||
PKG_MALI_PLATFORM="rk"
|
||||
PKG_EXTRA_CFLAGS="-DCONFIG_MALI_DT"
|
||||
PKG_CONFIGS="CONFIG_MALI_DT=y"
|
||||
;;
|
||||
esac
|
||||
|
||||
make_target() {
|
||||
kernel_make -C $(kernel_path) M=$PKG_BUILD/driver/src/devicedrv/mali \
|
||||
MALI_PLATFORM_FILES=platform/${PKG_MALI_PLATFORM}/${PKG_MALI_PLATFORM}.c GIT_REV="" \
|
||||
EXTRA_CFLAGS="-DMALI_FAKE_PLATFORM_DEVICE=1 -DCONFIG_MALI_DMA_BUF_MAP_ON_ATTACH -DCONFIG_MALI400=1 -DCONFIG_MALI450=1 -DCONFIG_MALI470=1 ${PKG_EXTRA_CFLAGS}" \
|
||||
CONFIG_MALI400=m CONFIG_MALI450=y CONFIG_MALI470=y CONFIG_MALI_DMA_BUF_MAP_ON_ATTACH=y ${PKG_CONFIGS}
|
||||
}
|
||||
|
||||
makeinstall_target() {
|
||||
kernel_make -C $(kernel_path) M=$PKG_BUILD/driver/src/devicedrv/mali/ \
|
||||
INSTALL_MOD_PATH=$INSTALL/$(get_kernel_overlay_dir) INSTALL_MOD_STRIP=1 DEPMOD=: \
|
||||
modules_install
|
||||
}
|
@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2019-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="brcmfmac_sdio-firmware"
|
||||
PKG_VERSION="bc97ecd07221b0f0baca67bbe5dbb6f053a271f1"
|
||||
PKG_SHA256="61773247f8ec519db5f123b2b554746bf4e4cc1902038d87d6217337afba00f5"
|
||||
PKG_VERSION="79932201f7827ec06ec708a44bf583a772ae7522"
|
||||
PKG_SHA256="b31665e3b0dfd595234241ef233e47f2e12312ce019c9b5c2e02919d0b2ddbc0"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://github.com/LibreELEC/brcmfmac_sdio-firmware"
|
||||
PKG_URL="https://github.com/LibreELEC/brcmfmac_sdio-firmware/archive/$PKG_VERSION.tar.gz"
|
||||
|
@ -3,8 +3,8 @@
|
||||
# Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="iwlwifi-firmware"
|
||||
PKG_VERSION="7b698fbf706a4294fbb148bef57d42cb729c147b"
|
||||
PKG_SHA256="c0da6400d4a7d06a41fc8d3130da7e23f13c7fab1aeae13d6dbbc7b06ae44cf7"
|
||||
PKG_VERSION="caaa6ccba6ebfa06b40d58e94b808202a735520c"
|
||||
PKG_SHA256="a9846956d89557e2608df467a8c6911e26dbbd09cadf4d307d52e930fc323cd2"
|
||||
PKG_LICENSE="Free-to-use"
|
||||
PKG_SITE="https://github.com/LibreELEC/iwlwifi-firmware"
|
||||
PKG_URL="https://github.com/LibreELEC/iwlwifi-firmware/archive/$PKG_VERSION.tar.gz"
|
||||
|
@ -11,7 +11,7 @@ PKG_DEPENDS_INIT="toolchain"
|
||||
PKG_NEED_UNPACK="$LINUX_DEPENDS"
|
||||
PKG_LONGDESC="This package contains a precompiled kernel image and the modules."
|
||||
PKG_IS_KERNEL_PKG="yes"
|
||||
PKG_STAMP="$KERNEL_TARGET $KERNEL_MAKE_EXTRACMD $KERNEL_UBOOT_EXTRA_TARGET"
|
||||
PKG_STAMP="$KERNEL_TARGET $KERNEL_MAKE_EXTRACMD"
|
||||
|
||||
PKG_PATCH_DIRS="$LINUX"
|
||||
|
||||
@ -37,8 +37,8 @@ case "$LINUX" in
|
||||
PKG_SOURCE_NAME="linux-$LINUX-$PKG_VERSION.tar.gz"
|
||||
;;
|
||||
*)
|
||||
PKG_VERSION="5.0.7"
|
||||
PKG_SHA256="16e177662b9fc7255bfc51018513979f6effcbe52e459c543aa83a5b15ef54ec"
|
||||
PKG_VERSION="5.1.9"
|
||||
PKG_SHA256="58c9eca99c3dd2fff5b559302996c985c3f3f2aad0b99b2172a61c4df7122a79"
|
||||
PKG_URL="https://www.kernel.org/pub/linux/kernel/v5.x/$PKG_NAME-$PKG_VERSION.tar.xz"
|
||||
PKG_PATCH_DIRS="default"
|
||||
;;
|
||||
@ -203,12 +203,6 @@ make_target() {
|
||||
$SCRIPTS/install initramfs
|
||||
)
|
||||
|
||||
if [ "$BOOTLOADER" = "u-boot" -a -n "$KERNEL_UBOOT_EXTRA_TARGET" ]; then
|
||||
for extra_target in "$KERNEL_UBOOT_EXTRA_TARGET"; do
|
||||
kernel_make $extra_target
|
||||
done
|
||||
fi
|
||||
|
||||
# arm64 target does not support creating uImage.
|
||||
# Build Image first, then wrap it using u-boot's mkimage.
|
||||
if [[ "$TARGET_KERNEL_ARCH" == "arm64" && "$KERNEL_TARGET" == uImage* ]]; then
|
||||
|
@ -1,41 +0,0 @@
|
||||
From ae1ccaa3587c0bd3d6d01841fa2e668cdf738f1e Mon Sep 17 00:00:00 2001
|
||||
From: Matthias Reichl <hias@horus.com>
|
||||
Date: Sun, 3 Feb 2019 14:24:00 +0100
|
||||
Subject: [PATCH] media: rc: ir-rc6-decoder: enable toggle bit for Zotac
|
||||
remotes
|
||||
|
||||
The Zotac RC2604323/01G and RC2604329/02BG remotes use the 32-bit
|
||||
rc6 protocol and toggle bit 15 (0x8000) on repeated button presses,
|
||||
like MCE remotes.
|
||||
|
||||
Add the customer code 0x80340000 to the 32-bit rc6 toggle
|
||||
handling code to get proper scancodes and toggle reports.
|
||||
|
||||
Signed-off-by: Matthias Reichl <hias@horus.com>
|
||||
---
|
||||
drivers/media/rc/ir-rc6-decoder.c | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/drivers/media/rc/ir-rc6-decoder.c b/drivers/media/rc/ir-rc6-decoder.c
|
||||
index d96aed1343e4..5cc302fa4daa 100644
|
||||
--- a/drivers/media/rc/ir-rc6-decoder.c
|
||||
+++ b/drivers/media/rc/ir-rc6-decoder.c
|
||||
@@ -40,6 +40,7 @@
|
||||
#define RC6_6A_MCE_TOGGLE_MASK 0x8000 /* for the body bits */
|
||||
#define RC6_6A_LCC_MASK 0xffff0000 /* RC6-6A-32 long customer code mask */
|
||||
#define RC6_6A_MCE_CC 0x800f0000 /* MCE customer code */
|
||||
+#define RC6_6A_ZOTAC_CC 0x80340000 /* Zotac customer code */
|
||||
#define RC6_6A_KATHREIN_CC 0x80460000 /* Kathrein RCU-676 customer code */
|
||||
#ifndef CHAR_BIT
|
||||
#define CHAR_BIT 8 /* Normally in <limits.h> */
|
||||
@@ -246,6 +247,7 @@ static int ir_rc6_decode(struct rc_dev *dev, struct ir_raw_event ev)
|
||||
switch (scancode & RC6_6A_LCC_MASK) {
|
||||
case RC6_6A_MCE_CC:
|
||||
case RC6_6A_KATHREIN_CC:
|
||||
+ case RC6_6A_ZOTAC_CC:
|
||||
protocol = RC_PROTO_RC6_MCE;
|
||||
toggle = !!(scancode & RC6_6A_MCE_TOGGLE_MASK);
|
||||
scancode &= ~RC6_6A_MCE_TOGGLE_MASK;
|
||||
--
|
||||
2.20.1
|
||||
|
@ -1,506 +0,0 @@
|
||||
From da8a71104dda4a85a9d9546ff462542347f8efa6 Mon Sep 17 00:00:00 2001
|
||||
From: Matthias Reichl <hias@horus.com>
|
||||
Date: Wed, 20 Mar 2019 09:11:53 +0100
|
||||
Subject: [PATCH] media: rc: rcmm decoder and encoder
|
||||
|
||||
commit 721074b03411327e7bf41555d4cc7c18f49313f7 upstream.
|
||||
|
||||
media: add support for RCMM infrared remote controls.
|
||||
|
||||
Signed-off-by: Patrick Lerda <patrick9876@free.fr>
|
||||
Signed-off-by: Sean Young <sean@mess.org>
|
||||
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
|
||||
Signed-off-by: Matthias Reichl <hias@horus.com>
|
||||
---
|
||||
Documentation/media/lirc.h.rst.exceptions | 3 +
|
||||
MAINTAINERS | 5 +
|
||||
drivers/media/rc/Kconfig | 13 ++
|
||||
drivers/media/rc/Makefile | 1 +
|
||||
drivers/media/rc/ir-rcmm-decoder.c | 254 ++++++++++++++++++++++
|
||||
drivers/media/rc/rc-core-priv.h | 5 +
|
||||
drivers/media/rc/rc-main.c | 9 +
|
||||
include/media/rc-map.h | 14 +-
|
||||
include/uapi/linux/lirc.h | 6 +
|
||||
tools/include/uapi/linux/lirc.h | 12 +
|
||||
10 files changed, 319 insertions(+), 3 deletions(-)
|
||||
create mode 100644 drivers/media/rc/ir-rcmm-decoder.c
|
||||
|
||||
diff --git a/Documentation/media/lirc.h.rst.exceptions b/Documentation/media/lirc.h.rst.exceptions
|
||||
index 984b61dc3f2e..e7a41d4b3d46 100644
|
||||
--- a/Documentation/media/lirc.h.rst.exceptions
|
||||
+++ b/Documentation/media/lirc.h.rst.exceptions
|
||||
@@ -58,6 +58,9 @@ ignore symbol RC_PROTO_SHARP
|
||||
ignore symbol RC_PROTO_XMP
|
||||
ignore symbol RC_PROTO_CEC
|
||||
ignore symbol RC_PROTO_IMON
|
||||
+ignore symbol RC_PROTO_RCMM12
|
||||
+ignore symbol RC_PROTO_RCMM24
|
||||
+ignore symbol RC_PROTO_RCMM32
|
||||
|
||||
# Undocumented macros
|
||||
|
||||
diff --git a/MAINTAINERS b/MAINTAINERS
|
||||
index 9e9b19ecf6f7..57b60dd42729 100644
|
||||
--- a/MAINTAINERS
|
||||
+++ b/MAINTAINERS
|
||||
@@ -15837,6 +15837,11 @@ M: David Härdeman <david@hardeman.nu>
|
||||
S: Maintained
|
||||
F: drivers/media/rc/winbond-cir.c
|
||||
|
||||
+RCMM REMOTE CONTROLS DECODER
|
||||
+M: Patrick Lerda <patrick9876@free.fr>
|
||||
+S: Maintained
|
||||
+F: drivers/media/rc/ir-rcmm-decoder.c
|
||||
+
|
||||
WINSYSTEMS EBC-C384 WATCHDOG DRIVER
|
||||
M: William Breathitt Gray <vilhelm.gray@gmail.com>
|
||||
L: linux-watchdog@vger.kernel.org
|
||||
diff --git a/drivers/media/rc/Kconfig b/drivers/media/rc/Kconfig
|
||||
index 1021c08a9ba4..8164a889011a 100644
|
||||
--- a/drivers/media/rc/Kconfig
|
||||
+++ b/drivers/media/rc/Kconfig
|
||||
@@ -133,6 +133,19 @@ config IR_IMON_DECODER
|
||||
remote control and you would like to use it with a raw IR
|
||||
receiver, or if you wish to use an encoder to transmit this IR.
|
||||
|
||||
+config IR_RCMM_DECODER
|
||||
+ tristate "Enable IR raw decoder for the RC-MM protocol"
|
||||
+ depends on RC_CORE
|
||||
+ help
|
||||
+ Enable this option when you have IR with RC-MM protocol, and
|
||||
+ you need the software decoder. The driver supports 12,
|
||||
+ 24 and 32 bits RC-MM variants. You can enable or disable the
|
||||
+ different modes using the following RC protocol keywords:
|
||||
+ 'rc-mm-12', 'rc-mm-24' and 'rc-mm-32'.
|
||||
+
|
||||
+ To compile this driver as a module, choose M here: the module
|
||||
+ will be called ir-rcmm-decoder.
|
||||
+
|
||||
endif #RC_DECODERS
|
||||
|
||||
menuconfig RC_DEVICES
|
||||
diff --git a/drivers/media/rc/Makefile b/drivers/media/rc/Makefile
|
||||
index e0340d043fe8..fc4058013234 100644
|
||||
--- a/drivers/media/rc/Makefile
|
||||
+++ b/drivers/media/rc/Makefile
|
||||
@@ -16,6 +16,7 @@ obj-$(CONFIG_IR_SHARP_DECODER) += ir-sharp-decoder.o
|
||||
obj-$(CONFIG_IR_MCE_KBD_DECODER) += ir-mce_kbd-decoder.o
|
||||
obj-$(CONFIG_IR_XMP_DECODER) += ir-xmp-decoder.o
|
||||
obj-$(CONFIG_IR_IMON_DECODER) += ir-imon-decoder.o
|
||||
+obj-$(CONFIG_IR_RCMM_DECODER) += ir-rcmm-decoder.o
|
||||
|
||||
# stand-alone IR receivers/transmitters
|
||||
obj-$(CONFIG_RC_ATI_REMOTE) += ati_remote.o
|
||||
diff --git a/drivers/media/rc/ir-rcmm-decoder.c b/drivers/media/rc/ir-rcmm-decoder.c
|
||||
new file mode 100644
|
||||
index 000000000000..f1096ac1e5c5
|
||||
--- /dev/null
|
||||
+++ b/drivers/media/rc/ir-rcmm-decoder.c
|
||||
@@ -0,0 +1,254 @@
|
||||
+// SPDX-License-Identifier: GPL-2.0+
|
||||
+// ir-rcmm-decoder.c - A decoder for the RCMM IR protocol
|
||||
+//
|
||||
+// Copyright (C) 2018 by Patrick Lerda <patrick9876@free.fr>
|
||||
+
|
||||
+#include "rc-core-priv.h"
|
||||
+#include <linux/module.h>
|
||||
+#include <linux/version.h>
|
||||
+
|
||||
+#define RCMM_UNIT 166667 /* nanosecs */
|
||||
+#define RCMM_PREFIX_PULSE 416666 /* 166666.666666666*2.5 */
|
||||
+#define RCMM_PULSE_0 277777 /* 166666.666666666*(1+2/3) */
|
||||
+#define RCMM_PULSE_1 444444 /* 166666.666666666*(2+2/3) */
|
||||
+#define RCMM_PULSE_2 611111 /* 166666.666666666*(3+2/3) */
|
||||
+#define RCMM_PULSE_3 777778 /* 166666.666666666*(4+2/3) */
|
||||
+
|
||||
+enum rcmm_state {
|
||||
+ STATE_INACTIVE,
|
||||
+ STATE_LOW,
|
||||
+ STATE_BUMP,
|
||||
+ STATE_VALUE,
|
||||
+ STATE_FINISHED,
|
||||
+};
|
||||
+
|
||||
+static bool rcmm_mode(const struct rcmm_dec *data)
|
||||
+{
|
||||
+ return !((0x000c0000 & data->bits) == 0x000c0000);
|
||||
+}
|
||||
+
|
||||
+static int rcmm_miscmode(struct rc_dev *dev, struct rcmm_dec *data)
|
||||
+{
|
||||
+ switch (data->count) {
|
||||
+ case 24:
|
||||
+ if (dev->enabled_protocols & RC_PROTO_BIT_RCMM24) {
|
||||
+ rc_keydown(dev, RC_PROTO_RCMM24, data->bits, 0);
|
||||
+ data->state = STATE_INACTIVE;
|
||||
+ return 0;
|
||||
+ }
|
||||
+ return -1;
|
||||
+
|
||||
+ case 12:
|
||||
+ if (dev->enabled_protocols & RC_PROTO_BIT_RCMM12) {
|
||||
+ rc_keydown(dev, RC_PROTO_RCMM12, data->bits, 0);
|
||||
+ data->state = STATE_INACTIVE;
|
||||
+ return 0;
|
||||
+ }
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
+ return -1;
|
||||
+}
|
||||
+
|
||||
+/**
|
||||
+ * ir_rcmm_decode() - Decode one RCMM pulse or space
|
||||
+ * @dev: the struct rc_dev descriptor of the device
|
||||
+ * @ev: the struct ir_raw_event descriptor of the pulse/space
|
||||
+ *
|
||||
+ * This function returns -EINVAL if the pulse violates the state machine
|
||||
+ */
|
||||
+static int ir_rcmm_decode(struct rc_dev *dev, struct ir_raw_event ev)
|
||||
+{
|
||||
+ struct rcmm_dec *data = &dev->raw->rcmm;
|
||||
+ u32 scancode;
|
||||
+ u8 toggle;
|
||||
+ int value;
|
||||
+
|
||||
+ if (!(dev->enabled_protocols & (RC_PROTO_BIT_RCMM32 |
|
||||
+ RC_PROTO_BIT_RCMM24 |
|
||||
+ RC_PROTO_BIT_RCMM12)))
|
||||
+ return 0;
|
||||
+
|
||||
+ if (!is_timing_event(ev)) {
|
||||
+ if (ev.reset)
|
||||
+ data->state = STATE_INACTIVE;
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
+ switch (data->state) {
|
||||
+ case STATE_INACTIVE:
|
||||
+ if (!ev.pulse)
|
||||
+ break;
|
||||
+
|
||||
+ if (!eq_margin(ev.duration, RCMM_PREFIX_PULSE, RCMM_UNIT / 2))
|
||||
+ break;
|
||||
+
|
||||
+ data->state = STATE_LOW;
|
||||
+ data->count = 0;
|
||||
+ data->bits = 0;
|
||||
+ return 0;
|
||||
+
|
||||
+ case STATE_LOW:
|
||||
+ if (ev.pulse)
|
||||
+ break;
|
||||
+
|
||||
+ if (!eq_margin(ev.duration, RCMM_PULSE_0, RCMM_UNIT / 2))
|
||||
+ break;
|
||||
+
|
||||
+ data->state = STATE_BUMP;
|
||||
+ return 0;
|
||||
+
|
||||
+ case STATE_BUMP:
|
||||
+ if (!ev.pulse)
|
||||
+ break;
|
||||
+
|
||||
+ if (!eq_margin(ev.duration, RCMM_UNIT, RCMM_UNIT / 2))
|
||||
+ break;
|
||||
+
|
||||
+ data->state = STATE_VALUE;
|
||||
+ return 0;
|
||||
+
|
||||
+ case STATE_VALUE:
|
||||
+ if (ev.pulse)
|
||||
+ break;
|
||||
+
|
||||
+ if (eq_margin(ev.duration, RCMM_PULSE_0, RCMM_UNIT / 2))
|
||||
+ value = 0;
|
||||
+ else if (eq_margin(ev.duration, RCMM_PULSE_1, RCMM_UNIT / 2))
|
||||
+ value = 1;
|
||||
+ else if (eq_margin(ev.duration, RCMM_PULSE_2, RCMM_UNIT / 2))
|
||||
+ value = 2;
|
||||
+ else if (eq_margin(ev.duration, RCMM_PULSE_3, RCMM_UNIT / 2))
|
||||
+ value = 3;
|
||||
+ else
|
||||
+ value = -1;
|
||||
+
|
||||
+ if (value == -1) {
|
||||
+ if (!rcmm_miscmode(dev, data))
|
||||
+ return 0;
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ data->bits <<= 2;
|
||||
+ data->bits |= value;
|
||||
+
|
||||
+ data->count += 2;
|
||||
+
|
||||
+ if (data->count < 32)
|
||||
+ data->state = STATE_BUMP;
|
||||
+ else
|
||||
+ data->state = STATE_FINISHED;
|
||||
+
|
||||
+ return 0;
|
||||
+
|
||||
+ case STATE_FINISHED:
|
||||
+ if (!ev.pulse)
|
||||
+ break;
|
||||
+
|
||||
+ if (!eq_margin(ev.duration, RCMM_UNIT, RCMM_UNIT / 2))
|
||||
+ break;
|
||||
+
|
||||
+ if (rcmm_mode(data)) {
|
||||
+ toggle = !!(0x8000 & data->bits);
|
||||
+ scancode = data->bits & ~0x8000;
|
||||
+ } else {
|
||||
+ toggle = 0;
|
||||
+ scancode = data->bits;
|
||||
+ }
|
||||
+
|
||||
+ if (dev->enabled_protocols & RC_PROTO_BIT_RCMM32) {
|
||||
+ rc_keydown(dev, RC_PROTO_RCMM32, scancode, toggle);
|
||||
+ data->state = STATE_INACTIVE;
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ data->state = STATE_INACTIVE;
|
||||
+ return -EINVAL;
|
||||
+}
|
||||
+
|
||||
+static const int rcmmspace[] = {
|
||||
+ RCMM_PULSE_0,
|
||||
+ RCMM_PULSE_1,
|
||||
+ RCMM_PULSE_2,
|
||||
+ RCMM_PULSE_3,
|
||||
+};
|
||||
+
|
||||
+static int ir_rcmm_rawencoder(struct ir_raw_event **ev, unsigned int max,
|
||||
+ unsigned int n, u32 data)
|
||||
+{
|
||||
+ int i;
|
||||
+ int ret;
|
||||
+
|
||||
+ ret = ir_raw_gen_pulse_space(ev, &max, RCMM_PREFIX_PULSE, RCMM_PULSE_0);
|
||||
+ if (ret)
|
||||
+ return ret;
|
||||
+
|
||||
+ for (i = n - 2; i >= 0; i -= 2) {
|
||||
+ const unsigned int space = rcmmspace[(data >> i) & 3];
|
||||
+
|
||||
+ ret = ir_raw_gen_pulse_space(ev, &max, RCMM_UNIT, space);
|
||||
+ if (ret)
|
||||
+ return ret;
|
||||
+ }
|
||||
+
|
||||
+ return ir_raw_gen_pulse_space(ev, &max, RCMM_UNIT, RCMM_PULSE_3 * 2);
|
||||
+}
|
||||
+
|
||||
+static int ir_rcmm_encode(enum rc_proto protocol, u32 scancode,
|
||||
+ struct ir_raw_event *events, unsigned int max)
|
||||
+{
|
||||
+ struct ir_raw_event *e = events;
|
||||
+ int ret;
|
||||
+
|
||||
+ switch (protocol) {
|
||||
+ case RC_PROTO_RCMM32:
|
||||
+ ret = ir_rcmm_rawencoder(&e, max, 32, scancode);
|
||||
+ break;
|
||||
+ case RC_PROTO_RCMM24:
|
||||
+ ret = ir_rcmm_rawencoder(&e, max, 24, scancode);
|
||||
+ break;
|
||||
+ case RC_PROTO_RCMM12:
|
||||
+ ret = ir_rcmm_rawencoder(&e, max, 12, scancode);
|
||||
+ break;
|
||||
+ default:
|
||||
+ ret = -EINVAL;
|
||||
+ }
|
||||
+
|
||||
+ if (ret < 0)
|
||||
+ return ret;
|
||||
+
|
||||
+ return e - events;
|
||||
+}
|
||||
+
|
||||
+static struct ir_raw_handler rcmm_handler = {
|
||||
+ .protocols = RC_PROTO_BIT_RCMM32 |
|
||||
+ RC_PROTO_BIT_RCMM24 |
|
||||
+ RC_PROTO_BIT_RCMM12,
|
||||
+ .decode = ir_rcmm_decode,
|
||||
+ .encode = ir_rcmm_encode,
|
||||
+ .carrier = 36000,
|
||||
+ .min_timeout = RCMM_PULSE_3 + RCMM_UNIT,
|
||||
+};
|
||||
+
|
||||
+static int __init ir_rcmm_decode_init(void)
|
||||
+{
|
||||
+ ir_raw_handler_register(&rcmm_handler);
|
||||
+
|
||||
+ pr_info("IR RCMM protocol handler initialized\n");
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static void __exit ir_rcmm_decode_exit(void)
|
||||
+{
|
||||
+ ir_raw_handler_unregister(&rcmm_handler);
|
||||
+}
|
||||
+
|
||||
+module_init(ir_rcmm_decode_init);
|
||||
+module_exit(ir_rcmm_decode_exit);
|
||||
+
|
||||
+MODULE_LICENSE("GPL");
|
||||
+MODULE_AUTHOR("Patrick Lerda");
|
||||
+MODULE_DESCRIPTION("RCMM IR protocol decoder");
|
||||
diff --git a/drivers/media/rc/rc-core-priv.h b/drivers/media/rc/rc-core-priv.h
|
||||
index e847bdad5c51..59c252f24194 100644
|
||||
--- a/drivers/media/rc/rc-core-priv.h
|
||||
+++ b/drivers/media/rc/rc-core-priv.h
|
||||
@@ -136,6 +136,11 @@ struct ir_raw_event_ctrl {
|
||||
struct input_dev *idev;
|
||||
char name[64];
|
||||
} imon;
|
||||
+ struct rcmm_dec {
|
||||
+ int state;
|
||||
+ unsigned int count;
|
||||
+ u32 bits;
|
||||
+ } rcmm;
|
||||
};
|
||||
|
||||
/* Mutex for locking raw IR processing and handler change */
|
||||
diff --git a/drivers/media/rc/rc-main.c b/drivers/media/rc/rc-main.c
|
||||
index 0f218afdadaa..78e79c37f208 100644
|
||||
--- a/drivers/media/rc/rc-main.c
|
||||
+++ b/drivers/media/rc/rc-main.c
|
||||
@@ -70,6 +70,12 @@ static const struct {
|
||||
[RC_PROTO_CEC] = { .name = "cec", .repeat_period = 0 },
|
||||
[RC_PROTO_IMON] = { .name = "imon",
|
||||
.scancode_bits = 0x7fffffff, .repeat_period = 114 },
|
||||
+ [RC_PROTO_RCMM12] = { .name = "rc-mm-12",
|
||||
+ .scancode_bits = 0x00000fff, .repeat_period = 114 },
|
||||
+ [RC_PROTO_RCMM24] = { .name = "rc-mm-24",
|
||||
+ .scancode_bits = 0x00ffffff, .repeat_period = 114 },
|
||||
+ [RC_PROTO_RCMM32] = { .name = "rc-mm-32",
|
||||
+ .scancode_bits = 0xffffffff, .repeat_period = 114 },
|
||||
};
|
||||
|
||||
/* Used to keep track of known keymaps */
|
||||
@@ -1018,6 +1024,9 @@ static const struct {
|
||||
{ RC_PROTO_BIT_XMP, "xmp", "ir-xmp-decoder" },
|
||||
{ RC_PROTO_BIT_CEC, "cec", NULL },
|
||||
{ RC_PROTO_BIT_IMON, "imon", "ir-imon-decoder" },
|
||||
+ { RC_PROTO_BIT_RCMM12 |
|
||||
+ RC_PROTO_BIT_RCMM24 |
|
||||
+ RC_PROTO_BIT_RCMM32, "rc-mm", "ir-rcmm-decoder" },
|
||||
};
|
||||
|
||||
/**
|
||||
diff --git a/include/media/rc-map.h b/include/media/rc-map.h
|
||||
index bfa3017cecba..cf308b73edae 100644
|
||||
--- a/include/media/rc-map.h
|
||||
+++ b/include/media/rc-map.h
|
||||
@@ -37,6 +37,9 @@
|
||||
#define RC_PROTO_BIT_XMP BIT_ULL(RC_PROTO_XMP)
|
||||
#define RC_PROTO_BIT_CEC BIT_ULL(RC_PROTO_CEC)
|
||||
#define RC_PROTO_BIT_IMON BIT_ULL(RC_PROTO_IMON)
|
||||
+#define RC_PROTO_BIT_RCMM12 BIT_ULL(RC_PROTO_RCMM12)
|
||||
+#define RC_PROTO_BIT_RCMM24 BIT_ULL(RC_PROTO_RCMM24)
|
||||
+#define RC_PROTO_BIT_RCMM32 BIT_ULL(RC_PROTO_RCMM32)
|
||||
|
||||
#define RC_PROTO_BIT_ALL \
|
||||
(RC_PROTO_BIT_UNKNOWN | RC_PROTO_BIT_OTHER | \
|
||||
@@ -51,7 +54,8 @@
|
||||
RC_PROTO_BIT_RC6_6A_24 | RC_PROTO_BIT_RC6_6A_32 | \
|
||||
RC_PROTO_BIT_RC6_MCE | RC_PROTO_BIT_SHARP | \
|
||||
RC_PROTO_BIT_XMP | RC_PROTO_BIT_CEC | \
|
||||
- RC_PROTO_BIT_IMON)
|
||||
+ RC_PROTO_BIT_IMON | RC_PROTO_BIT_RCMM12 | \
|
||||
+ RC_PROTO_BIT_RCMM24 | RC_PROTO_BIT_RCMM32)
|
||||
/* All rc protocols for which we have decoders */
|
||||
#define RC_PROTO_BIT_ALL_IR_DECODER \
|
||||
(RC_PROTO_BIT_RC5 | RC_PROTO_BIT_RC5X_20 | \
|
||||
@@ -64,7 +68,9 @@
|
||||
RC_PROTO_BIT_RC6_0 | RC_PROTO_BIT_RC6_6A_20 | \
|
||||
RC_PROTO_BIT_RC6_6A_24 | RC_PROTO_BIT_RC6_6A_32 | \
|
||||
RC_PROTO_BIT_RC6_MCE | RC_PROTO_BIT_SHARP | \
|
||||
- RC_PROTO_BIT_XMP | RC_PROTO_BIT_IMON)
|
||||
+ RC_PROTO_BIT_XMP | RC_PROTO_BIT_IMON | \
|
||||
+ RC_PROTO_BIT_RCMM12 | RC_PROTO_BIT_RCMM24 | \
|
||||
+ RC_PROTO_BIT_RCMM32)
|
||||
|
||||
#define RC_PROTO_BIT_ALL_IR_ENCODER \
|
||||
(RC_PROTO_BIT_RC5 | RC_PROTO_BIT_RC5X_20 | \
|
||||
@@ -77,7 +83,9 @@
|
||||
RC_PROTO_BIT_RC6_0 | RC_PROTO_BIT_RC6_6A_20 | \
|
||||
RC_PROTO_BIT_RC6_6A_24 | \
|
||||
RC_PROTO_BIT_RC6_6A_32 | RC_PROTO_BIT_RC6_MCE | \
|
||||
- RC_PROTO_BIT_SHARP | RC_PROTO_BIT_IMON)
|
||||
+ RC_PROTO_BIT_SHARP | RC_PROTO_BIT_IMON | \
|
||||
+ RC_PROTO_BIT_RCMM12 | RC_PROTO_BIT_RCMM24 | \
|
||||
+ RC_PROTO_BIT_RCMM32)
|
||||
|
||||
#define RC_SCANCODE_UNKNOWN(x) (x)
|
||||
#define RC_SCANCODE_OTHER(x) (x)
|
||||
diff --git a/include/uapi/linux/lirc.h b/include/uapi/linux/lirc.h
|
||||
index 6b319581882f..45fcbf99d72e 100644
|
||||
--- a/include/uapi/linux/lirc.h
|
||||
+++ b/include/uapi/linux/lirc.h
|
||||
@@ -192,6 +192,9 @@ struct lirc_scancode {
|
||||
* @RC_PROTO_XMP: XMP protocol
|
||||
* @RC_PROTO_CEC: CEC protocol
|
||||
* @RC_PROTO_IMON: iMon Pad protocol
|
||||
+ * @RC_PROTO_RCMM12: RC-MM protocol 12 bits
|
||||
+ * @RC_PROTO_RCMM24: RC-MM protocol 24 bits
|
||||
+ * @RC_PROTO_RCMM32: RC-MM protocol 32 bits
|
||||
*/
|
||||
enum rc_proto {
|
||||
RC_PROTO_UNKNOWN = 0,
|
||||
@@ -218,6 +221,9 @@ enum rc_proto {
|
||||
RC_PROTO_XMP = 21,
|
||||
RC_PROTO_CEC = 22,
|
||||
RC_PROTO_IMON = 23,
|
||||
+ RC_PROTO_RCMM12 = 24,
|
||||
+ RC_PROTO_RCMM24 = 25,
|
||||
+ RC_PROTO_RCMM32 = 26,
|
||||
};
|
||||
|
||||
#endif
|
||||
diff --git a/tools/include/uapi/linux/lirc.h b/tools/include/uapi/linux/lirc.h
|
||||
index f189931042a7..45fcbf99d72e 100644
|
||||
--- a/tools/include/uapi/linux/lirc.h
|
||||
+++ b/tools/include/uapi/linux/lirc.h
|
||||
@@ -133,6 +133,12 @@
|
||||
|
||||
#define LIRC_SET_WIDEBAND_RECEIVER _IOW('i', 0x00000023, __u32)
|
||||
|
||||
+/*
|
||||
+ * Return the recording timeout, which is either set by
|
||||
+ * the ioctl LIRC_SET_REC_TIMEOUT or by the kernel after setting the protocols.
|
||||
+ */
|
||||
+#define LIRC_GET_REC_TIMEOUT _IOR('i', 0x00000024, __u32)
|
||||
+
|
||||
/*
|
||||
* struct lirc_scancode - decoded scancode with protocol for use with
|
||||
* LIRC_MODE_SCANCODE
|
||||
@@ -186,6 +192,9 @@ struct lirc_scancode {
|
||||
* @RC_PROTO_XMP: XMP protocol
|
||||
* @RC_PROTO_CEC: CEC protocol
|
||||
* @RC_PROTO_IMON: iMon Pad protocol
|
||||
+ * @RC_PROTO_RCMM12: RC-MM protocol 12 bits
|
||||
+ * @RC_PROTO_RCMM24: RC-MM protocol 24 bits
|
||||
+ * @RC_PROTO_RCMM32: RC-MM protocol 32 bits
|
||||
*/
|
||||
enum rc_proto {
|
||||
RC_PROTO_UNKNOWN = 0,
|
||||
@@ -212,6 +221,9 @@ enum rc_proto {
|
||||
RC_PROTO_XMP = 21,
|
||||
RC_PROTO_CEC = 22,
|
||||
RC_PROTO_IMON = 23,
|
||||
+ RC_PROTO_RCMM12 = 24,
|
||||
+ RC_PROTO_RCMM24 = 25,
|
||||
+ RC_PROTO_RCMM32 = 26,
|
||||
};
|
||||
|
||||
#endif
|
||||
--
|
||||
2.20.1
|
||||
|
@ -1,39 +0,0 @@
|
||||
From: jahutchi
|
||||
Date: Fri, 11 Jan 2019 13:35:00 +0000
|
||||
Subject: [PATCH] media: m88ds3103: serialize reset messages in m88ds3103_set_frontend
|
||||
|
||||
Ref:
|
||||
https://bugzilla.kernel.org/show_bug.cgi?id=199323
|
||||
https://forum.libreelec.tv/thread/12452-problems-with-dvbsky-technotrend-usb-dvb-s2-tuners-since-le8/
|
||||
|
||||
DVBSky S960/S960C are partly broken since linux kernel commit (4.10rc1)
|
||||
https://github.com/torvalds/linux/commit/9d659ae14b545c4296e812c70493bfdc999b5c1c
|
||||
|
||||
diff --git a/drivers/media/dvb-frontends/m88ds3103.c b/drivers/media/dvb-frontends/m88ds3103.c
|
||||
index dffd2d4bf1..e495a26e6e 100644
|
||||
--- a/drivers/media/dvb-frontends/m88ds3103.c
|
||||
+++ b/drivers/media/dvb-frontends/m88ds3103.c
|
||||
@@ -309,6 +309,7 @@ static int m88ds3103_set_frontend(struct dvb_frontend *fe)
|
||||
u16 u16tmp;
|
||||
u32 tuner_frequency_khz, target_mclk;
|
||||
s32 s32tmp;
|
||||
+ static const struct reg_sequence reset_buf[] = {{0x07, 0x80}, {0x07, 0x00}};
|
||||
|
||||
dev_dbg(&client->dev,
|
||||
"delivery_system=%d modulation=%d frequency=%u symbol_rate=%d inversion=%d pilot=%d rolloff=%d\n",
|
||||
@@ -321,11 +322,7 @@ static int m88ds3103_set_frontend(struct dvb_frontend *fe)
|
||||
}
|
||||
|
||||
/* reset */
|
||||
- ret = regmap_write(dev->regmap, 0x07, 0x80);
|
||||
- if (ret)
|
||||
- goto err;
|
||||
-
|
||||
- ret = regmap_write(dev->regmap, 0x07, 0x00);
|
||||
+ ret = regmap_multi_reg_write(dev->regmap, reset_buf, 2);
|
||||
if (ret)
|
||||
goto err;
|
||||
|
||||
--
|
||||
2.7.4
|
||||
|
@ -0,0 +1,48 @@
|
||||
From aa843e35a472a2aff26250662d21ff30629d294c Mon Sep 17 00:00:00 2001
|
||||
From: MilhouseVH <milhouseVH.github@nmacleod.com>
|
||||
Date: Wed, 5 Jun 2019 16:35:18 +0100
|
||||
Subject: [PATCH] Revert "Bluetooth: Align minimum encryption key size for LE
|
||||
and BR/EDR connections"
|
||||
|
||||
This reverts commit 07e38998a19d72b916c39a983c19134522ae806b.
|
||||
---
|
||||
include/net/bluetooth/hci_core.h | 3 ---
|
||||
net/bluetooth/hci_conn.c | 8 --------
|
||||
2 files changed, 11 deletions(-)
|
||||
|
||||
diff --git a/include/net/bluetooth/hci_core.h b/include/net/bluetooth/hci_core.h
|
||||
index 05b1b96..094e61e 100644
|
||||
--- a/include/net/bluetooth/hci_core.h
|
||||
+++ b/include/net/bluetooth/hci_core.h
|
||||
@@ -190,9 +190,6 @@ struct adv_info {
|
||||
|
||||
#define HCI_MAX_SHORT_NAME_LENGTH 10
|
||||
|
||||
-/* Min encryption key size to match with SMP */
|
||||
-#define HCI_MIN_ENC_KEY_SIZE 7
|
||||
-
|
||||
/* Default LE RPA expiry time, 15 minutes */
|
||||
#define HCI_DEFAULT_RPA_TIMEOUT (15 * 60)
|
||||
|
||||
diff --git a/net/bluetooth/hci_conn.c b/net/bluetooth/hci_conn.c
|
||||
index 3cf0764..bd4978c 100644
|
||||
--- a/net/bluetooth/hci_conn.c
|
||||
+++ b/net/bluetooth/hci_conn.c
|
||||
@@ -1276,14 +1276,6 @@ int hci_conn_check_link_mode(struct hci_conn *conn)
|
||||
!test_bit(HCI_CONN_ENCRYPT, &conn->flags))
|
||||
return 0;
|
||||
|
||||
- /* The minimum encryption key size needs to be enforced by the
|
||||
- * host stack before establishing any L2CAP connections. The
|
||||
- * specification in theory allows a minimum of 1, but to align
|
||||
- * BR/EDR and LE transports, a minimum of 7 is chosen.
|
||||
- */
|
||||
- if (conn->enc_key_size < HCI_MIN_ENC_KEY_SIZE)
|
||||
- return 0;
|
||||
-
|
||||
return 1;
|
||||
}
|
||||
|
||||
--
|
||||
2.14.1
|
||||
|
@ -0,0 +1,48 @@
|
||||
From aa843e35a472a2aff26250662d21ff30629d294c Mon Sep 17 00:00:00 2001
|
||||
From: MilhouseVH <milhouseVH.github@nmacleod.com>
|
||||
Date: Wed, 5 Jun 2019 16:35:18 +0100
|
||||
Subject: [PATCH] Revert "Bluetooth: Align minimum encryption key size for LE
|
||||
and BR/EDR connections"
|
||||
|
||||
This reverts commit 07e38998a19d72b916c39a983c19134522ae806b.
|
||||
---
|
||||
include/net/bluetooth/hci_core.h | 3 ---
|
||||
net/bluetooth/hci_conn.c | 8 --------
|
||||
2 files changed, 11 deletions(-)
|
||||
|
||||
diff --git a/include/net/bluetooth/hci_core.h b/include/net/bluetooth/hci_core.h
|
||||
index 05b1b96..094e61e 100644
|
||||
--- a/include/net/bluetooth/hci_core.h
|
||||
+++ b/include/net/bluetooth/hci_core.h
|
||||
@@ -190,9 +190,6 @@ struct adv_info {
|
||||
|
||||
#define HCI_MAX_SHORT_NAME_LENGTH 10
|
||||
|
||||
-/* Min encryption key size to match with SMP */
|
||||
-#define HCI_MIN_ENC_KEY_SIZE 7
|
||||
-
|
||||
/* Default LE RPA expiry time, 15 minutes */
|
||||
#define HCI_DEFAULT_RPA_TIMEOUT (15 * 60)
|
||||
|
||||
diff --git a/net/bluetooth/hci_conn.c b/net/bluetooth/hci_conn.c
|
||||
index 3cf0764..bd4978c 100644
|
||||
--- a/net/bluetooth/hci_conn.c
|
||||
+++ b/net/bluetooth/hci_conn.c
|
||||
@@ -1276,14 +1276,6 @@ int hci_conn_check_link_mode(struct hci_conn *conn)
|
||||
!test_bit(HCI_CONN_ENCRYPT, &conn->flags))
|
||||
return 0;
|
||||
|
||||
- /* The minimum encryption key size needs to be enforced by the
|
||||
- * host stack before establishing any L2CAP connections. The
|
||||
- * specification in theory allows a minimum of 1, but to align
|
||||
- * BR/EDR and LE transports, a minimum of 7 is chosen.
|
||||
- */
|
||||
- if (conn->enc_key_size < HCI_MIN_ENC_KEY_SIZE)
|
||||
- return 0;
|
||||
-
|
||||
return 1;
|
||||
}
|
||||
|
||||
--
|
||||
2.14.1
|
||||
|
@ -88,6 +88,10 @@ configure_package() {
|
||||
KODI_CEC="-DENABLE_CEC=OFF"
|
||||
fi
|
||||
|
||||
if [ "$CEC_FRAMEWORK_SUPPORT" = "yes" ]; then
|
||||
PKG_PATCH_DIRS+=" cec-framework"
|
||||
fi
|
||||
|
||||
if [ "$KODI_OPTICAL_SUPPORT" = yes ]; then
|
||||
KODI_OPTICAL="-DENABLE_OPTICAL=ON"
|
||||
else
|
||||
|
@ -0,0 +1,13 @@
|
||||
--- kodi-rockchip_18.2rc1-Leia.orig/xbmc/peripherals/bus/virtual/PeripheralBusCEC.cpp 2019-05-12 07:24:23.921984777 +0200
|
||||
+++ kodi-rockchip_18.2rc1-Leia/xbmc/peripherals/bus/virtual/PeripheralBusCEC.cpp 2019-05-12 07:03:41.221761552 +0200
|
||||
@@ -50,6 +50,10 @@
|
||||
/** the Pi's adapter cannot be removed, no need to rescan */
|
||||
m_bNeedsPolling = false;
|
||||
break;
|
||||
+ case ADAPTERTYPE_LINUX:
|
||||
+ /** the Linux adapter cannot be removed, no need to rescan */
|
||||
+ m_bNeedsPolling = false;
|
||||
+ break;
|
||||
default:
|
||||
break;
|
||||
}
|
@ -1,21 +1,21 @@
|
||||
From 4bd117a06e468ad2259f3011c95c182150f295ef Mon Sep 17 00:00:00 2001
|
||||
From 0ba3c868e1d828520b8facaa4ce36d9b80339cc6 Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Karlman <jonas@kwiboo.se>
|
||||
Date: Sat, 15 Dec 2018 22:32:16 +0100
|
||||
Subject: [PATCH 2/6] Add common V4L2 request API code
|
||||
|
||||
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
||||
---
|
||||
configure | 8 +
|
||||
configure | 12 +
|
||||
libavcodec/Makefile | 1 +
|
||||
libavcodec/hwaccel.h | 2 +
|
||||
libavcodec/v4l2_request.c | 885 ++++++++++++++++++++++++++++++++++++++
|
||||
libavcodec/v4l2_request.c | 888 ++++++++++++++++++++++++++++++++++++++
|
||||
libavcodec/v4l2_request.h | 65 +++
|
||||
5 files changed, 961 insertions(+)
|
||||
5 files changed, 968 insertions(+)
|
||||
create mode 100644 libavcodec/v4l2_request.c
|
||||
create mode 100644 libavcodec/v4l2_request.h
|
||||
|
||||
diff --git a/configure b/configure
|
||||
index 172611bb4a..ed587ec05e 100755
|
||||
index 172611bb4a..6401cae9e7 100755
|
||||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -264,6 +264,7 @@ External library support:
|
||||
@ -66,7 +66,18 @@ index 172611bb4a..ed587ec05e 100755
|
||||
enabled libv4l2 && require_pkg_config libv4l2 libv4l2 libv4l2.h v4l2_ioctl
|
||||
enabled libvidstab && require_pkg_config libvidstab "vidstab >= 0.98" vid.stab/libvidstab.h vsMotionDetectInit
|
||||
enabled libvmaf && require_pkg_config libvmaf "libvmaf >= 0.6.2" libvmaf.h compute_vmaf
|
||||
@@ -6230,6 +6236,8 @@ check_cc h264_v4l2_m2m linux/videodev2.h "int i = V4L2_PIX_FMT_H264;"
|
||||
@@ -6153,6 +6159,10 @@ enabled rkmpp && { require_pkg_config rkmpp rockchip_mpp rockchip/r
|
||||
{ enabled libdrm ||
|
||||
die "ERROR: rkmpp requires --enable-libdrm"; }
|
||||
}
|
||||
+enabled v4l2_request && { enabled libdrm ||
|
||||
+ die "ERROR: v4l2-request requires --enable-libdrm"; } &&
|
||||
+ { enabled libudev ||
|
||||
+ die "ERROR: v4l2-request requires --enable-libudev"; }
|
||||
|
||||
if enabled gcrypt; then
|
||||
GCRYPT_CONFIG="${cross_prefix}libgcrypt-config"
|
||||
@@ -6230,6 +6240,8 @@ check_cc h264_v4l2_m2m linux/videodev2.h "int i = V4L2_PIX_FMT_H264;"
|
||||
check_cc vp8_v4l2_m2m linux/videodev2.h "int i = V4L2_PIX_FMT_VP8;"
|
||||
check_cc vp9_v4l2_m2m linux/videodev2.h "int i = V4L2_PIX_FMT_VP9;"
|
||||
|
||||
@ -101,10 +112,10 @@ index 3aaa92571c..2eefc91e7e 100644
|
||||
#endif /* AVCODEC_HWACCEL_H */
|
||||
diff --git a/libavcodec/v4l2_request.c b/libavcodec/v4l2_request.c
|
||||
new file mode 100644
|
||||
index 0000000000..f66cba3ae8
|
||||
index 0000000000..4589209e60
|
||||
--- /dev/null
|
||||
+++ b/libavcodec/v4l2_request.c
|
||||
@@ -0,0 +1,885 @@
|
||||
@@ -0,0 +1,888 @@
|
||||
+/*
|
||||
+ * This file is part of FFmpeg.
|
||||
+ *
|
||||
@ -181,7 +192,7 @@ index 0000000000..f66cba3ae8
|
||||
+ .type = buf->buffer.type,
|
||||
+ .memory = buf->buffer.memory,
|
||||
+ .index = buf->index,
|
||||
+ .timestamp.tv_usec = buf->index,
|
||||
+ .timestamp.tv_usec = buf->index + 1,
|
||||
+ .bytesused = buf->used,
|
||||
+ .request_fd = request_fd,
|
||||
+ .flags = (request_fd >= 0) ? V4L2_BUF_FLAG_REQUEST_FD : 0,
|
||||
@ -282,6 +293,8 @@ index 0000000000..f66cba3ae8
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
+ memset(req->output.addr + req->output.used, 0, AV_INPUT_BUFFER_PADDING_SIZE);
|
||||
+
|
||||
+ ret = v4l2_request_queue_buffer(ctx, req->request_fd, &req->output);
|
||||
+ if (ret < 0) {
|
||||
+ av_log(avctx, AV_LOG_ERROR, "%s: queue output buffer %d failed for request %d, %s (%d)\n", __func__, req->output.index, req->request_fd, strerror(errno), errno);
|
||||
@ -827,7 +840,6 @@ index 0000000000..f66cba3ae8
|
||||
+ buf->buffer.type = type;
|
||||
+ buf->buffer.memory = V4L2_MEMORY_MMAP;
|
||||
+ buf->buffer.index = buf->index;
|
||||
+ buf->buffer.timestamp.tv_usec = buf->index;
|
||||
+
|
||||
+ ret = ioctl(ctx->video_fd, VIDIOC_QUERYBUF, &buf->buffer);
|
||||
+ if (ret < 0) {
|
||||
@ -835,6 +847,8 @@ index 0000000000..f66cba3ae8
|
||||
+ return ret;
|
||||
+ }
|
||||
+
|
||||
+ buf->buffer.timestamp.tv_usec = buf->index + 1;
|
||||
+
|
||||
+ if (V4L2_TYPE_IS_OUTPUT(type)) {
|
||||
+ void *addr = mmap(NULL, buf->size, PROT_READ | PROT_WRITE, MAP_SHARED, ctx->video_fd, V4L2_TYPE_IS_MULTIPLANAR(type) ? buf->buffer.m.planes[0].m.mem_offset : buf->buffer.m.offset);
|
||||
+ if (addr == MAP_FAILED) {
|
||||
|
@ -1,4 +1,4 @@
|
||||
From de3bcf7557503e5d61b43cdc32d0844deab1c295 Mon Sep 17 00:00:00 2001
|
||||
From f4f6c74953b0bfaadec93b01d855a15f08c558a2 Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Karlman <jonas@kwiboo.se>
|
||||
Date: Sat, 15 Dec 2018 22:32:16 +0100
|
||||
Subject: [PATCH 3/6] Add V4L2 request API mpeg2 hwaccel
|
||||
@ -14,7 +14,7 @@ Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
||||
create mode 100644 libavcodec/v4l2_request_mpeg2.c
|
||||
|
||||
diff --git a/configure b/configure
|
||||
index ed587ec05e..c93d67056d 100755
|
||||
index 6401cae9e7..b163ed8dbe 100755
|
||||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -2846,6 +2846,8 @@ mpeg2_dxva2_hwaccel_deps="dxva2"
|
||||
@ -26,7 +26,7 @@ index ed587ec05e..c93d67056d 100755
|
||||
mpeg2_vaapi_hwaccel_deps="vaapi"
|
||||
mpeg2_vaapi_hwaccel_select="mpeg2video_decoder"
|
||||
mpeg2_vdpau_hwaccel_deps="vdpau"
|
||||
@@ -6237,6 +6239,7 @@ check_cc vp8_v4l2_m2m linux/videodev2.h "int i = V4L2_PIX_FMT_VP8;"
|
||||
@@ -6241,6 +6243,7 @@ check_cc vp8_v4l2_m2m linux/videodev2.h "int i = V4L2_PIX_FMT_VP8;"
|
||||
check_cc vp9_v4l2_m2m linux/videodev2.h "int i = V4L2_PIX_FMT_VP9;"
|
||||
|
||||
check_func_headers "linux/media.h linux/videodev2.h" v4l2_timeval_to_ns
|
||||
|
@ -1,4 +1,4 @@
|
||||
From bc1ed76cbc2dad2ec308801552e2398fc2de0a07 Mon Sep 17 00:00:00 2001
|
||||
From 250fab0e761f4956c009a6333c6799f63440b091 Mon Sep 17 00:00:00 2001
|
||||
From: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
Date: Sat, 15 Dec 2018 22:32:16 +0100
|
||||
Subject: [PATCH 4/6] Add V4L2 request API h264 hwaccel
|
||||
@ -11,12 +11,12 @@ Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
||||
libavcodec/h264_slice.c | 4 +
|
||||
libavcodec/h264dec.c | 3 +
|
||||
libavcodec/hwaccels.h | 1 +
|
||||
libavcodec/v4l2_request_h264.c | 368 +++++++++++++++++++++++++++++++++
|
||||
6 files changed, 380 insertions(+)
|
||||
libavcodec/v4l2_request_h264.c | 367 +++++++++++++++++++++++++++++++++
|
||||
6 files changed, 379 insertions(+)
|
||||
create mode 100644 libavcodec/v4l2_request_h264.c
|
||||
|
||||
diff --git a/configure b/configure
|
||||
index c93d67056d..296ca78ce7 100755
|
||||
index b163ed8dbe..698a91d5dc 100755
|
||||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -2804,6 +2804,8 @@ h264_dxva2_hwaccel_deps="dxva2"
|
||||
@ -28,7 +28,7 @@ index c93d67056d..296ca78ce7 100755
|
||||
h264_vaapi_hwaccel_deps="vaapi"
|
||||
h264_vaapi_hwaccel_select="h264_decoder"
|
||||
h264_vdpau_hwaccel_deps="vdpau"
|
||||
@@ -6239,6 +6241,7 @@ check_cc vp8_v4l2_m2m linux/videodev2.h "int i = V4L2_PIX_FMT_VP8;"
|
||||
@@ -6243,6 +6245,7 @@ check_cc vp8_v4l2_m2m linux/videodev2.h "int i = V4L2_PIX_FMT_VP8;"
|
||||
check_cc vp9_v4l2_m2m linux/videodev2.h "int i = V4L2_PIX_FMT_VP9;"
|
||||
|
||||
check_func_headers "linux/media.h linux/videodev2.h" v4l2_timeval_to_ns
|
||||
@ -98,10 +98,10 @@ index ef54de2a3b..003200edea 100644
|
||||
extern const AVHWAccel ff_h264_videotoolbox_hwaccel;
|
||||
diff --git a/libavcodec/v4l2_request_h264.c b/libavcodec/v4l2_request_h264.c
|
||||
new file mode 100644
|
||||
index 0000000000..a5c56d81c3
|
||||
index 0000000000..3687325fad
|
||||
--- /dev/null
|
||||
+++ b/libavcodec/v4l2_request_h264.c
|
||||
@@ -0,0 +1,368 @@
|
||||
@@ -0,0 +1,367 @@
|
||||
+/*
|
||||
+ * This file is part of FFmpeg.
|
||||
+ *
|
||||
@ -164,8 +164,10 @@ index 0000000000..a5c56d81c3
|
||||
+ entry->flags |= V4L2_H264_DPB_ENTRY_FLAG_ACTIVE;
|
||||
+ if (pic->long_ref)
|
||||
+ entry->flags |= V4L2_H264_DPB_ENTRY_FLAG_LONG_TERM;
|
||||
+ entry->top_field_order_cnt = pic->field_poc[0];
|
||||
+ entry->bottom_field_order_cnt = pic->field_poc[1];
|
||||
+ if (pic->field_poc[0] != INT_MAX)
|
||||
+ entry->top_field_order_cnt = pic->field_poc[0];
|
||||
+ if (pic->field_poc[1] != INT_MAX)
|
||||
+ entry->bottom_field_order_cnt = pic->field_poc[1];
|
||||
+}
|
||||
+
|
||||
+static void fill_dpb(struct v4l2_ctrl_h264_decode_params *decode, const H264Context *h)
|
||||
@ -174,7 +176,7 @@ index 0000000000..a5c56d81c3
|
||||
+
|
||||
+ for (int i = 0; i < h->short_ref_count; i++) {
|
||||
+ const H264Picture *pic = h->short_ref[i];
|
||||
+ if (pic)
|
||||
+ if (pic && (pic->field_poc[0] != INT_MAX || pic->field_poc[1] != INT_MAX))
|
||||
+ fill_dpb_entry(&decode->dpb[entries++], pic);
|
||||
+ }
|
||||
+
|
||||
@ -183,7 +185,7 @@ index 0000000000..a5c56d81c3
|
||||
+
|
||||
+ for (int i = 0; i < FF_ARRAY_ELEMS(h->long_ref); i++) {
|
||||
+ const H264Picture *pic = h->long_ref[i];
|
||||
+ if (pic)
|
||||
+ if (pic && (pic->field_poc[0] != INT_MAX || pic->field_poc[1] != INT_MAX))
|
||||
+ fill_dpb_entry(&decode->dpb[entries++], pic);
|
||||
+ }
|
||||
+}
|
||||
@ -299,11 +301,8 @@ index 0000000000..a5c56d81c3
|
||||
+ controls->decode_params = (struct v4l2_ctrl_h264_decode_params) {
|
||||
+ .num_slices = 0,
|
||||
+ .nal_ref_idc = h->nal_ref_idc,
|
||||
+ //.ref_pic_list_p0[32] - not required? not set by libva-v4l2-request
|
||||
+ //.ref_pic_list_b0[32] - not required? not set by libva-v4l2-request
|
||||
+ //.ref_pic_list_b1[32] - not required? not set by libva-v4l2-request
|
||||
+ .top_field_order_cnt = h->cur_pic_ptr->field_poc[0],
|
||||
+ .bottom_field_order_cnt = h->cur_pic_ptr->field_poc[1],
|
||||
+ .top_field_order_cnt = h->cur_pic_ptr->field_poc[0] != INT_MAX ? h->cur_pic_ptr->field_poc[0] : 0,
|
||||
+ .bottom_field_order_cnt = h->cur_pic_ptr->field_poc[1] != INT_MAX ? h->cur_pic_ptr->field_poc[1] : 0,
|
||||
+ };
|
||||
+
|
||||
+ if (h->picture_idr)
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 25065e4e219c6bd688e6b62e40be74f1cfa08e72 Mon Sep 17 00:00:00 2001
|
||||
From 55751072c14f2ef678489be3d527f34604bb5602 Mon Sep 17 00:00:00 2001
|
||||
From: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
Date: Sat, 15 Dec 2018 22:32:16 +0100
|
||||
Subject: [PATCH 5/6] Add V4L2 request API hevc hwaccel
|
||||
@ -15,7 +15,7 @@ Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
||||
create mode 100644 libavcodec/v4l2_request_hevc.c
|
||||
|
||||
diff --git a/configure b/configure
|
||||
index 296ca78ce7..9252ca5794 100755
|
||||
index 698a91d5dc..2d39cecbdf 100755
|
||||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -2820,6 +2820,8 @@ hevc_dxva2_hwaccel_deps="dxva2 DXVA_PicParams_HEVC"
|
||||
@ -27,7 +27,7 @@ index 296ca78ce7..9252ca5794 100755
|
||||
hevc_vaapi_hwaccel_deps="vaapi VAPictureParameterBufferHEVC"
|
||||
hevc_vaapi_hwaccel_select="hevc_decoder"
|
||||
hevc_vdpau_hwaccel_deps="vdpau VdpPictureInfoHEVC"
|
||||
@@ -6242,6 +6244,7 @@ check_cc vp9_v4l2_m2m linux/videodev2.h "int i = V4L2_PIX_FMT_VP9;"
|
||||
@@ -6246,6 +6248,7 @@ check_cc vp9_v4l2_m2m linux/videodev2.h "int i = V4L2_PIX_FMT_VP9;"
|
||||
|
||||
check_func_headers "linux/media.h linux/videodev2.h" v4l2_timeval_to_ns
|
||||
check_cc h264_v4l2_request linux/videodev2.h "int i = V4L2_PIX_FMT_H264_SLICE_RAW;"
|
||||
@ -103,7 +103,7 @@ index 003200edea..d183675abe 100644
|
||||
extern const AVHWAccel ff_hevc_videotoolbox_hwaccel;
|
||||
diff --git a/libavcodec/v4l2_request_hevc.c b/libavcodec/v4l2_request_hevc.c
|
||||
new file mode 100644
|
||||
index 0000000000..300c1866ce
|
||||
index 0000000000..38969d77fb
|
||||
--- /dev/null
|
||||
+++ b/libavcodec/v4l2_request_hevc.c
|
||||
@@ -0,0 +1,391 @@
|
||||
@ -480,7 +480,7 @@ index 0000000000..300c1866ce
|
||||
+
|
||||
+static int v4l2_request_hevc_init(AVCodecContext *avctx)
|
||||
+{
|
||||
+ return ff_v4l2_request_init(avctx, V4L2_PIX_FMT_HEVC_SLICE, 2 * 1024 * 1024, NULL, 0);
|
||||
+ return ff_v4l2_request_init(avctx, V4L2_PIX_FMT_HEVC_SLICE, 3 * 1024 * 1024, NULL, 0);
|
||||
+}
|
||||
+
|
||||
+const AVHWAccel ff_hevc_v4l2request_hwaccel = {
|
||||
|
@ -1,27 +1,50 @@
|
||||
From 583677006f15ee59600f6f30f5e79aa5f81935b9 Mon Sep 17 00:00:00 2001
|
||||
From d80cbc949372d6f19dc8c3b5f97b336864bd259c Mon Sep 17 00:00:00 2001
|
||||
From: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
Date: Thu, 14 Feb 2019 23:20:05 +0100
|
||||
Subject: [PATCH 6/6] Add and use private linux headers for V4L2 request API
|
||||
ctrls
|
||||
|
||||
---
|
||||
libavcodec/h264-ctrls.h | 192 +++++++++++++++++++++++++++++++
|
||||
libavcodec/hevc-ctrls.h | 197 ++++++++++++++++++++++++++++++++
|
||||
configure | 4 +-
|
||||
libavcodec/h264-ctrls.h | 197 +++++++++++++++++++++++++++++++
|
||||
libavcodec/hevc-ctrls.h | 203 ++++++++++++++++++++++++++++++++
|
||||
libavcodec/mpeg2-ctrls.h | 82 +++++++++++++
|
||||
libavcodec/v4l2_request_h264.c | 1 +
|
||||
libavcodec/v4l2_request_hevc.c | 1 +
|
||||
libavcodec/v4l2_request_mpeg2.c | 1 +
|
||||
6 files changed, 474 insertions(+)
|
||||
7 files changed, 487 insertions(+), 2 deletions(-)
|
||||
create mode 100644 libavcodec/h264-ctrls.h
|
||||
create mode 100644 libavcodec/hevc-ctrls.h
|
||||
create mode 100644 libavcodec/mpeg2-ctrls.h
|
||||
|
||||
diff --git a/configure b/configure
|
||||
index 2d39cecbdf..23b1e57882 100755
|
||||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -2804,7 +2804,7 @@ h264_dxva2_hwaccel_deps="dxva2"
|
||||
h264_dxva2_hwaccel_select="h264_decoder"
|
||||
h264_nvdec_hwaccel_deps="nvdec"
|
||||
h264_nvdec_hwaccel_select="h264_decoder"
|
||||
-h264_v4l2request_hwaccel_deps="v4l2_request h264_v4l2_request"
|
||||
+h264_v4l2request_hwaccel_deps="v4l2_request"
|
||||
h264_v4l2request_hwaccel_select="h264_decoder"
|
||||
h264_vaapi_hwaccel_deps="vaapi"
|
||||
h264_vaapi_hwaccel_select="h264_decoder"
|
||||
@@ -2820,7 +2820,7 @@ hevc_dxva2_hwaccel_deps="dxva2 DXVA_PicParams_HEVC"
|
||||
hevc_dxva2_hwaccel_select="hevc_decoder"
|
||||
hevc_nvdec_hwaccel_deps="nvdec"
|
||||
hevc_nvdec_hwaccel_select="hevc_decoder"
|
||||
-hevc_v4l2request_hwaccel_deps="v4l2_request hevc_v4l2_request"
|
||||
+hevc_v4l2request_hwaccel_deps="v4l2_request"
|
||||
hevc_v4l2request_hwaccel_select="hevc_decoder"
|
||||
hevc_vaapi_hwaccel_deps="vaapi VAPictureParameterBufferHEVC"
|
||||
hevc_vaapi_hwaccel_select="hevc_decoder"
|
||||
diff --git a/libavcodec/h264-ctrls.h b/libavcodec/h264-ctrls.h
|
||||
new file mode 100644
|
||||
index 0000000000..e2f83b3cdb
|
||||
index 0000000000..e1404d78d6
|
||||
--- /dev/null
|
||||
+++ b/libavcodec/h264-ctrls.h
|
||||
@@ -0,0 +1,192 @@
|
||||
@@ -0,0 +1,197 @@
|
||||
+/* SPDX-License-Identifier: GPL-2.0 */
|
||||
+/*
|
||||
+ * These are the H.264 state controls for use with stateless H.264
|
||||
@ -35,6 +58,11 @@ index 0000000000..e2f83b3cdb
|
||||
+#ifndef _H264_CTRLS_H_
|
||||
+#define _H264_CTRLS_H_
|
||||
+
|
||||
+#include <linux/videodev2.h>
|
||||
+
|
||||
+/* Our pixel format isn't stable at the moment */
|
||||
+#define V4L2_PIX_FMT_H264_SLICE_RAW v4l2_fourcc('S', '2', '6', '4') /* H264 parsed slices */
|
||||
+
|
||||
+/*
|
||||
+ * This is put insanely high to avoid conflicting with controls that
|
||||
+ * would be added during the phase where those controls are not
|
||||
@ -216,10 +244,10 @@ index 0000000000..e2f83b3cdb
|
||||
+#endif
|
||||
diff --git a/libavcodec/hevc-ctrls.h b/libavcodec/hevc-ctrls.h
|
||||
new file mode 100644
|
||||
index 0000000000..c8c61079c6
|
||||
index 0000000000..eee4479c7a
|
||||
--- /dev/null
|
||||
+++ b/libavcodec/hevc-ctrls.h
|
||||
@@ -0,0 +1,197 @@
|
||||
@@ -0,0 +1,203 @@
|
||||
+/* SPDX-License-Identifier: GPL-2.0 */
|
||||
+/*
|
||||
+ * These are the HEVC state controls for use with stateless HEVC
|
||||
@ -233,21 +261,27 @@ index 0000000000..c8c61079c6
|
||||
+#ifndef _HEVC_CTRLS_H_
|
||||
+#define _HEVC_CTRLS_H_
|
||||
+
|
||||
+#define V4L2_CID_MPEG_VIDEO_HEVC_SPS (V4L2_CID_MPEG_BASE + 645)
|
||||
+#define V4L2_CID_MPEG_VIDEO_HEVC_PPS (V4L2_CID_MPEG_BASE + 646)
|
||||
+#define V4L2_CID_MPEG_VIDEO_HEVC_SLICE_PARAMS (V4L2_CID_MPEG_BASE + 647)
|
||||
+#define V4L2_CID_MPEG_VIDEO_HEVC_SCALING_MATRIX (V4L2_CID_MPEG_BASE + 648)
|
||||
+#include <linux/videodev2.h>
|
||||
+
|
||||
+/* The pixel format isn't stable at the moment and will likely be renamed. */
|
||||
+#define V4L2_PIX_FMT_HEVC_SLICE v4l2_fourcc('S', '2', '6', '5') /* HEVC parsed slices */
|
||||
+
|
||||
+#define V4L2_CID_MPEG_VIDEO_HEVC_SPS (V4L2_CID_MPEG_BASE + 1008)
|
||||
+#define V4L2_CID_MPEG_VIDEO_HEVC_PPS (V4L2_CID_MPEG_BASE + 1009)
|
||||
+#define V4L2_CID_MPEG_VIDEO_HEVC_SLICE_PARAMS (V4L2_CID_MPEG_BASE + 1010)
|
||||
+#define V4L2_CID_MPEG_VIDEO_HEVC_SCALING_MATRIX (V4L2_CID_MPEG_BASE + 1011)
|
||||
+
|
||||
+/* enum v4l2_ctrl_type type values */
|
||||
+#define V4L2_CTRL_TYPE_HEVC_SPS 0x0115
|
||||
+#define V4L2_CTRL_TYPE_HEVC_PPS 0x0116
|
||||
+#define V4L2_CTRL_TYPE_HEVC_SLICE_PARAMS 0x0117
|
||||
+#define V4L2_CTRL_TYPE_HEVC_SCALING_MATRIX 0x0118
|
||||
+#define V4L2_CTRL_TYPE_HEVC_SPS 0x0120
|
||||
+#define V4L2_CTRL_TYPE_HEVC_PPS 0x0121
|
||||
+#define V4L2_CTRL_TYPE_HEVC_SLICE_PARAMS 0x0122
|
||||
+#define V4L2_CTRL_TYPE_HEVC_SCALING_MATRIX 0x0123
|
||||
+
|
||||
+#define V4L2_HEVC_SLICE_TYPE_B 0
|
||||
+#define V4L2_HEVC_SLICE_TYPE_P 1
|
||||
+#define V4L2_HEVC_SLICE_TYPE_I 2
|
||||
+
|
||||
+/* The controls are not stable at the moment and will likely be reworked. */
|
||||
+struct v4l2_ctrl_hevc_sps {
|
||||
+ /* ISO/IEC 23008-2, ITU-T Rec. H.265: Sequence parameter set */
|
||||
+ __u8 chroma_format_idc;
|
||||
@ -506,7 +540,7 @@ index 0000000000..6601455b3d
|
||||
+
|
||||
+#endif
|
||||
diff --git a/libavcodec/v4l2_request_h264.c b/libavcodec/v4l2_request_h264.c
|
||||
index a5c56d81c3..a5dbc08a8d 100644
|
||||
index 3687325fad..2145a974eb 100644
|
||||
--- a/libavcodec/v4l2_request_h264.c
|
||||
+++ b/libavcodec/v4l2_request_h264.c
|
||||
@@ -19,6 +19,7 @@
|
||||
@ -518,7 +552,7 @@ index a5c56d81c3..a5dbc08a8d 100644
|
||||
typedef struct V4L2RequestControlsH264 {
|
||||
struct v4l2_ctrl_h264_sps sps;
|
||||
diff --git a/libavcodec/v4l2_request_hevc.c b/libavcodec/v4l2_request_hevc.c
|
||||
index 300c1866ce..7c7948cfbf 100644
|
||||
index 38969d77fb..b73eb2ab03 100644
|
||||
--- a/libavcodec/v4l2_request_hevc.c
|
||||
+++ b/libavcodec/v4l2_request_hevc.c
|
||||
@@ -19,6 +19,7 @@
|
||||
|
@ -1,12 +1,13 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
|
||||
# Copyright (C) 2019-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="nss-mdns"
|
||||
PKG_VERSION="47edc38"
|
||||
PKG_SHA256="f02e8baeceea30e82a2ecdaa8cafdbcabfdaa33a766f6942e7dc8aa81948f7b6"
|
||||
PKG_VERSION="0.14.1"
|
||||
PKG_SHA256="4fe54bffd20e410fc41382dc6c4708cdfa3a65f50c3753f262dc4c78fd864a6e"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://github.com/lathiat/nss-mdns"
|
||||
PKG_URL="https://github.com/lathiat/nss-mdns/archive/$PKG_VERSION.tar.gz"
|
||||
PKG_URL="https://github.com/lathiat/nss-mdns/archive/v$PKG_VERSION.tar.gz"
|
||||
PKG_DEPENDS_TARGET="toolchain avahi"
|
||||
PKG_LONGDESC="A plugin for nss to allow name resolution via Multicast DNS."
|
||||
PKG_TOOLCHAIN="autotools"
|
||||
|
@ -1,70 +0,0 @@
|
||||
From 29fdeb2387e3a9cd49d5b1aa09ca23cdea60b91a Mon Sep 17 00:00:00 2001
|
||||
From: Sergei Trofimovich <slyfox@gentoo.org>
|
||||
Date: Tue, 15 Aug 2017 09:45:29 +0100
|
||||
Subject: [PATCH] src/nss.c: fix out-of-bounds memset()
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
out-of-bounds access happens at memset() call site:
|
||||
|
||||
@@ -272,9 +272,9 @@ enum nss_status _nss_mdns_gethostbyname4_r(
|
||||
// Copy address
|
||||
memcpy(&(tuple->addr), &(u.data.result[i].address), address_length);
|
||||
if(address_length < sizeof(ipv6_address_t)) {
|
||||
memset((&(tuple->addr) + address_length - sizeof(ipv6_address_t)), 0,
|
||||
(sizeof(ipv6_address_t) - address_length)
|
||||
);
|
||||
}
|
||||
|
||||
The problem here is in 'addr' type:
|
||||
struct gaih_addrtuple {
|
||||
...
|
||||
uint32_t addr[4];
|
||||
...
|
||||
};
|
||||
|
||||
It means pointer addressing is not byte-based as offsets imply and memset()
|
||||
wipes 12 bytes in hearby memory (of stack in glibc case).
|
||||
|
||||
valgrind detects the overflow as:
|
||||
|
||||
==12732== Invalid write of size 1
|
||||
==12732== at 0x4C11A29: memset (vg_replace_strmem.c:1239)
|
||||
==12732== by 0x57FA348: _nss_mdns_minimal_gethostbyname4_r (nss.c:292)
|
||||
==12732== by 0x4F016D8: gaih_inet.constprop.7 (getaddrinfo.c:806)
|
||||
==12732== by 0x4F02673: getaddrinfo (getaddrinfo.c:2317)
|
||||
==12732== by 0x4800B3B: main (a.c:34)
|
||||
|
||||
The effect is SIGSEGV-ing getaddrinfo() call on systems with
|
||||
the following nsswitch.conf:
|
||||
|
||||
hosts: files mdns_minimal [NOTFOUND=return] dns
|
||||
|
||||
The fix is to simplify memset()/memcpy() sequence.
|
||||
|
||||
Reported-by: Michał Górny
|
||||
Bug: https://bugs.gentoo.org/627770
|
||||
Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
|
||||
---
|
||||
src/nss.c | 6 +-----
|
||||
1 file changed, 1 insertion(+), 5 deletions(-)
|
||||
|
||||
diff --git a/src/nss.c b/src/nss.c
|
||||
index ebb887c..1f50bad 100644
|
||||
--- a/src/nss.c
|
||||
+++ b/src/nss.c
|
||||
@@ -271,12 +271,8 @@ enum nss_status _nss_mdns_gethostbyname4_r(
|
||||
tuple->family = u.data.result[i].af;
|
||||
|
||||
// Copy address
|
||||
+ memset(&(tuple->addr), 0, sizeof(ipv6_address_t));
|
||||
memcpy(&(tuple->addr), &(u.data.result[i].address), address_length);
|
||||
- if(address_length < sizeof(ipv6_address_t)) {
|
||||
- memset((&(tuple->addr) + address_length - sizeof(ipv6_address_t)), 0,
|
||||
- (sizeof(ipv6_address_t) - address_length)
|
||||
- );
|
||||
- }
|
||||
|
||||
// Assign interface scope id
|
||||
tuple->scopeid = u.data.result[i].scopeid;
|
@ -3,8 +3,8 @@
|
||||
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="wireless-regdb"
|
||||
PKG_VERSION="2019.03.01"
|
||||
PKG_SHA256="3a4e6f7006599bc5764f86e1e86422710da13ad80e0242147b61c6855ebc915f"
|
||||
PKG_VERSION="2019.06.03"
|
||||
PKG_SHA256="cd917ed86b63ce8d93947979f1f18948f03a4ac0ad89ec25227b36ac00dc54bf"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://wireless.kernel.org/en/developers/Regulatory"
|
||||
PKG_URL="https://www.kernel.org/pub/software/network/$PKG_NAME/$PKG_NAME-$PKG_VERSION.tar.xz"
|
||||
|
@ -3,8 +3,8 @@
|
||||
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="Mako"
|
||||
PKG_VERSION="1.0.10"
|
||||
PKG_SHA256="7165919e78e1feb68b4dbe829871ea9941398178fa58e6beedb9ba14acf63965"
|
||||
PKG_VERSION="1.0.12"
|
||||
PKG_SHA256="0cfa65de3a835e87eeca6ac856b3013aade55f49e32515f65d999f91a2324162"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://pypi.org/project/Mako"
|
||||
PKG_URL="https://files.pythonhosted.org/packages/source/${PKG_NAME:0:1}/$PKG_NAME/$PKG_NAME-$PKG_VERSION.tar.gz"
|
||||
|
@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="pycryptodome"
|
||||
PKG_VERSION="3.8.1"
|
||||
PKG_SHA256="68ad0ce4a374577a26bb7f458575abe3c2a342818b5280de6e5738870b7761b3"
|
||||
PKG_VERSION="3.8.2"
|
||||
PKG_SHA256="5bc40f8aa7ba8ca7f833ad2477b9d84e1bfd2630b22a46d9bbd221982f8c3ac0"
|
||||
PKG_LICENSE="BSD"
|
||||
PKG_SITE="https://pypi.org/project/pycryptodome"
|
||||
PKG_URL="https://files.pythonhosted.org/packages/source/${PKG_NAME:0:1}/$PKG_NAME/$PKG_NAME-$PKG_VERSION.tar.gz"
|
||||
|
@ -1,12 +1,13 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
# Copyright (C) 2009-2012 Stephan Raue (stephan@openelec.tv)
|
||||
# Copyright (C) 2019-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="nss"
|
||||
PKG_VERSION="3.37.1"
|
||||
PKG_SHA256="5ac4a388b06b2785fb7f4f0ae3c909d8cbb2ab370147ff61fe2517cc5bf3c685"
|
||||
PKG_VERSION="3.44"
|
||||
PKG_SHA256="298d86e18e96660d3c98476274b5857b48c135d809a10d6528d8661bdf834a49"
|
||||
PKG_LICENSE="Mozilla Public License"
|
||||
PKG_SITE="http://ftp.mozilla.org/"
|
||||
PKG_URL="http://ftp.mozilla.org/pub/security/nss/releases/NSS_3_37_1_RTM/src/nss-3.37.1-with-nspr-4.19.tar.gz"
|
||||
PKG_URL="http://ftp.mozilla.org/pub/security/nss/releases/NSS_3_44_RTM/src/nss-3.44-with-nspr-4.21.tar.gz"
|
||||
PKG_DEPENDS_HOST="nspr:host zlib:host"
|
||||
PKG_DEPENDS_TARGET="toolchain nss:host nspr zlib sqlite"
|
||||
PKG_LONGDESC="The Network Security Services (NSS) package is a set of libraries designed to support cross-platform development of security-enabled client and server applications"
|
||||
|
@ -1,20 +1,15 @@
|
||||
diff --git a/nss/lib/freebl/Makefile b/nss/lib/freebl/Makefile
|
||||
index e6a94d35c..0c714c85c 100644
|
||||
index bff11c7..0c714c8 100644
|
||||
--- a/nss/lib/freebl/Makefile
|
||||
+++ b/nss/lib/freebl/Makefile
|
||||
@@ -535,12 +535,14 @@ ifeq (,$(filter-out i386 x386 x86 x86_64 aarch64,$(CPU_ARCH)))
|
||||
# All intel architectures get the 64 bit version
|
||||
# With custom uint128 if necessary (faster than generic 32 bit version).
|
||||
ECL_SRCS += curve25519_64.c
|
||||
- VERIFIED_SRCS += Hacl_Curve25519.c FStar.c
|
||||
+ VERIFIED_SRCS += Hacl_Curve25519.c
|
||||
else
|
||||
# All non intel architectures get the generic 32 bit implementation (slow!)
|
||||
@@ -541,9 +541,7 @@ else
|
||||
ECL_SRCS += curve25519_32.c
|
||||
endif
|
||||
|
||||
|
||||
-ifndef HAVE_INT128_SUPPORT
|
||||
- VERIFIED_SRCS += FStar.c
|
||||
-endif
|
||||
+VERIFIED_SRCS += FStar.c
|
||||
+
|
||||
|
||||
#######################################################################
|
||||
# (5) Execute "global" rules. (OPTIONAL) #
|
||||
#######################################################################
|
||||
|
@ -2,6 +2,7 @@
|
||||
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
# Copyright (C) 2009-2014 Stephan Raue (stephan@openelec.tv)
|
||||
# Copyright (C) 2019-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
message="$message\n There is no working 'apt-get'."
|
||||
message="$message\n "
|
||||
@ -19,7 +20,7 @@ message="$message\n "
|
||||
message="$message\n Also Ubuntu or Debian packages are often outdated and not compatible"
|
||||
message="$message\n with LibreELEC"
|
||||
message="$message\n "
|
||||
message="$message\n TIP: use XBMC's addon browser to enhance your LibreELEC system"
|
||||
message="$message\n TIP: use Kodi's addon browser to enhance your LibreELEC system"
|
||||
|
||||
echo -e $message
|
||||
exit 1
|
||||
|
@ -3,8 +3,8 @@
|
||||
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="e2fsprogs"
|
||||
PKG_VERSION="1.45.1"
|
||||
PKG_SHA256="24acedbe376a9c1b5c0a0b15c9fb84b3bef4943d669caf40b2e3e41e86d95548"
|
||||
PKG_VERSION="1.45.2"
|
||||
PKG_SHA256="4952c9ae91e36d762e13cc5b9e8f7eeb5453e4aee4cd9b7402e73f2d4e65e009"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://e2fsprogs.sourceforge.net/"
|
||||
PKG_URL="https://www.kernel.org/pub/linux/kernel/people/tytso/$PKG_NAME/v$PKG_VERSION/$PKG_NAME-$PKG_VERSION.tar.xz"
|
||||
|
@ -3,8 +3,8 @@
|
||||
# Copyright (C) 2019-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="libevdev"
|
||||
PKG_VERSION="1.6.0"
|
||||
PKG_SHA256="f5005c865987d980cc1279b9ec6131b06a89fd9892f649f2a68262b8786ef814"
|
||||
PKG_VERSION="1.7.0"
|
||||
PKG_SHA256="11dbe1f2b1d03a51f3e9a196757a75c3a999042ce34cf1fdc00a2363e5a2e369"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://www.freedesktop.org/wiki/Software/libevdev/"
|
||||
PKG_URL="http://www.freedesktop.org/software/libevdev/$PKG_NAME-$PKG_VERSION.tar.xz"
|
||||
|
@ -3,8 +3,8 @@
|
||||
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="systemd"
|
||||
PKG_VERSION="239"
|
||||
PKG_SHA256="8a11b1b07d620f4c06a16e95bba4dd2a97e90efdf2a5ba47ed0a935085787a14"
|
||||
PKG_VERSION="242"
|
||||
PKG_SHA256="ec22be9a5dd94c9640e6348ed8391d1499af8ca2c2f01109198a414cff6c6cba"
|
||||
PKG_LICENSE="LGPL2.1+"
|
||||
PKG_SITE="http://www.freedesktop.org/wiki/Software/systemd"
|
||||
PKG_URL="https://github.com/systemd/systemd/archive/v$PKG_VERSION.tar.gz"
|
||||
@ -36,12 +36,14 @@ PKG_MESON_OPTS_TARGET="--libdir=/usr/lib \
|
||||
-Dqrencode=false \
|
||||
-Dgcrypt=false \
|
||||
-Dgnutls=false \
|
||||
-Dopenssl=false \
|
||||
-Delfutils=false \
|
||||
-Dzlib=false \
|
||||
-Dbzip2=false \
|
||||
-Dxz=false \
|
||||
-Dlz4=false \
|
||||
-Dxkbcommon=false \
|
||||
-Dpcre2=false \
|
||||
-Dglib=false \
|
||||
-Ddbus=false \
|
||||
-Ddefault-dnssec=no \
|
||||
@ -60,7 +62,6 @@ PKG_MESON_OPTS_TARGET="--libdir=/usr/lib \
|
||||
-Dnetworkd=false \
|
||||
-Dtimedated=false \
|
||||
-Dtimesyncd=true \
|
||||
-Dmyhostname=false \
|
||||
-Dfirstboot=false \
|
||||
-Drandomseed=false \
|
||||
-Dbacklight=false \
|
||||
@ -77,15 +78,18 @@ PKG_MESON_OPTS_TARGET="--libdir=/usr/lib \
|
||||
-Dsmack=false \
|
||||
-Dgshadow=false \
|
||||
-Didn=false \
|
||||
-Dnss-myhostname=false \
|
||||
-Dnss-mymachines=false \
|
||||
-Dnss-resolve=false \
|
||||
-Dnss-systemd=false \
|
||||
-Dman=false \
|
||||
-Dhtml=false \
|
||||
-Dbashcompletiondir=no \
|
||||
-Dzshcompletiondir=no \
|
||||
-Dkill-path=/usr/bin/kill \
|
||||
-Dkmod-path=/usr/bin/kmod \
|
||||
-Dmount-path=/usr/bin/mount \
|
||||
-Dumount-path=/usr/bin/umount"
|
||||
-Dumount-path=/usr/bin/umount \
|
||||
-Dversion-tag=${PKG_VERSION}"
|
||||
|
||||
pre_configure_target() {
|
||||
export CFLAGS="$CFLAGS -fno-schedule-insns -fno-schedule-insns2 -Wno-format-truncation"
|
||||
|
@ -1,53 +1,53 @@
|
||||
From 73f401a5a33ad3e647791685a9af14e69c7a89f6 Mon Sep 17 00:00:00 2001
|
||||
From: Stefan Saraev <stefan@saraev.ca>
|
||||
Date: Fri, 7 Aug 2015 13:25:23 +0300
|
||||
Subject: [PATCH 3/8] move hwdb.bin to /run
|
||||
From bf2776b7f9403057cb82c2697e4fca8b554db4bd Mon Sep 17 00:00:00 2001
|
||||
From: MilhouseVH <milhouseVH.github@nmacleod.com>
|
||||
Date: Thu, 11 Apr 2019 20:00:05 +0100
|
||||
Subject: [PATCH] move hwdb.bin to /run
|
||||
|
||||
---
|
||||
src/hwdb/hwdb.c | 2 +-
|
||||
src/libsystemd/sd-hwdb/sd-hwdb.c | 2 +-
|
||||
src/udev/udevadm-hwdb.c | 2 +-
|
||||
src/libsystemd/sd-hwdb/hwdb-util.c | 2 +-
|
||||
src/libsystemd/sd-hwdb/sd-hwdb.c | 2 +-
|
||||
units/systemd-hwdb-update.service.in | 2 +-
|
||||
3 files changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/src/hwdb/hwdb.c b/src/hwdb/hwdb.c
|
||||
index 446de3a..be91bfe 100644
|
||||
--- a/src/hwdb/hwdb.c
|
||||
+++ b/src/hwdb/hwdb.c
|
||||
@@ -38,7 +38,7 @@
|
||||
* Uses a Patricia/radix trie to index all matches for efficient lookup.
|
||||
*/
|
||||
|
||||
-static const char *arg_hwdb_bin_dir = "/etc/udev";
|
||||
+static const char *arg_hwdb_bin_dir = "/run";
|
||||
static const char *arg_root = "";
|
||||
diff --git a/src/libsystemd/sd-hwdb/hwdb-util.c b/src/libsystemd/sd-hwdb/hwdb-util.c
|
||||
index c83575c..6285f3d 100644
|
||||
--- a/src/libsystemd/sd-hwdb/hwdb-util.c
|
||||
+++ b/src/libsystemd/sd-hwdb/hwdb-util.c
|
||||
@@ -20,7 +20,7 @@
|
||||
#include "strv.h"
|
||||
#include "tmpfile-util.h"
|
||||
|
||||
-static const char *default_hwdb_bin_dir = "/etc/udev";
|
||||
+static const char *default_hwdb_bin_dir = "/run";
|
||||
static const char * const conf_file_dirs[] = {
|
||||
"/etc/udev/hwdb.d",
|
||||
UDEVLIBEXECDIR "/hwdb.d",
|
||||
diff --git a/src/libsystemd/sd-hwdb/sd-hwdb.c b/src/libsystemd/sd-hwdb/sd-hwdb.c
|
||||
index 61c7b44..6e1de7d 100644
|
||||
index 79fe1a8..0acbf71 100644
|
||||
--- a/src/libsystemd/sd-hwdb/sd-hwdb.c
|
||||
+++ b/src/libsystemd/sd-hwdb/sd-hwdb.c
|
||||
@@ -269,7 +269,7 @@
|
||||
@@ -299,7 +299,7 @@ static int trie_search_f(sd_hwdb *hwdb, const char *search) {
|
||||
|
||||
static const char hwdb_bin_paths[] =
|
||||
"/etc/systemd/hwdb/hwdb.bin\0"
|
||||
- "/etc/udev/hwdb.bin\0"
|
||||
+ "/run/hwdb.bin\0"
|
||||
"/usr/lib/systemd/hwdb/hwdb.bin\0"
|
||||
#ifdef HAVE_SPLIT_USR
|
||||
#if HAVE_SPLIT_USR
|
||||
"/lib/systemd/hwdb/hwdb.bin\0"
|
||||
diff --git a/src/udev/udevadm-hwdb.c b/src/udev/udevadm-hwdb.c
|
||||
index d65e40c..8889df7 100644
|
||||
--- a/src/udev/udevadm-hwdb.c
|
||||
+++ b/src/udev/udevadm-hwdb.c
|
||||
@@ -562,7 +562,7 @@ static int adm_hwdb(struct udev *udev, int argc, char *argv[]) {
|
||||
};
|
||||
const char *test = NULL;
|
||||
const char *root = "";
|
||||
- const char *hwdb_bin_dir = "/etc/udev";
|
||||
+ const char *hwdb_bin_dir = "/run";
|
||||
bool update = false;
|
||||
struct trie *trie = NULL;
|
||||
int err, c;
|
||||
diff --git a/units/systemd-hwdb-update.service.in b/units/systemd-hwdb-update.service.in
|
||||
index 259fe0d..18d617f 100644
|
||||
--- a/units/systemd-hwdb-update.service.in
|
||||
+++ b/units/systemd-hwdb-update.service.in
|
||||
@@ -16,7 +16,7 @@ After=systemd-remount-fs.service
|
||||
Before=sysinit.target shutdown.target systemd-update-done.service
|
||||
ConditionNeedsUpdate=/etc
|
||||
ConditionPathExists=|!@udevlibexecdir@/hwdb.bin
|
||||
-ConditionPathExists=|/etc/udev/hwdb.bin
|
||||
+ConditionPathExists=|/run/hwdb.bin
|
||||
ConditionDirectoryNotEmpty=|/etc/udev/hwdb.d/
|
||||
|
||||
[Service]
|
||||
--
|
||||
1.7.10.4
|
||||
2.14.1
|
||||
|
||||
|
@ -1,105 +0,0 @@
|
||||
From 75720bff62a84896e9a0654afc7cf9408cf89a38 Mon Sep 17 00:00:00 2001
|
||||
From: Filipe Brandenburger <filbranden@google.com>
|
||||
Date: Sun, 15 Jul 2018 22:43:35 -0700
|
||||
Subject: [PATCH] build-sys: Detect whether struct statx is defined in
|
||||
sys/stat.h
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Starting with glibc 2.27.9000-36.fc29, include file sys/stat.h will have a
|
||||
definition for struct statx, in which case include file linux/stat.h should be
|
||||
avoided, in order to prevent a duplicate definition.
|
||||
|
||||
In file included from ../src/basic/missing.h:18,
|
||||
from ../src/basic/util.h:28,
|
||||
from ../src/basic/hashmap.h:10,
|
||||
from ../src/shared/bus-util.h:12,
|
||||
from ../src/libsystemd/sd-bus/bus-creds.c:11:
|
||||
/usr/include/linux/stat.h:99:8: error: redefinition of ‘struct statx’
|
||||
struct statx {
|
||||
^~~~~
|
||||
In file included from /usr/include/sys/stat.h:446,
|
||||
from ../src/basic/util.h:19,
|
||||
from ../src/basic/hashmap.h:10,
|
||||
from ../src/shared/bus-util.h:12,
|
||||
from ../src/libsystemd/sd-bus/bus-creds.c:11:
|
||||
/usr/include/bits/statx.h:36:8: note: originally defined here
|
||||
struct statx
|
||||
^~~~~
|
||||
|
||||
Extend our meson.build to look for struct statx when only sys/stat.h is
|
||||
included and, in that case, do not include linux/stat.h anymore.
|
||||
|
||||
Tested that systemd builds correctly when using a glibc version that includes a
|
||||
definition for struct statx.
|
||||
|
||||
glibc Fedora RPM update:
|
||||
https://src.fedoraproject.org/rpms/glibc/c/28cb5d31fc1e5887912283c889689c47076278ae
|
||||
|
||||
glibc upstream commit:
|
||||
https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=fd70af45528d59a00eb3190ef6706cb299488fcd
|
||||
---
|
||||
meson.build | 5 +++++
|
||||
src/basic/missing.h | 5 ++++-
|
||||
src/basic/xattr-util.c | 1 -
|
||||
3 files changed, 9 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/meson.build b/meson.build
|
||||
index dd904c71487..68423bdfa5e 100644
|
||||
--- a/meson.build
|
||||
+++ b/meson.build
|
||||
@@ -425,6 +425,7 @@ decl_headers = '''
|
||||
#include <sys/stat.h>
|
||||
'''
|
||||
# FIXME: key_serial_t is only defined in keyutils.h, this is bound to fail
|
||||
+# FIXME: these should use -D_GNU_SOURCE, since that is defined at build time
|
||||
|
||||
foreach decl : ['char16_t',
|
||||
'char32_t',
|
||||
@@ -439,6 +440,10 @@ foreach decl : ['char16_t',
|
||||
conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
|
||||
endforeach
|
||||
|
||||
+conf.set10('HAVE_STRUCT_STATX_IN_SYS_STAT_H', cc.sizeof('struct statx', prefix : '''
|
||||
+#include <sys/stat.h>
|
||||
+''', args : '-D_GNU_SOURCE') > 0)
|
||||
+
|
||||
foreach decl : [['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'],
|
||||
['IN6_ADDR_GEN_MODE_STABLE_PRIVACY', 'linux/if_link.h'],
|
||||
['IFLA_VRF_TABLE', 'linux/if_link.h'],
|
||||
diff --git a/src/basic/missing.h b/src/basic/missing.h
|
||||
index 71a07d05747..14ad3d49140 100644
|
||||
--- a/src/basic/missing.h
|
||||
+++ b/src/basic/missing.h
|
||||
@@ -15,7 +15,6 @@
|
||||
#include <linux/neighbour.h>
|
||||
#include <linux/oom.h>
|
||||
#include <linux/rtnetlink.h>
|
||||
-#include <linux/stat.h>
|
||||
#include <net/ethernet.h>
|
||||
#include <stdlib.h>
|
||||
#include <sys/resource.h>
|
||||
@@ -25,6 +24,10 @@
|
||||
#include <uchar.h>
|
||||
#include <unistd.h>
|
||||
|
||||
+#if !HAVE_STRUCT_STATX_IN_SYS_STAT_H
|
||||
+#include <linux/stat.h>
|
||||
+#endif
|
||||
+
|
||||
#if HAVE_AUDIT
|
||||
#include <libaudit.h>
|
||||
#endif
|
||||
diff --git a/src/basic/xattr-util.c b/src/basic/xattr-util.c
|
||||
index c5c55ea8461..0ee0979837c 100644
|
||||
--- a/src/basic/xattr-util.c
|
||||
+++ b/src/basic/xattr-util.c
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
#include <errno.h>
|
||||
#include <fcntl.h>
|
||||
-#include <linux/stat.h>
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
@ -1,124 +0,0 @@
|
||||
From 9c869d08d82c73f62ab3527567858ce4b0cf1257 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||
Date: Wed, 18 Jul 2018 17:26:17 +0200
|
||||
Subject: [PATCH 1/2] meson: unify linux/stat.h check with other checks and use
|
||||
_GNU_SOURCE
|
||||
|
||||
Using _GNU_SOURCE is better because that's how we include the headers in the
|
||||
actual build, and some headers define different stuff when it is defined.
|
||||
sys/stat.h for example defines 'struct statx' conditionally.
|
||||
---
|
||||
meson.build | 20 ++++++++++++++------
|
||||
src/basic/missing.h | 2 +-
|
||||
2 files changed, 15 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/meson.build b/meson.build
|
||||
index 68423bdfa5e..99035d2306c 100644
|
||||
--- a/meson.build
|
||||
+++ b/meson.build
|
||||
@@ -421,11 +421,9 @@ decl_headers = '''
|
||||
#include <uchar.h>
|
||||
#include <linux/ethtool.h>
|
||||
#include <linux/fib_rules.h>
|
||||
-#include <linux/stat.h>
|
||||
#include <sys/stat.h>
|
||||
'''
|
||||
# FIXME: key_serial_t is only defined in keyutils.h, this is bound to fail
|
||||
-# FIXME: these should use -D_GNU_SOURCE, since that is defined at build time
|
||||
|
||||
foreach decl : ['char16_t',
|
||||
'char32_t',
|
||||
@@ -436,13 +434,23 @@ foreach decl : ['char16_t',
|
||||
]
|
||||
|
||||
# We get -1 if the size cannot be determined
|
||||
- have = cc.sizeof(decl, prefix : decl_headers) > 0
|
||||
+ have = cc.sizeof(decl, prefix : decl_headers, args : '-D_GNU_SOURCE') > 0
|
||||
+
|
||||
+ if decl == 'struct statx'
|
||||
+ if have
|
||||
+ want_linux_stat_h = false
|
||||
+ else
|
||||
+ have = cc.sizeof(decl,
|
||||
+ prefix : decl_headers + '#include <linux/stat.h>',
|
||||
+ args : '-D_GNU_SOURCE') > 0
|
||||
+ want_linux_stat_h = have
|
||||
+ endif
|
||||
+ endif
|
||||
+
|
||||
conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
|
||||
endforeach
|
||||
|
||||
-conf.set10('HAVE_STRUCT_STATX_IN_SYS_STAT_H', cc.sizeof('struct statx', prefix : '''
|
||||
-#include <sys/stat.h>
|
||||
-''', args : '-D_GNU_SOURCE') > 0)
|
||||
+conf.set10('WANT_LINUX_STAT_H', want_linux_stat_h)
|
||||
|
||||
foreach decl : [['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'],
|
||||
['IN6_ADDR_GEN_MODE_STABLE_PRIVACY', 'linux/if_link.h'],
|
||||
diff --git a/src/basic/missing.h b/src/basic/missing.h
|
||||
index 14ad3d49140..9044683b15f 100644
|
||||
--- a/src/basic/missing.h
|
||||
+++ b/src/basic/missing.h
|
||||
@@ -24,7 +24,7 @@
|
||||
#include <uchar.h>
|
||||
#include <unistd.h>
|
||||
|
||||
-#if !HAVE_STRUCT_STATX_IN_SYS_STAT_H
|
||||
+#if WANT_LINUX_STAT_H
|
||||
#include <linux/stat.h>
|
||||
#endif
|
||||
|
||||
|
||||
From 1d7aedf11a22d0c1aca40905e953a25f03252cde Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||
Date: Wed, 18 Jul 2018 17:42:06 +0200
|
||||
Subject: [PATCH 2/2] meson: remove false check for key_serial_t
|
||||
|
||||
key_serial_t is defined in keyutil.h, which wasn't included in the header list
|
||||
in the test, so the test always failed. We were always compiling stuff with
|
||||
!HAVE_KEY_SERIAL_T.
|
||||
|
||||
We could try to add keyutil.h to the test, but then we'd have to first check if
|
||||
it is available, which just doesn't seem worth the trouble.
|
||||
|
||||
key_serial_t should always be defined as int32_t. Let's keep the uncoditional
|
||||
define, since repeated compatible typedefs are not a problem, and it allows us
|
||||
to compile even if the header file is missing. If there's ever a change in the
|
||||
definition, we'll have to adjust the code for the different type anyway, and
|
||||
our compiler will tell us.
|
||||
---
|
||||
meson.build | 2 --
|
||||
src/basic/missing.h | 2 --
|
||||
2 files changed, 4 deletions(-)
|
||||
|
||||
diff --git a/meson.build b/meson.build
|
||||
index 99035d2306c..84656cdc7e8 100644
|
||||
--- a/meson.build
|
||||
+++ b/meson.build
|
||||
@@ -423,11 +423,9 @@ decl_headers = '''
|
||||
#include <linux/fib_rules.h>
|
||||
#include <sys/stat.h>
|
||||
'''
|
||||
-# FIXME: key_serial_t is only defined in keyutils.h, this is bound to fail
|
||||
|
||||
foreach decl : ['char16_t',
|
||||
'char32_t',
|
||||
- 'key_serial_t',
|
||||
'struct ethtool_link_settings',
|
||||
'struct fib_rule_uid_range',
|
||||
'struct statx',
|
||||
diff --git a/src/basic/missing.h b/src/basic/missing.h
|
||||
index 9044683b15f..477992fbcba 100644
|
||||
--- a/src/basic/missing.h
|
||||
+++ b/src/basic/missing.h
|
||||
@@ -1183,9 +1183,7 @@ struct input_mask {
|
||||
#define KEY_ALS_TOGGLE 0x230
|
||||
#endif
|
||||
|
||||
-#if ! HAVE_KEY_SERIAL_T
|
||||
typedef int32_t key_serial_t;
|
||||
-#endif
|
||||
|
||||
#ifndef KEYCTL_JOIN_SESSION_KEYRING
|
||||
#define KEYCTL_JOIN_SESSION_KEYRING 1
|
@ -1,40 +0,0 @@
|
||||
From 1c04c791e85f9dd5e16ae846d0c0b0a99a47076e Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
||||
Date: Sun, 19 Aug 2018 19:11:30 +0200
|
||||
Subject: [PATCH] meson: rename -Ddebug to -Ddebug-extra
|
||||
|
||||
Meson added -Doptimization and -Ddebug options, which obviously causes
|
||||
a conflict with our -Ddebug options. Let's rename it.
|
||||
|
||||
Fixes #9883.
|
||||
---
|
||||
meson.build | 2 +-
|
||||
meson_options.txt | 2 +-
|
||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/meson.build b/meson.build
|
||||
index f79ac4b12e7..2209c935ad6 100644
|
||||
--- a/meson.build
|
||||
+++ b/meson.build
|
||||
@@ -763,7 +763,7 @@ substs.set('DEBUGTTY', get_option('debug-tty'))
|
||||
|
||||
enable_debug_hashmap = false
|
||||
enable_debug_mmap_cache = false
|
||||
-foreach name : get_option('debug')
|
||||
+foreach name : get_option('debug-extra')
|
||||
if name == 'hashmap'
|
||||
enable_debug_hashmap = true
|
||||
elif name == 'mmap-cache'
|
||||
diff --git a/meson_options.txt b/meson_options.txt
|
||||
index e3140c8c110..7b1f61bf464 100644
|
||||
--- a/meson_options.txt
|
||||
+++ b/meson_options.txt
|
||||
@@ -45,7 +45,7 @@ option('debug-shell', type : 'string', value : '/bin/sh',
|
||||
description : 'path to debug shell binary')
|
||||
option('debug-tty', type : 'string', value : '/dev/tty9',
|
||||
description : 'specify the tty device for debug shell')
|
||||
-option('debug', type : 'array', choices : ['hashmap', 'mmap-cache'], value : [],
|
||||
+option('debug-extra', type : 'array', choices : ['hashmap', 'mmap-cache'], value : [],
|
||||
description : 'enable extra debugging')
|
||||
option('memory-accounting-default', type : 'boolean',
|
||||
description : 'enable MemoryAccounting= by default')
|
@ -0,0 +1,36 @@
|
||||
From 523ab5be1a84e9aa15fb62c3a15a6338b01d3961 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Cl=C3=A9ment=20P=C3=A9ron?= <peron.clem@gmail.com>
|
||||
Date: Tue, 9 Apr 2019 00:15:06 +0200
|
||||
Subject: [PATCH] plat: allwinner: common: use r_wdog instead of wdog
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Some Allwinner H6 has a broken watchdog that doesn't
|
||||
make the soc reboot.
|
||||
|
||||
Use the R_WATCHDOG instead.
|
||||
|
||||
Signed-off-by: Clément Péron <peron.clem@gmail.com>
|
||||
Change-Id: Ie95cc30a80ed517b60b30d6bc2e655a1b53f18ba
|
||||
---
|
||||
plat/allwinner/common/sunxi_pm.c | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/plat/allwinner/common/sunxi_pm.c b/plat/allwinner/common/sunxi_pm.c
|
||||
index 1d2dc93852..13e1353258 100644
|
||||
--- a/plat/allwinner/common/sunxi_pm.c
|
||||
+++ b/plat/allwinner/common/sunxi_pm.c
|
||||
@@ -20,9 +20,9 @@
|
||||
#include <sunxi_mmap.h>
|
||||
#include <sunxi_private.h>
|
||||
|
||||
-#define SUNXI_WDOG0_CTRL_REG (SUNXI_WDOG_BASE + 0x0010)
|
||||
-#define SUNXI_WDOG0_CFG_REG (SUNXI_WDOG_BASE + 0x0014)
|
||||
-#define SUNXI_WDOG0_MODE_REG (SUNXI_WDOG_BASE + 0x0018)
|
||||
+#define SUNXI_WDOG0_CTRL_REG (SUNXI_R_WDOG_BASE + 0x0010)
|
||||
+#define SUNXI_WDOG0_CFG_REG (SUNXI_R_WDOG_BASE + 0x0014)
|
||||
+#define SUNXI_WDOG0_MODE_REG (SUNXI_R_WDOG_BASE + 0x0018)
|
||||
|
||||
#define mpidr_is_valid(mpidr) ( \
|
||||
MPIDR_AFFLVL3_VAL(mpidr) == 0 && \
|
@ -3,12 +3,13 @@
|
||||
|
||||
PKG_NAME="procps-ng"
|
||||
PKG_VERSION="3.3.15"
|
||||
PKG_SHA256="10bd744ffcb3de2d591d2f6acf1a54a7ba070fdcc432a855931a5057149f0465"
|
||||
PKG_SHA256="191391fde24a1d3b9b0030d26f8dfdcbf641d36297aab7ecf2f941c5ca927e21"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://gitlab.com/procps-ng/procps"
|
||||
PKG_URL="$SOURCEFORGE_SRC/$PKG_NAME/Production/$PKG_NAME-$PKG_VERSION.tar.xz"
|
||||
PKG_URL="https://gitlab.com/procps-ng/procps/-/archive/v${PKG_VERSION}/procps-v${PKG_VERSION}.tar.bz2"
|
||||
PKG_DEPENDS_TARGET="toolchain ncurses"
|
||||
PKG_LONGDESC="Command line and full screen utilities for browsing procfs."
|
||||
PKG_TOOLCHAIN="autotools"
|
||||
PKG_BUILD_FLAGS="+pic"
|
||||
|
||||
PKG_CONFIGURE_OPTS_TARGET="ac_cv_func_malloc_0_nonnull=yes \
|
||||
|
@ -27,8 +27,8 @@ case "$PROJECT" in
|
||||
PKG_NEED_UNPACK+=" $(get_pkg_directory rkbin)"
|
||||
;;
|
||||
*)
|
||||
PKG_VERSION="2019.01"
|
||||
PKG_SHA256="50bd7e5a466ab828914d080d5f6a432345b500e8fba1ad3b7b61e95e60d51c22"
|
||||
PKG_VERSION="2019.04"
|
||||
PKG_SHA256="76b7772d156b3ddd7644c8a1736081e55b78828537ff714065d21dbade229bef"
|
||||
PKG_URL="http://ftp.denx.de/pub/u-boot/u-boot-$PKG_VERSION.tar.bz2"
|
||||
;;
|
||||
esac
|
||||
|
@ -3,8 +3,8 @@
|
||||
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="libmicrohttpd"
|
||||
PKG_VERSION="0.9.63"
|
||||
PKG_SHA256="37c36f1be177f0e37ef181a645cd3baac1000bd322a01c2eff70f3cc8c91749c"
|
||||
PKG_VERSION="0.9.64"
|
||||
PKG_SHA256="e792d8ed5990823a0baadea0adf94365999e702f6f1314ef9c555018dafc350e"
|
||||
PKG_LICENSE="LGPLv2.1"
|
||||
PKG_SITE="http://www.gnu.org/software/libmicrohttpd/"
|
||||
PKG_URL="http://ftpmirror.gnu.org/libmicrohttpd/$PKG_NAME-$PKG_VERSION.tar.gz"
|
||||
|
@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2019-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="nghttp2"
|
||||
PKG_VERSION="1.38.0"
|
||||
PKG_SHA256="ef75c761858241c6b4372fa6397aa0481a984b84b7b07c4ec7dc2d7b9eee87f8"
|
||||
PKG_VERSION="1.39.1"
|
||||
PKG_SHA256="679160766401f474731fd60c3aca095f88451e3cc4709b72306e4c34cf981448"
|
||||
PKG_LICENSE="MIT"
|
||||
PKG_SITE="http://www.linuxfromscratch.org/blfs/view/cvs/basicnet/nghttp2.html"
|
||||
PKG_URL="https://github.com/nghttp2/nghttp2/releases/download/v$PKG_VERSION/nghttp2-$PKG_VERSION.tar.xz"
|
||||
|
@ -3,8 +3,8 @@
|
||||
# Copyright (C) 2019-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="xkeyboard-config"
|
||||
PKG_VERSION="2.26"
|
||||
PKG_SHA256="393718c7460cd06c4e8cb819d943ca54812ea476f32714c4d8975c77031a038e"
|
||||
PKG_VERSION="2.27"
|
||||
PKG_SHA256="690daec8fea63526c07620c90e6f3f10aae34e94b6db6e30906173480721901f"
|
||||
PKG_LICENSE="MIT"
|
||||
PKG_SITE="http://www.X.org"
|
||||
PKG_URL="http://www.x.org/releases/individual/data/$PKG_NAME/$PKG_NAME-$PKG_VERSION.tar.bz2"
|
||||
@ -32,10 +32,3 @@ pre_configure_target() {
|
||||
--with-xkb-rules-symlink=xorg"
|
||||
fi
|
||||
}
|
||||
|
||||
pre_build_target() {
|
||||
# broken autoreconf
|
||||
( cd ${PKG_BUILD}
|
||||
intltoolize --force
|
||||
)
|
||||
}
|
||||
|
@ -1,85 +0,0 @@
|
||||
From af6c0f29dbee1cc7b280eed891592797c2e31220 Mon Sep 17 00:00:00 2001
|
||||
From: Sergey Udaltsov <sergey.udaltsov@gmail.com>
|
||||
Date: Thu, 7 Feb 2019 20:40:35 +0000
|
||||
Subject: [PATCH] Fixed broken pt layout
|
||||
|
||||
Backticks broke it, removed
|
||||
---
|
||||
symbols/pt | 62 +++++++++++++++++++++++++++---------------------------
|
||||
1 file changed, 31 insertions(+), 31 deletions(-)
|
||||
|
||||
diff --git a/symbols/pt b/symbols/pt
|
||||
index 73a1b7b..3ec0981 100644
|
||||
--- a/symbols/pt
|
||||
+++ b/symbols/pt
|
||||
@@ -221,35 +221,35 @@ xkb_symbols "colemak" {
|
||||
|
||||
name[Group1]="Portuguese (Colemak)";
|
||||
|
||||
- key `<AD01>` { [ q, Q, at, Greek_OMEGA ] };
|
||||
- key `<AD02>` { [ w, W, lstroke, Lstroke ] };
|
||||
- key `<AD03>` { [ f, F, dstroke, ordfeminine ] };
|
||||
- key `<AD04>` { [ p, P, thorn, THORN ] };
|
||||
- key `<AD05>` { [ g, G, eng, ENG ] };
|
||||
- key `<AD06>` { [ j, J, dead_hook, dead_horn ] };
|
||||
- key `<AD07>` { [ l, L, lstroke, Lstroke ] };
|
||||
- key `<AD08>` { [ u, U, downarrow, uparrow ] };
|
||||
- key `<AD09>` { [ y, Y, leftarrow, yen ] };
|
||||
- key `<AD10>` { [ ccedilla, Ccedilla, dead_acute, dead_doubleacute ] };
|
||||
-
|
||||
- key `<AC01>` { [ a, A, ae, AE ] };
|
||||
- key `<AC02>` { [ r, R, paragraph, registered ] };
|
||||
- key `<AC03>` { [ s, S, ssharp, section ] };
|
||||
- key `<AC04>` { [ t, T, tslash, Tslash ] };
|
||||
- key `<AC05>` { [ d, D, eth, ETH ] };
|
||||
- key `<AC06>` { [ h, H, hstroke, Hstroke ] };
|
||||
- key `<AC07>` { [ n, N, n, N ] };
|
||||
- key `<AC08>` { [ e, E, EuroSign, cent ] };
|
||||
- key `<AC09>` { [ i, I, rightarrow, idotless ] };
|
||||
- key `<AC10>` { [ o, O, oslash, Ooblique ] };
|
||||
-
|
||||
- key `<AB01>` { [ z, Z, guillemotleft, less ] };
|
||||
- key `<AB02>` { [ x, X, guillemotright, greater ] };
|
||||
- key `<AB03>` { [ c, C, cent, copyright ] };
|
||||
- key `<AB04>` { [ v, V, leftdoublequotemark, leftsinglequotemark ] };
|
||||
- key `<AB05>` { [ b, B, rightdoublequotemark, rightsinglequotemark ] };
|
||||
- key `<AB08>` { [ k, K, kra, ampersand ] };
|
||||
- key `<AB07>` { [ m, M, mu, masculine ] };
|
||||
-
|
||||
- key `<CAPS>` { [ BackSpace, BackSpace, BackSpace, BackSpace ] };
|
||||
+ key <AD01> { [ q, Q, at, Greek_OMEGA ] };
|
||||
+ key <AD02> { [ w, W, lstroke, Lstroke ] };
|
||||
+ key <AD03> { [ f, F, dstroke, ordfeminine ] };
|
||||
+ key <AD04> { [ p, P, thorn, THORN ] };
|
||||
+ key <AD05> { [ g, G, eng, ENG ] };
|
||||
+ key <AD06> { [ j, J, dead_hook, dead_horn ] };
|
||||
+ key <AD07> { [ l, L, lstroke, Lstroke ] };
|
||||
+ key <AD08> { [ u, U, downarrow, uparrow ] };
|
||||
+ key <AD09> { [ y, Y, leftarrow, yen ] };
|
||||
+ key <AD10> { [ ccedilla, Ccedilla, dead_acute, dead_doubleacute ] };
|
||||
+
|
||||
+ key <AC01> { [ a, A, ae, AE ] };
|
||||
+ key <AC02> { [ r, R, paragraph, registered ] };
|
||||
+ key <AC03> { [ s, S, ssharp, section ] };
|
||||
+ key <AC04> { [ t, T, tslash, Tslash ] };
|
||||
+ key <AC05> { [ d, D, eth, ETH ] };
|
||||
+ key <AC06> { [ h, H, hstroke, Hstroke ] };
|
||||
+ key <AC07> { [ n, N, n, N ] };
|
||||
+ key <AC08> { [ e, E, EuroSign, cent ] };
|
||||
+ key <AC09> { [ i, I, rightarrow, idotless ] };
|
||||
+ key <AC10> { [ o, O, oslash, Ooblique ] };
|
||||
+
|
||||
+ key <AB01> { [ z, Z, guillemotleft, less ] };
|
||||
+ key <AB02> { [ x, X, guillemotright, greater ] };
|
||||
+ key <AB03> { [ c, C, cent, copyright ] };
|
||||
+ key <AB04> { [ v, V, leftdoublequotemark, leftsinglequotemark ] };
|
||||
+ key <AB05> { [ b, B, rightdoublequotemark, rightsinglequotemark ] };
|
||||
+ key <AB08> { [ k, K, kra, ampersand ] };
|
||||
+ key <AB07> { [ m, M, mu, masculine ] };
|
||||
+
|
||||
+ key <CAPS> { [ BackSpace, BackSpace, BackSpace, BackSpace ] };
|
||||
};
|
||||
--
|
||||
2.18.1
|
||||
|
||||
|
@ -57,10 +57,10 @@ index 90b8278d..f2630ffe 100644
|
||||
<I255> = 255; // #define KEY_RFKILL 247
|
||||
|
||||
<I372> = 372; // #define KEY_FAVORITES 364
|
||||
- <I374> = 374; // #define KEY_KEYBOARD 366
|
||||
- <I382> = 382; // #define KEY_KEYBOARD 374
|
||||
<I569> = 569; // #define KEY_ROTATE_LOCK_TOGGLE 561
|
||||
|
||||
// Fake keycodes for virtual keys
|
||||
<LVL3> = 92;
|
||||
diff --git a/symbols/inet b/symbols/inet
|
||||
index 4d774fac..469a7d65 100644
|
||||
--- a/symbols/inet
|
||||
@ -69,10 +69,10 @@ index 4d774fac..469a7d65 100644
|
||||
key <I255> { [ XF86RFKill ] }; // KEY_RFKILL
|
||||
|
||||
key <I372> { [ XF86Favorites ] };
|
||||
- key <I374> { [ XF86Keyboard ] };
|
||||
- key <I382> { [ XF86Keyboard ] };
|
||||
key <I569> { [ XF86RotationLockToggle ] };
|
||||
|
||||
key <FK13> { [ XF86Tools ] };
|
||||
key <FK14> { [ XF86Launch5 ] };
|
||||
commit 3dd87655fd92a375ada3fc6d8cfe90d431baecaa
|
||||
Author: Andreas Boll <aboll@debian.org>
|
||||
Date: Mon Feb 11 14:55:34 2019 +0100
|
||||
@ -97,25 +97,25 @@ diff --git a/keycodes/evdev b/keycodes/evdev
|
||||
index f2630ffe..51a6e26d 100644
|
||||
--- a/keycodes/evdev
|
||||
+++ b/keycodes/evdev
|
||||
@@ -284,8 +284,6 @@ default xkb_keycodes "evdev" {
|
||||
@@ -284,8 +284,7 @@ default xkb_keycodes "evdev" {
|
||||
<I254> = 254; // #define KEY_WWAN 246
|
||||
<I255> = 255; // #define KEY_RFKILL 247
|
||||
|
||||
- <I372> = 372; // #define KEY_FAVORITES 364
|
||||
-
|
||||
<I569> = 569; // #define KEY_ROTATE_LOCK_TOGGLE 561
|
||||
|
||||
// Fake keycodes for virtual keys
|
||||
<LVL3> = 92;
|
||||
<MDSW> = 203;
|
||||
diff --git a/symbols/inet b/symbols/inet
|
||||
index 469a7d65..ef0635a7 100644
|
||||
--- a/symbols/inet
|
||||
+++ b/symbols/inet
|
||||
@@ -218,8 +218,6 @@ xkb_symbols "evdev" {
|
||||
@@ -218,8 +218,7 @@ xkb_symbols "evdev" {
|
||||
key <I254> { [ XF86WWAN ] }; // KEY_WWAN
|
||||
key <I255> { [ XF86RFKill ] }; // KEY_RFKILL
|
||||
|
||||
- key <I372> { [ XF86Favorites ] };
|
||||
-
|
||||
key <I569> { [ XF86RotationLockToggle ] };
|
||||
|
||||
key <FK13> { [ XF86Tools ] };
|
||||
key <FK14> { [ XF86Launch5 ] };
|
||||
key <FK15> { [ XF86Launch6 ] };
|
||||
|
@ -0,0 +1,45 @@
|
||||
From 86c0e56796658a8a3ba1246252e88a997f48a359 Mon Sep 17 00:00:00 2001
|
||||
From: MilhouseVH <milhouseVH.github@nmacleod.com>
|
||||
Date: Fri, 14 Jun 2019 01:00:37 +0100
|
||||
Subject: [PATCH] drop unsupported keycodes
|
||||
|
||||
Jun 14 00:55:54 NUC xorg-launch[722]: The XKEYBOARD keymap compiler (xkbcomp) reports:
|
||||
Jun 14 00:55:54 NUC xorg-launch[722]: > Warning: Unsupported high keycode 569 for name <I569> ignored
|
||||
Jun 14 00:55:54 NUC xorg-launch[722]: > X11 cannot support keycodes above 255.
|
||||
Jun 14 00:55:54 NUC xorg-launch[722]: > This warning only shows for the first high keycode.
|
||||
Jun 14 00:55:54 NUC xorg-launch[722]: > Internal error: Could not resolve keysym XF86RotationLockToggle
|
||||
Jun 14 00:55:54 NUC xorg-launch[722]: Errors from xkbcomp are not fatal to the X server
|
||||
---
|
||||
keycodes/evdev | 2 --
|
||||
symbols/inet | 2 --
|
||||
2 files changed, 4 deletions(-)
|
||||
|
||||
diff --git a/keycodes/evdev b/keycodes/evdev
|
||||
index bac7e36..51a6e26 100644
|
||||
--- a/keycodes/evdev
|
||||
+++ b/keycodes/evdev
|
||||
@@ -284,8 +284,6 @@ default xkb_keycodes "evdev" {
|
||||
<I254> = 254; // #define KEY_WWAN 246
|
||||
<I255> = 255; // #define KEY_RFKILL 247
|
||||
|
||||
- <I569> = 569; // #define KEY_ROTATE_LOCK_TOGGLE 561
|
||||
-
|
||||
// Fake keycodes for virtual keys
|
||||
<LVL3> = 92;
|
||||
<MDSW> = 203;
|
||||
diff --git a/symbols/inet b/symbols/inet
|
||||
index 1229617..39cf9dc 100644
|
||||
--- a/symbols/inet
|
||||
+++ b/symbols/inet
|
||||
@@ -218,8 +218,6 @@ xkb_symbols "evdev" {
|
||||
key <I254> { [ XF86WWAN ] }; // KEY_WWAN
|
||||
key <I255> { [ XF86RFKill ] }; // KEY_RFKILL
|
||||
|
||||
- key <I569> { [ XF86RotationLockToggle ] };
|
||||
-
|
||||
key <FK13> { [ XF86Tools ] };
|
||||
key <FK14> { [ XF86Launch5 ] };
|
||||
key <FK15> { [ XF86Launch6 ] };
|
||||
--
|
||||
2.14.1
|
||||
|
@ -0,0 +1,16 @@
|
||||
diff -Nur nv/kernel/nv-drm.c nv2/kernel/nv-drm.c
|
||||
--- nv/kernel/nv-drm.c 2018-05-25 06:16:20.000000000 +0200
|
||||
+++ nv2/kernel/nv-drm.c 2019-05-09 20:51:33.364278935 +0200
|
||||
@@ -146,11 +146,7 @@
|
||||
};
|
||||
|
||||
static struct drm_driver nv_drm_driver = {
|
||||
-#if defined(DRIVER_LEGACY)
|
||||
.driver_features = DRIVER_GEM | DRIVER_PRIME | DRIVER_LEGACY,
|
||||
-#else
|
||||
- .driver_features = DRIVER_GEM | DRIVER_PRIME,
|
||||
-#endif
|
||||
.load = nv_drm_load,
|
||||
.unload = nv_drm_unload,
|
||||
.fops = &nv_drm_fops,
|
||||
|
@ -28,8 +28,5 @@
|
||||
# ATF platform
|
||||
ATF_PLATFORM="sun50i_a64"
|
||||
|
||||
# additional drivers to install:
|
||||
ADDITIONAL_DRIVERS="$ADDITIONAL_DRIVERS gpu-sunxi"
|
||||
|
||||
# Mali GPU family
|
||||
MALI_FAMILY="400"
|
||||
|
@ -1,62 +0,0 @@
|
||||
From 398a7c7ab82ab344d693a62ee633351f93046d91 Mon Sep 17 00:00:00 2001
|
||||
From: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
Date: Mon, 11 Mar 2019 17:30:24 +0100
|
||||
Subject: [PATCH] orangepi win: wifi & bt
|
||||
|
||||
Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
---
|
||||
.../dts/allwinner/sun50i-a64-orangepi-win.dts | 23 +++++++++++++++++++
|
||||
1 file changed, 23 insertions(+)
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-orangepi-win.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-orangepi-win.dts
|
||||
index 510f661229dc..5ef3c62c765e 100644
|
||||
--- a/arch/arm64/boot/dts/allwinner/sun50i-a64-orangepi-win.dts
|
||||
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-orangepi-win.dts
|
||||
@@ -109,6 +109,8 @@
|
||||
wifi_pwrseq: wifi_pwrseq {
|
||||
compatible = "mmc-pwrseq-simple";
|
||||
reset-gpios = <&r_pio 0 8 GPIO_ACTIVE_LOW>; /* PL8 */
|
||||
+ clocks = <&rtc 1>;
|
||||
+ clock-names = "ext_clock";
|
||||
};
|
||||
};
|
||||
|
||||
@@ -170,6 +172,14 @@
|
||||
bus-width = <4>;
|
||||
non-removable;
|
||||
status = "okay";
|
||||
+
|
||||
+ brcmf: wifi@1 {
|
||||
+ reg = <1>;
|
||||
+ compatible = "brcm,bcm4329-fmac";
|
||||
+ interrupt-parent = <&r_pio>;
|
||||
+ interrupts = <0 7 IRQ_TYPE_LEVEL_LOW>; /* PL7 */
|
||||
+ interrupt-names = "host-wake";
|
||||
+ };
|
||||
};
|
||||
|
||||
&ohci0 {
|
||||
@@ -342,7 +352,20 @@
|
||||
&uart1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&uart1_pins>, <&uart1_rts_cts_pins>;
|
||||
+ uart-has-rtscts;
|
||||
status = "okay";
|
||||
+
|
||||
+ bluetooth {
|
||||
+ compatible = "brcm,bcm43438-bt";
|
||||
+ max-speed = <1500000>;
|
||||
+ clocks = <&rtc 1>;
|
||||
+ clock-names = "lpo";
|
||||
+ vbat-supply = <®_dldo2>;
|
||||
+ vddio-supply = <®_dldo4>;
|
||||
+ device-wakeup-gpios = <&r_pio 0 6 GPIO_ACTIVE_HIGH>; /* PL6 */
|
||||
+ host-wakeup-gpios = <&r_pio 0 5 GPIO_ACTIVE_HIGH>; /* PL5 */
|
||||
+ shutdown-gpios = <&r_pio 0 4 GPIO_ACTIVE_HIGH>; /* PL4 */
|
||||
+ };
|
||||
};
|
||||
|
||||
/* On Pi-2 connector, RTS/CTS optional */
|
||||
--
|
||||
2.21.0
|
||||
|
@ -37,8 +37,5 @@
|
||||
# Kernel target
|
||||
KERNEL_TARGET="zImage"
|
||||
|
||||
# additional drivers to install:
|
||||
ADDITIONAL_DRIVERS="$ADDITIONAL_DRIVERS gpu-sunxi"
|
||||
|
||||
# Mali GPU family
|
||||
MALI_FAMILY="400"
|
||||
|
@ -0,0 +1,12 @@
|
||||
diff --git a/arch/arm/boot/dts/sunxi-bananapi-m2-plus.dtsi b/arch/arm/boot/dts/sunxi-bananapi-m2-plus.dtsi
|
||||
index 39263e74fbb5..0ec6109ec625 100644
|
||||
--- a/arch/arm/boot/dts/sunxi-bananapi-m2-plus.dtsi
|
||||
+++ b/arch/arm/boot/dts/sunxi-bananapi-m2-plus.dtsi
|
||||
@@ -219,6 +219,7 @@
|
||||
|
||||
bluetooth {
|
||||
compatible = "brcm,bcm43438-bt";
|
||||
+ max-speed = <1500000>;
|
||||
clocks = <&rtc 1>;
|
||||
clock-names = "lpo";
|
||||
vbat-supply = <®_vcc3v3>;
|
@ -28,8 +28,5 @@
|
||||
# ATF platform
|
||||
ATF_PLATFORM="sun50i_h6"
|
||||
|
||||
# additional drivers to install:
|
||||
ADDITIONAL_DRIVERS="$ADDITIONAL_DRIVERS gpu-sunxi-midgard"
|
||||
|
||||
# Mali GPU family
|
||||
MALI_FAMILY="t720"
|
||||
|
@ -79,12 +79,12 @@ diff -Nur a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi b/arch/arm64/boot/dts/a
|
||||
};
|
||||
|
||||
+ gpu: gpu@1800000 {
|
||||
+ compatible = "arm,malit720", "arm,malit72x", "arm,malit7xx", "arm,mali-midgard";
|
||||
+ compatible = "arm,mali-t720", "arm,mali-midgard";
|
||||
+ reg = <0x01800000 0x4000>;
|
||||
+ interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>,
|
||||
+ <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>,
|
||||
+ <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
|
||||
+ interrupt-names = "JOB", "MMU", "GPU";
|
||||
+ interrupt-names = "job", "mmu", "gpu";
|
||||
+
|
||||
+ clocks = <&ccu CLK_GPU>, <&ccu CLK_BUS_GPU>;
|
||||
+ clock-names = "clk_mali", "clk_bus_mali";
|
||||
|
@ -1,240 +0,0 @@
|
||||
From ed19ec00d4d62a74857ad9c2ea1dbf9671ac3580 Mon Sep 17 00:00:00 2001
|
||||
From: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
Date: Mon, 28 Jan 2019 19:36:54 +0100
|
||||
Subject: [PATCH 1/6] dt-bindings: media: cedrus: Add H6 compatible
|
||||
|
||||
This adds a compatible for H6. H6 VPU supports 10-bit HEVC decoding and
|
||||
additional AFBC output format for HEVC.
|
||||
|
||||
Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
---
|
||||
Documentation/devicetree/bindings/media/cedrus.txt | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/Documentation/devicetree/bindings/media/cedrus.txt b/Documentation/devicetree/bindings/media/cedrus.txt
|
||||
index bce0705df953..20c82fb0c343 100644
|
||||
--- a/Documentation/devicetree/bindings/media/cedrus.txt
|
||||
+++ b/Documentation/devicetree/bindings/media/cedrus.txt
|
||||
@@ -13,6 +13,7 @@ Required properties:
|
||||
- "allwinner,sun8i-h3-video-engine"
|
||||
- "allwinner,sun50i-a64-video-engine"
|
||||
- "allwinner,sun50i-h5-video-engine"
|
||||
+ - "allwinner,sun50i-h6-video-engine"
|
||||
- reg : register base and length of VE;
|
||||
- clocks : list of clock specifiers, corresponding to entries in
|
||||
the clock-names property;
|
||||
--
|
||||
2.20.1
|
||||
|
||||
|
||||
From bb6b00e1225a5b382b723d3c2190429e15a4c607 Mon Sep 17 00:00:00 2001
|
||||
From: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
Date: Mon, 28 Jan 2019 19:45:38 +0100
|
||||
Subject: [PATCH 2/6] media: cedrus: Add a quirk for not setting DMA offset
|
||||
|
||||
H6 VPU doesn't work if DMA offset is set.
|
||||
|
||||
Add a quirk for it.
|
||||
|
||||
Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
---
|
||||
drivers/staging/media/sunxi/cedrus/cedrus.h | 3 +++
|
||||
drivers/staging/media/sunxi/cedrus/cedrus_hw.c | 3 ++-
|
||||
2 files changed, 5 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/staging/media/sunxi/cedrus/cedrus.h b/drivers/staging/media/sunxi/cedrus/cedrus.h
|
||||
index 4aedd24a9848..c57c04b41d2e 100644
|
||||
--- a/drivers/staging/media/sunxi/cedrus/cedrus.h
|
||||
+++ b/drivers/staging/media/sunxi/cedrus/cedrus.h
|
||||
@@ -28,6 +28,8 @@
|
||||
|
||||
#define CEDRUS_CAPABILITY_UNTILED BIT(0)
|
||||
|
||||
+#define CEDRUS_QUIRK_NO_DMA_OFFSET BIT(0)
|
||||
+
|
||||
enum cedrus_codec {
|
||||
CEDRUS_CODEC_MPEG2,
|
||||
|
||||
@@ -91,6 +93,7 @@ struct cedrus_dec_ops {
|
||||
|
||||
struct cedrus_variant {
|
||||
unsigned int capabilities;
|
||||
+ unsigned int quirks;
|
||||
};
|
||||
|
||||
struct cedrus_dev {
|
||||
diff --git a/drivers/staging/media/sunxi/cedrus/cedrus_hw.c b/drivers/staging/media/sunxi/cedrus/cedrus_hw.c
|
||||
index 0acf219a8c91..fbfff7c1c771 100644
|
||||
--- a/drivers/staging/media/sunxi/cedrus/cedrus_hw.c
|
||||
+++ b/drivers/staging/media/sunxi/cedrus/cedrus_hw.c
|
||||
@@ -177,7 +177,8 @@ int cedrus_hw_probe(struct cedrus_dev *dev)
|
||||
*/
|
||||
|
||||
#ifdef PHYS_PFN_OFFSET
|
||||
- dev->dev->dma_pfn_offset = PHYS_PFN_OFFSET;
|
||||
+ if (!(variant->quirks & CEDRUS_QUIRK_NO_DMA_OFFSET))
|
||||
+ dev->dev->dma_pfn_offset = PHYS_PFN_OFFSET;
|
||||
#endif
|
||||
|
||||
ret = of_reserved_mem_device_init(dev->dev);
|
||||
--
|
||||
2.20.1
|
||||
|
||||
|
||||
From 744c66f8c328ef40b6fb246f8b9f2daa9cce4d9d Mon Sep 17 00:00:00 2001
|
||||
From: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
Date: Mon, 28 Jan 2019 19:47:33 +0100
|
||||
Subject: [PATCH 3/6] media: cedrus: Add support for H6
|
||||
|
||||
H6 has improved VPU. It supports 10-bit HEVC decoding and AFBC output
|
||||
format for HEVC.
|
||||
|
||||
Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
---
|
||||
drivers/staging/media/sunxi/cedrus/cedrus.c | 9 +++++++++
|
||||
1 file changed, 9 insertions(+)
|
||||
|
||||
diff --git a/drivers/staging/media/sunxi/cedrus/cedrus.c b/drivers/staging/media/sunxi/cedrus/cedrus.c
|
||||
index ff11cbeba205..b98add3cdedd 100644
|
||||
--- a/drivers/staging/media/sunxi/cedrus/cedrus.c
|
||||
+++ b/drivers/staging/media/sunxi/cedrus/cedrus.c
|
||||
@@ -396,6 +396,11 @@ static const struct cedrus_variant sun50i_h5_cedrus_variant = {
|
||||
.capabilities = CEDRUS_CAPABILITY_UNTILED,
|
||||
};
|
||||
|
||||
+static const struct cedrus_variant sun50i_h6_cedrus_variant = {
|
||||
+ .capabilities = CEDRUS_CAPABILITY_UNTILED | CEDRUS_CAPABILITY_H265_DEC,
|
||||
+ .quirks = CEDRUS_QUIRK_NO_DMA_OFFSET,
|
||||
+};
|
||||
+
|
||||
static const struct of_device_id cedrus_dt_match[] = {
|
||||
{
|
||||
.compatible = "allwinner,sun4i-a10-video-engine",
|
||||
@@ -425,6 +430,10 @@ static const struct of_device_id cedrus_dt_match[] = {
|
||||
.compatible = "allwinner,sun50i-h5-video-engine",
|
||||
.data = &sun50i_h5_cedrus_variant,
|
||||
},
|
||||
+ {
|
||||
+ .compatible = "allwinner,sun50i-h6-video-engine",
|
||||
+ .data = &sun50i_h6_cedrus_variant,
|
||||
+ },
|
||||
{ /* sentinel */ }
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, cedrus_dt_match);
|
||||
--
|
||||
2.20.1
|
||||
|
||||
|
||||
From b4ca53c594950b80d71ac320b3505a303e7f6092 Mon Sep 17 00:00:00 2001
|
||||
From: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
Date: Mon, 28 Jan 2019 20:05:47 +0100
|
||||
Subject: [PATCH 4/6] dt-bindings: sram: sunxi: Add compatible for the H6 SRAM
|
||||
C1
|
||||
|
||||
This introduces a new compatible for the H6 SRAM C1 section, that is
|
||||
compatible with the SRAM C1 section as found on the A10.
|
||||
|
||||
Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
---
|
||||
Documentation/devicetree/bindings/sram/sunxi-sram.txt | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/Documentation/devicetree/bindings/sram/sunxi-sram.txt b/Documentation/devicetree/bindings/sram/sunxi-sram.txt
|
||||
index ab5a70bb9a64..380246a805f2 100644
|
||||
--- a/Documentation/devicetree/bindings/sram/sunxi-sram.txt
|
||||
+++ b/Documentation/devicetree/bindings/sram/sunxi-sram.txt
|
||||
@@ -63,6 +63,7 @@ The valid sections compatible for H5 are:
|
||||
|
||||
The valid sections compatible for H6 are:
|
||||
- allwinner,sun50i-h6-sram-c, allwinner,sun50i-a64-sram-c
|
||||
+ - allwinner,sun50i-h6-sram-c1, allwinner,sun4i-a10-sram-c1
|
||||
|
||||
The valid sections compatible for F1C100s are:
|
||||
- allwinner,suniv-f1c100s-sram-d, allwinner,sun4i-a10-sram-d
|
||||
--
|
||||
2.20.1
|
||||
|
||||
|
||||
From 6a505c910b90581b2a980e52f9b6fcb03d234cb7 Mon Sep 17 00:00:00 2001
|
||||
From: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
Date: Mon, 28 Jan 2019 19:53:30 +0100
|
||||
Subject: [PATCH 5/6] arm64: dts: allwinner: h6: Add support for the SRAM C1
|
||||
section
|
||||
|
||||
Add a node for H6 SRAM C1 section.
|
||||
|
||||
Manual calls it VE SRAM, but for consistency with older SoCs, SRAM C1
|
||||
name is used.
|
||||
|
||||
Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
---
|
||||
arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 14 ++++++++++++++
|
||||
1 file changed, 14 insertions(+)
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
|
||||
index d93a7add67e7..247dc0a5ce89 100644
|
||||
--- a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
|
||||
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
|
||||
@@ -167,6 +167,20 @@
|
||||
reg = <0x0000 0x1e000>;
|
||||
};
|
||||
};
|
||||
+
|
||||
+ sram_c1: sram@1a00000 {
|
||||
+ compatible = "mmio-sram";
|
||||
+ reg = <0x01a00000 0x200000>;
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <1>;
|
||||
+ ranges = <0 0x01a00000 0x200000>;
|
||||
+
|
||||
+ ve_sram: sram-section@0 {
|
||||
+ compatible = "allwinner,sun50i-h6-sram-c1",
|
||||
+ "allwinner,sun4i-a10-sram-c1";
|
||||
+ reg = <0x000000 0x200000>;
|
||||
+ };
|
||||
+ };
|
||||
};
|
||||
|
||||
ccu: clock@3001000 {
|
||||
--
|
||||
2.20.1
|
||||
|
||||
|
||||
From c1b3128ac98c05c0afde4e6e065d6b1f2ae1dfa7 Mon Sep 17 00:00:00 2001
|
||||
From: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
Date: Mon, 28 Jan 2019 19:59:27 +0100
|
||||
Subject: [PATCH 6/6] arm64: dts: allwinner: h6: Add Video Engine node
|
||||
|
||||
This adds the Video engine node for H6. It can use whole DRAM range so
|
||||
there is no need for reserved memory node.
|
||||
|
||||
Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
---
|
||||
arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 11 +++++++++++
|
||||
1 file changed, 11 insertions(+)
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
|
||||
index 247dc0a5ce89..de4b7a1f1012 100644
|
||||
--- a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
|
||||
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
|
||||
@@ -146,6 +146,17 @@
|
||||
};
|
||||
};
|
||||
|
||||
+ video-codec@1c0e000 {
|
||||
+ compatible = "allwinner,sun50i-h6-video-engine";
|
||||
+ reg = <0x01c0e000 0x2000>;
|
||||
+ clocks = <&ccu CLK_BUS_VE>, <&ccu CLK_VE>,
|
||||
+ <&ccu CLK_MBUS_VE>;
|
||||
+ clock-names = "ahb", "mod", "ram";
|
||||
+ resets = <&ccu RST_BUS_VE>;
|
||||
+ interrupts = <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>;
|
||||
+ allwinner,sram = <&ve_sram 1>;
|
||||
+ };
|
||||
+
|
||||
syscon: syscon@3000000 {
|
||||
compatible = "allwinner,sun50i-h6-system-control",
|
||||
"allwinner,sun50i-a64-system-control";
|
||||
--
|
||||
2.20.1
|
||||
|
@ -0,0 +1,91 @@
|
||||
From d117460aed81ee5cd384045a1189c9de758d17c6 Mon Sep 17 00:00:00 2001
|
||||
From: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
Date: Tue, 28 May 2019 21:05:34 +0200
|
||||
Subject: [PATCH] 10-bit HEVC hack
|
||||
|
||||
Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
---
|
||||
drivers/staging/media/sunxi/cedrus/cedrus_h265.c | 12 ++++++++++++
|
||||
drivers/staging/media/sunxi/cedrus/cedrus_regs.h | 4 ++++
|
||||
drivers/staging/media/sunxi/cedrus/cedrus_video.c | 13 +++++++++++--
|
||||
3 files changed, 27 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/staging/media/sunxi/cedrus/cedrus_h265.c b/drivers/staging/media/sunxi/cedrus/cedrus_h265.c
|
||||
index 8bbbe69ae51f..04ba7d60ebcd 100644
|
||||
--- a/drivers/staging/media/sunxi/cedrus/cedrus_h265.c
|
||||
+++ b/drivers/staging/media/sunxi/cedrus/cedrus_h265.c
|
||||
@@ -453,6 +453,18 @@ static void cedrus_h265_setup(struct cedrus_ctx *ctx,
|
||||
|
||||
cedrus_write(dev, VE_DEC_H265_DEC_PCM_CTRL, reg);
|
||||
|
||||
+ if (sps->bit_depth_luma_minus8) {
|
||||
+ unsigned int size;
|
||||
+
|
||||
+ size = ALIGN(ctx->src_fmt.width, 16) * ALIGN(ctx->src_fmt.height, 16);
|
||||
+
|
||||
+ reg = (size * 3) / 2;
|
||||
+ cedrus_write(dev, VE_DEC_H265_OFFSET_ADDR_FIRST_OUT, reg);
|
||||
+
|
||||
+ reg = DIV_ROUND_UP(ctx->src_fmt.width, 4);
|
||||
+ cedrus_write(dev, VE_DEC_H265_10BIT_CONFIGURE, ALIGN(reg, 32));
|
||||
+ }
|
||||
+
|
||||
reg = VE_DEC_H265_DEC_PPS_CTRL0_PPS_CR_QP_OFFSET(pps->pps_cr_qp_offset) |
|
||||
VE_DEC_H265_DEC_PPS_CTRL0_PPS_CB_QP_OFFSET(pps->pps_cb_qp_offset) |
|
||||
VE_DEC_H265_DEC_PPS_CTRL0_INIT_QP_MINUS26(pps->init_qp_minus26) |
|
||||
diff --git a/drivers/staging/media/sunxi/cedrus/cedrus_regs.h b/drivers/staging/media/sunxi/cedrus/cedrus_regs.h
|
||||
index d1f010ae49ef..dd69031a2779 100644
|
||||
--- a/drivers/staging/media/sunxi/cedrus/cedrus_regs.h
|
||||
+++ b/drivers/staging/media/sunxi/cedrus/cedrus_regs.h
|
||||
@@ -505,6 +505,10 @@
|
||||
|
||||
#define VE_DEC_H265_LOW_ADDR (VE_ENGINE_DEC_H265 + 0x80)
|
||||
|
||||
+#define VE_DEC_H265_OFFSET_ADDR_FIRST_OUT (VE_ENGINE_DEC_H265 + 0x84)
|
||||
+#define VE_DEC_H265_OFFSET_ADDR_SECOND_OUT (VE_ENGINE_DEC_H265 + 0x88)
|
||||
+#define VE_DEC_H265_10BIT_CONFIGURE (VE_ENGINE_DEC_H265 + 0x8c)
|
||||
+
|
||||
#define VE_DEC_H265_LOW_ADDR_PRIMARY_CHROMA(a) \
|
||||
(((a) << 24) & GENMASK(31, 24))
|
||||
#define VE_DEC_H265_LOW_ADDR_SECONDARY_CHROMA(a) \
|
||||
diff --git a/drivers/staging/media/sunxi/cedrus/cedrus_video.c b/drivers/staging/media/sunxi/cedrus/cedrus_video.c
|
||||
index d27a9e82ff91..2c2288319c9d 100644
|
||||
--- a/drivers/staging/media/sunxi/cedrus/cedrus_video.c
|
||||
+++ b/drivers/staging/media/sunxi/cedrus/cedrus_video.c
|
||||
@@ -372,6 +372,7 @@ static int cedrus_queue_setup(struct vb2_queue *vq, unsigned int *nbufs,
|
||||
struct cedrus_ctx *ctx = vb2_get_drv_priv(vq);
|
||||
struct cedrus_dev *dev = ctx->dev;
|
||||
struct v4l2_pix_format *pix_fmt;
|
||||
+ unsigned int extra_size = 0;
|
||||
u32 directions;
|
||||
|
||||
if (V4L2_TYPE_IS_OUTPUT(vq->type)) {
|
||||
@@ -380,6 +381,14 @@ static int cedrus_queue_setup(struct vb2_queue *vq, unsigned int *nbufs,
|
||||
} else {
|
||||
directions = CEDRUS_DECODE_DST;
|
||||
pix_fmt = &ctx->dst_fmt;
|
||||
+
|
||||
+ /* The HEVC decoder needs extra size on the output buffer. */
|
||||
+ if (ctx->src_fmt.pixelformat == V4L2_PIX_FMT_HEVC_SLICE) {
|
||||
+ extra_size = DIV_ROUND_UP(pix_fmt->width, 4);
|
||||
+ extra_size = ALIGN(extra_size, 32);
|
||||
+ extra_size *= ALIGN(pix_fmt->height, 16) * 3;
|
||||
+ extra_size /= 2;
|
||||
+ }
|
||||
}
|
||||
|
||||
if (!cedrus_check_format(pix_fmt->pixelformat, directions,
|
||||
@@ -387,8 +396,8 @@ static int cedrus_queue_setup(struct vb2_queue *vq, unsigned int *nbufs,
|
||||
return -EINVAL;
|
||||
|
||||
if (*nplanes) {
|
||||
- if (sizes[0] < pix_fmt->sizeimage)
|
||||
- return -EINVAL;
|
||||
+ if (sizes[0] < (pix_fmt->sizeimage + extra_size))
|
||||
+ sizes[0] = pix_fmt->sizeimage + extra_size;
|
||||
} else {
|
||||
sizes[0] = pix_fmt->sizeimage;
|
||||
*nplanes = 1;
|
||||
--
|
||||
2.21.0
|
||||
|
@ -1,25 +0,0 @@
|
||||
From 18c9a269e2b744ee84f32de9d5c6c66857725ef8 Mon Sep 17 00:00:00 2001
|
||||
From: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
Date: Sat, 15 Dec 2018 12:56:53 +0100
|
||||
Subject: [PATCH 20/20] cedrus increase frequency
|
||||
|
||||
---
|
||||
drivers/staging/media/sunxi/cedrus/cedrus_hw.h | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/staging/media/sunxi/cedrus/cedrus_hw.h b/drivers/staging/media/sunxi/cedrus/cedrus_hw.h
|
||||
index b43c77d54b95..70677571f3d3 100644
|
||||
--- a/drivers/staging/media/sunxi/cedrus/cedrus_hw.h
|
||||
+++ b/drivers/staging/media/sunxi/cedrus/cedrus_hw.h
|
||||
@@ -16,7 +16,7 @@
|
||||
#ifndef _CEDRUS_HW_H_
|
||||
#define _CEDRUS_HW_H_
|
||||
|
||||
-#define CEDRUS_CLOCK_RATE_DEFAULT 402000000
|
||||
+#define CEDRUS_CLOCK_RATE_DEFAULT 600000000
|
||||
|
||||
int cedrus_engine_enable(struct cedrus_dev *dev, enum cedrus_codec codec);
|
||||
void cedrus_engine_disable(struct cedrus_dev *dev);
|
||||
--
|
||||
2.20.0
|
||||
|
@ -1,20 +0,0 @@
|
||||
diff --git a/drivers/gpu/drm/sun4i/sun8i_dw_hdmi.c b/drivers/gpu/drm/sun4i/sun8i_dw_hdmi.c
|
||||
index caea5a9f8f1d..ba4ce576b471 100644
|
||||
--- a/drivers/gpu/drm/sun4i/sun8i_dw_hdmi.c
|
||||
+++ b/drivers/gpu/drm/sun4i/sun8i_dw_hdmi.c
|
||||
@@ -48,8 +48,13 @@ static enum drm_mode_status
|
||||
sun8i_dw_hdmi_mode_valid_h6(struct drm_connector *connector,
|
||||
const struct drm_display_mode *mode)
|
||||
{
|
||||
- /* This is max for HDMI 2.0b (4K@60Hz) */
|
||||
- if (mode->clock > 594000)
|
||||
+ /*
|
||||
+ * Controller support maximum of 594 MHz, which correlates to
|
||||
+ * 4K@60Hz 4:4:4 or RGB. However, for frequencies greater than
|
||||
+ * 340 MHz scrambling has to be enabled. Because scrambling is
|
||||
+ * not yet implemented, just limit to 340 MHz for now.
|
||||
+ */
|
||||
+ if (mode->clock > 340000)
|
||||
return MODE_CLOCK_HIGH;
|
||||
|
||||
return MODE_OK;
|
1325
projects/Allwinner/devices/H6/patches/linux/07-opi3.patch
Normal file
1325
projects/Allwinner/devices/H6/patches/linux/07-opi3.patch
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,91 @@
|
||||
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-one-plus.dts b/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-one-plus.dts
|
||||
index 12e17567ab56..fd9dcefcd223 100644
|
||||
--- a/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-one-plus.dts
|
||||
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-one-plus.dts
|
||||
@@ -9,4 +9,86 @@
|
||||
/ {
|
||||
model = "OrangePi One Plus";
|
||||
compatible = "xunlong,orangepi-one-plus", "allwinner,sun50i-h6";
|
||||
+
|
||||
+ aliases {
|
||||
+ ethernet0 = &emac;
|
||||
+ };
|
||||
+
|
||||
+ connector {
|
||||
+ compatible = "hdmi-connector";
|
||||
+ type = "a";
|
||||
+ ddc-supply = <®_ddc>;
|
||||
+
|
||||
+ port {
|
||||
+ hdmi_con_in: endpoint {
|
||||
+ remote-endpoint = <&hdmi_out_con>;
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ reg_ddc: ddc-io {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-name = "ddc-io";
|
||||
+ regulator-min-microvolt = <5000000>;
|
||||
+ regulator-max-microvolt = <5000000>;
|
||||
+ enable-active-high;
|
||||
+ gpio = <&pio 7 2 GPIO_ACTIVE_HIGH>; /* PH2 */
|
||||
+ };
|
||||
+
|
||||
+ reg_gmac_3v3: gmac-3v3 {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-name = "vcc-gmac-3v3";
|
||||
+ regulator-min-microvolt = <3300000>;
|
||||
+ regulator-max-microvolt = <3300000>;
|
||||
+ startup-delay-us = <100000>;
|
||||
+ enable-active-high;
|
||||
+ gpio = <&pio 3 6 GPIO_ACTIVE_HIGH>; /* PD6 */
|
||||
+ vin-supply = <®_aldo2>;
|
||||
+ };
|
||||
+
|
||||
+ reg_usb_vbus: vbus {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-name = "usb-vbus";
|
||||
+ regulator-min-microvolt = <5000000>;
|
||||
+ regulator-max-microvolt = <5000000>;
|
||||
+ startup-delay-us = <100000>;
|
||||
+ gpio = <&r_pio 0 5 GPIO_ACTIVE_HIGH>;
|
||||
+ enable-active-high;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&de {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&emac {
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&ext_rgmii_pins>;
|
||||
+ phy-mode = "rgmii";
|
||||
+ phy-handle = <&ext_rgmii_phy>;
|
||||
+ phy-supply = <®_gmac_3v3>;
|
||||
+ allwinner,rx-delay-ps = <200>;
|
||||
+ allwinner,tx-delay-ps = <200>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&gpu {
|
||||
+ mali-supply = <®_dcdcc>;
|
||||
+};
|
||||
+
|
||||
+&hdmi {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&hdmi_out {
|
||||
+ hdmi_out_con: endpoint {
|
||||
+ remote-endpoint = <&hdmi_con_in>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&mdio {
|
||||
+ ext_rgmii_phy: ethernet-phy@1 {
|
||||
+ compatible = "ethernet-phy-ieee802.3-c22";
|
||||
+ reg = <1>;
|
||||
+ };
|
||||
};
|
@ -1,96 +0,0 @@
|
||||
From 9413130f5b213551519c97482462a6daea9a5343 Mon Sep 17 00:00:00 2001
|
||||
From: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
Date: Tue, 2 Apr 2019 19:32:01 +0200
|
||||
Subject: [PATCH 1/2] clk: sunxi-ng: h6: Change CEC clock parent
|
||||
|
||||
Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
---
|
||||
drivers/clk/sunxi-ng/ccu-sun50i-h6.c | 11 +++++++++++
|
||||
1 file changed, 11 insertions(+)
|
||||
|
||||
diff --git a/drivers/clk/sunxi-ng/ccu-sun50i-h6.c b/drivers/clk/sunxi-ng/ccu-sun50i-h6.c
|
||||
index daf78966555e..33980067b06e 100644
|
||||
--- a/drivers/clk/sunxi-ng/ccu-sun50i-h6.c
|
||||
+++ b/drivers/clk/sunxi-ng/ccu-sun50i-h6.c
|
||||
@@ -656,6 +656,8 @@ static const char * const hdmi_cec_parents[] = { "osc32k", "pll-periph0-2x" };
|
||||
static const struct ccu_mux_fixed_prediv hdmi_cec_predivs[] = {
|
||||
{ .index = 1, .div = 36621 },
|
||||
};
|
||||
+
|
||||
+#define SUN50I_H6_HDMI_CEC_CLK_REG 0xb10
|
||||
static struct ccu_mux hdmi_cec_clk = {
|
||||
.enable = BIT(31),
|
||||
|
||||
@@ -1200,6 +1202,15 @@ static int sun50i_h6_ccu_probe(struct platform_device *pdev)
|
||||
val &= ~(GENMASK(21, 16) | BIT(0));
|
||||
writel(val | (7 << 16), reg + SUN50I_H6_PLL_AUDIO_REG);
|
||||
|
||||
+ /*
|
||||
+ * First clock parent (osc32K) is unusable for CEC. But since there
|
||||
+ * is no good way to force parent switch (both run with same frequency),
|
||||
+ * just set second clock parent here.
|
||||
+ */
|
||||
+ val = readl(reg + SUN50I_H6_HDMI_CEC_CLK_REG);
|
||||
+ val |= BIT(24);
|
||||
+ writel(val, reg + SUN50I_H6_HDMI_CEC_CLK_REG);
|
||||
+
|
||||
return sunxi_ccu_probe(pdev->dev.of_node, reg, &sun50i_h6_ccu_desc);
|
||||
}
|
||||
|
||||
--
|
||||
2.21.0
|
||||
|
||||
|
||||
From eab64a1ccf6b7cda339fdfdbfa9e1973e4cc0c85 Mon Sep 17 00:00:00 2001
|
||||
From: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
Date: Tue, 2 Apr 2019 21:15:45 +0200
|
||||
Subject: [PATCH 2/2] clk: sunxi-ng: h6: Allow video & vpu clocks to change
|
||||
parent rate
|
||||
|
||||
Video related clocks need to set rate as close as possible to the
|
||||
requested one, so they should be able to change parent clock rate.
|
||||
|
||||
VPU clock sometimes has to be set to higher than default parent clock
|
||||
rate. This is requ
|
||||
|
||||
Add CLK_SET_RATE_PARENT flag to tcon-lcd0, tcon-tv0 and ve.
|
||||
|
||||
Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
---
|
||||
drivers/clk/sunxi-ng/ccu-sun50i-h6.c | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/drivers/clk/sunxi-ng/ccu-sun50i-h6.c b/drivers/clk/sunxi-ng/ccu-sun50i-h6.c
|
||||
index 33980067b06e..3c32d7798f27 100644
|
||||
--- a/drivers/clk/sunxi-ng/ccu-sun50i-h6.c
|
||||
+++ b/drivers/clk/sunxi-ng/ccu-sun50i-h6.c
|
||||
@@ -311,7 +311,7 @@ static SUNXI_CCU_M_WITH_MUX_GATE(ve_clk, "ve", ve_parents, 0x690,
|
||||
0, 3, /* M */
|
||||
24, 1, /* mux */
|
||||
BIT(31), /* gate */
|
||||
- 0);
|
||||
+ CLK_SET_RATE_PARENT);
|
||||
|
||||
static SUNXI_CCU_GATE(bus_ve_clk, "bus-ve", "psi-ahb1-ahb2",
|
||||
0x69c, BIT(0), 0);
|
||||
@@ -691,7 +691,7 @@ static SUNXI_CCU_MUX_WITH_GATE(tcon_lcd0_clk, "tcon-lcd0",
|
||||
tcon_lcd0_parents, 0xb60,
|
||||
24, 3, /* mux */
|
||||
BIT(31), /* gate */
|
||||
- 0);
|
||||
+ CLK_SET_RATE_PARENT);
|
||||
|
||||
static SUNXI_CCU_GATE(bus_tcon_lcd0_clk, "bus-tcon-lcd0", "ahb3",
|
||||
0xb7c, BIT(0), 0);
|
||||
@@ -706,7 +706,7 @@ static SUNXI_CCU_MP_WITH_MUX_GATE(tcon_tv0_clk, "tcon-tv0",
|
||||
8, 2, /* P */
|
||||
24, 3, /* mux */
|
||||
BIT(31), /* gate */
|
||||
- 0);
|
||||
+ CLK_SET_RATE_PARENT);
|
||||
|
||||
static SUNXI_CCU_GATE(bus_tcon_tv0_clk, "bus-tcon-tv0", "ahb3",
|
||||
0xb9c, BIT(0), 0);
|
||||
--
|
||||
2.21.0
|
||||
|
@ -0,0 +1,362 @@
|
||||
diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile
|
||||
index 0e2ffdb87f..ad60ae0179 100644
|
||||
--- a/arch/arm/dts/Makefile
|
||||
+++ b/arch/arm/dts/Makefile
|
||||
@@ -467,6 +467,7 @@ dtb-$(CONFIG_MACH_SUN50I_H5) += \
|
||||
sun50i-h5-orangepi-prime.dtb \
|
||||
sun50i-h5-orangepi-zero-plus2.dtb
|
||||
dtb-$(CONFIG_MACH_SUN50I_H6) += \
|
||||
+ sun50i-h6-orangepi-3.dtb \
|
||||
sun50i-h6-orangepi-lite2.dtb \
|
||||
sun50i-h6-orangepi-one-plus.dtb \
|
||||
sun50i-h6-pine-h64.dtb
|
||||
diff --git a/arch/arm/dts/sun50i-h6-orangepi-3.dts b/arch/arm/dts/sun50i-h6-orangepi-3.dts
|
||||
new file mode 100644
|
||||
index 0000000000..8070adc39b
|
||||
--- /dev/null
|
||||
+++ b/arch/arm/dts/sun50i-h6-orangepi-3.dts
|
||||
@@ -0,0 +1,326 @@
|
||||
+// SPDX-License-Identifier: (GPL-2.0+ or MIT)
|
||||
+/*
|
||||
+ * Copyright (C) 2019 Ondřej Jirman <megous@megous.com>
|
||||
+ */
|
||||
+
|
||||
+/dts-v1/;
|
||||
+
|
||||
+#include "sun50i-h6.dtsi"
|
||||
+
|
||||
+#include <dt-bindings/gpio/gpio.h>
|
||||
+
|
||||
+/ {
|
||||
+ model = "OrangePi 3";
|
||||
+ compatible = "xunlong,orangepi-3", "allwinner,sun50i-h6";
|
||||
+
|
||||
+ aliases {
|
||||
+ serial0 = &uart0;
|
||||
+ serial1 = &uart1;
|
||||
+ ethernet0 = &emac;
|
||||
+ };
|
||||
+
|
||||
+ chosen {
|
||||
+ stdout-path = "serial0:115200n8";
|
||||
+ };
|
||||
+
|
||||
+ connector {
|
||||
+ compatible = "hdmi-connector";
|
||||
+ type = "a";
|
||||
+ ddc-supply = <®_ddc>;
|
||||
+
|
||||
+ port {
|
||||
+ hdmi_con_in: endpoint {
|
||||
+ remote-endpoint = <&hdmi_out_con>;
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ leds {
|
||||
+ compatible = "gpio-leds";
|
||||
+
|
||||
+ power {
|
||||
+ label = "orangepi:red:power";
|
||||
+ gpios = <&r_pio 0 4 GPIO_ACTIVE_HIGH>; /* PL4 */
|
||||
+ default-state = "on";
|
||||
+ };
|
||||
+
|
||||
+ status {
|
||||
+ label = "orangepi:green:status";
|
||||
+ gpios = <&r_pio 0 7 GPIO_ACTIVE_HIGH>; /* PL7 */
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ reg_ddc: ddc-io {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-name = "ddc-io";
|
||||
+ regulator-min-microvolt = <5000000>;
|
||||
+ regulator-max-microvolt = <5000000>;
|
||||
+ enable-active-high;
|
||||
+ gpio = <&pio 7 2 GPIO_ACTIVE_HIGH>; /* PH2 */
|
||||
+ };
|
||||
+
|
||||
+ reg_vcc5v: vcc5v {
|
||||
+ /* board wide 5V supply directly from the DC jack */
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-name = "vcc-5v";
|
||||
+ regulator-min-microvolt = <5000000>;
|
||||
+ regulator-max-microvolt = <5000000>;
|
||||
+ regulator-always-on;
|
||||
+ };
|
||||
+
|
||||
+ reg_vcc33_wifi: vcc33-wifi {
|
||||
+ /* Always on 3.3V regulator for WiFi and BT */
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-name = "vcc33-wifi";
|
||||
+ regulator-min-microvolt = <3300000>;
|
||||
+ regulator-max-microvolt = <3300000>;
|
||||
+ regulator-always-on;
|
||||
+ vin-supply = <®_vcc5v>;
|
||||
+ };
|
||||
+
|
||||
+ reg_vcc_wifi_io: vcc-wifi-io {
|
||||
+ /* Always on 1.8V/300mA regulator for WiFi and BT IO */
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-name = "vcc-wifi-io";
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <1800000>;
|
||||
+ regulator-always-on;
|
||||
+ vin-supply = <®_vcc33_wifi>;
|
||||
+ };
|
||||
+
|
||||
+ /*
|
||||
+ * The board uses 2.5V RGMII signalling. Power sequence to enable
|
||||
+ * the phy is to enable GMAC-2V5 and GMAC-3V3 (aldo2) power rails
|
||||
+ * at the same time and to wait 100ms.
|
||||
+ */
|
||||
+ reg_gmac_2v5: gmac-2v5 {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-name = "gmac-2v5";
|
||||
+ regulator-min-microvolt = <2500000>;
|
||||
+ regulator-max-microvolt = <2500000>;
|
||||
+ startup-delay-us = <100000>;
|
||||
+ enable-active-high;
|
||||
+ gpio = <&pio 3 6 GPIO_ACTIVE_HIGH>; /* PD6 */
|
||||
+
|
||||
+ /* The real parent of gmac-2v5 is reg_vcc5v, but we need to
|
||||
+ * enable two regulators to power the phy. This is one way
|
||||
+ * to achieve that.
|
||||
+ */
|
||||
+ vin-supply = <®_aldo2>; /* GMAC-3V3 */
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&cpu0 {
|
||||
+ cpu-supply = <®_dcdca>;
|
||||
+};
|
||||
+
|
||||
+&de {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&ehci0 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&ehci3 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&emac {
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&ext_rgmii_pins>;
|
||||
+ phy-mode = "rgmii";
|
||||
+ phy-handle = <&ext_rgmii_phy>;
|
||||
+ phy-supply = <®_gmac_2v5>;
|
||||
+ allwinner,rx-delay-ps = <1500>;
|
||||
+ allwinner,tx-delay-ps = <700>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&hdmi {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&hdmi_out {
|
||||
+ hdmi_out_con: endpoint {
|
||||
+ remote-endpoint = <&hdmi_con_in>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&mdio {
|
||||
+ ext_rgmii_phy: ethernet-phy@1 {
|
||||
+ compatible = "ethernet-phy-ieee802.3-c22";
|
||||
+ reg = <1>;
|
||||
+
|
||||
+ reset-gpios = <&pio 3 14 GPIO_ACTIVE_LOW>; /* PD14 */
|
||||
+ reset-assert-us = <15000>;
|
||||
+ reset-deassert-us = <40000>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&mmc0 {
|
||||
+ vmmc-supply = <®_cldo1>;
|
||||
+ cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */
|
||||
+ bus-width = <4>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&mmc2 {
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&mmc2_pins>;
|
||||
+ vmmc-supply = <®_cldo1>;
|
||||
+ non-removable;
|
||||
+ cap-mmc-hw-reset;
|
||||
+ bus-width = <8>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&ohci0 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&ohci3 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&pio {
|
||||
+ vcc-pc-supply = <®_bldo2>;
|
||||
+ vcc-pd-supply = <®_cldo1>;
|
||||
+ vcc-pg-supply = <®_vcc_wifi_io>;
|
||||
+};
|
||||
+
|
||||
+&r_i2c {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ axp805: pmic@36 {
|
||||
+ compatible = "x-powers,axp805", "x-powers,axp806";
|
||||
+ reg = <0x36>;
|
||||
+ interrupt-parent = <&r_intc>;
|
||||
+ interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
|
||||
+ interrupt-controller;
|
||||
+ #interrupt-cells = <1>;
|
||||
+ x-powers,self-working-mode;
|
||||
+ vina-supply = <®_vcc5v>;
|
||||
+ vinb-supply = <®_vcc5v>;
|
||||
+ vinc-supply = <®_vcc5v>;
|
||||
+ vind-supply = <®_vcc5v>;
|
||||
+ vine-supply = <®_vcc5v>;
|
||||
+ aldoin-supply = <®_vcc5v>;
|
||||
+ bldoin-supply = <®_vcc5v>;
|
||||
+ cldoin-supply = <®_vcc5v>;
|
||||
+
|
||||
+ regulators {
|
||||
+ reg_aldo1: aldo1 {
|
||||
+ regulator-always-on;
|
||||
+ regulator-min-microvolt = <3300000>;
|
||||
+ regulator-max-microvolt = <3300000>;
|
||||
+ regulator-name = "vcc-pl-led-ir";
|
||||
+ };
|
||||
+
|
||||
+ reg_aldo2: aldo2 {
|
||||
+ regulator-min-microvolt = <3300000>;
|
||||
+ regulator-max-microvolt = <3300000>;
|
||||
+ regulator-name = "vcc33-audio-tv-ephy-mac";
|
||||
+ };
|
||||
+
|
||||
+ /* ALDO3 is shorted to CLDO1 */
|
||||
+ reg_aldo3: aldo3 {
|
||||
+ regulator-always-on;
|
||||
+ regulator-min-microvolt = <3300000>;
|
||||
+ regulator-max-microvolt = <3300000>;
|
||||
+ regulator-name = "vcc33-io-pd-emmc-sd-usb-uart-1";
|
||||
+ };
|
||||
+
|
||||
+ reg_bldo1: bldo1 {
|
||||
+ regulator-always-on;
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <1800000>;
|
||||
+ regulator-name = "vcc18-dram-bias-pll";
|
||||
+ };
|
||||
+
|
||||
+ reg_bldo2: bldo2 {
|
||||
+ regulator-always-on;
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <1800000>;
|
||||
+ regulator-name = "vcc-efuse-pcie-hdmi-pc";
|
||||
+ };
|
||||
+
|
||||
+ bldo3 {
|
||||
+ /* unused */
|
||||
+ };
|
||||
+
|
||||
+ bldo4 {
|
||||
+ /* unused */
|
||||
+ };
|
||||
+
|
||||
+ reg_cldo1: cldo1 {
|
||||
+ regulator-always-on;
|
||||
+ regulator-min-microvolt = <3300000>;
|
||||
+ regulator-max-microvolt = <3300000>;
|
||||
+ regulator-name = "vcc33-io-pd-emmc-sd-usb-uart-2";
|
||||
+ };
|
||||
+
|
||||
+ cldo2 {
|
||||
+ /* unused */
|
||||
+ };
|
||||
+
|
||||
+ cldo3 {
|
||||
+ /* unused */
|
||||
+ };
|
||||
+
|
||||
+ reg_dcdca: dcdca {
|
||||
+ regulator-always-on;
|
||||
+ regulator-min-microvolt = <800000>;
|
||||
+ regulator-max-microvolt = <1160000>;
|
||||
+ regulator-name = "vdd-cpu";
|
||||
+ };
|
||||
+
|
||||
+ reg_dcdcc: dcdcc {
|
||||
+ regulator-min-microvolt = <810000>;
|
||||
+ regulator-max-microvolt = <1080000>;
|
||||
+ regulator-name = "vdd-gpu";
|
||||
+ };
|
||||
+
|
||||
+ reg_dcdcd: dcdcd {
|
||||
+ regulator-always-on;
|
||||
+ regulator-min-microvolt = <960000>;
|
||||
+ regulator-max-microvolt = <960000>;
|
||||
+ regulator-name = "vdd-sys";
|
||||
+ };
|
||||
+
|
||||
+ reg_dcdce: dcdce {
|
||||
+ regulator-always-on;
|
||||
+ regulator-min-microvolt = <1200000>;
|
||||
+ regulator-max-microvolt = <1200000>;
|
||||
+ regulator-name = "vcc-dram";
|
||||
+ };
|
||||
+
|
||||
+ sw {
|
||||
+ /* unused */
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&uart0 {
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&uart0_ph_pins>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&usb2otg {
|
||||
+ /*
|
||||
+ * This board doesn't have a controllable VBUS even though it
|
||||
+ * does have an ID pin. Using it as anything but a USB host is
|
||||
+ * unsafe.
|
||||
+ */
|
||||
+ dr_mode = "host";
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&usb2phy {
|
||||
+ usb0_id_det-gpios = <&pio 2 15 GPIO_ACTIVE_HIGH>; /* PC15 */
|
||||
+ usb0_vbus-supply = <®_vcc5v>;
|
||||
+ usb3_vbus-supply = <®_vcc5v>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
diff --git a/configs/orangepi_3_defconfig b/configs/orangepi_3_defconfig
|
||||
new file mode 100644
|
||||
index 0000000000..9a9cd28142
|
||||
--- /dev/null
|
||||
+++ b/configs/orangepi_3_defconfig
|
||||
@@ -0,0 +1,12 @@
|
||||
+CONFIG_ARM=y
|
||||
+CONFIG_ARCH_SUNXI=y
|
||||
+CONFIG_SPL=y
|
||||
+CONFIG_MACH_SUN50I_H6=y
|
||||
+CONFIG_MMC0_CD_PIN="PF6"
|
||||
+# CONFIG_PSCI_RESET is not set
|
||||
+CONFIG_NR_DRAM_BANKS=1
|
||||
+# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
|
||||
+# CONFIG_CMD_FLASH is not set
|
||||
+# CONFIG_SPL_DOS_PARTITION is not set
|
||||
+# CONFIG_SPL_EFI_PARTITION is not set
|
||||
+CONFIG_DEFAULT_DEVICE_TREE="sun50i-h6-orangepi-3"
|
@ -0,0 +1,82 @@
|
||||
diff --git a/arch/arm/dts/sun50i-h6-orangepi-one-plus.dts b/arch/arm/dts/sun50i-h6-orangepi-one-plus.dts
|
||||
index 12e17567ab..4c3447417f 100644
|
||||
--- a/arch/arm/dts/sun50i-h6-orangepi-one-plus.dts
|
||||
+++ b/arch/arm/dts/sun50i-h6-orangepi-one-plus.dts
|
||||
@@ -9,4 +9,77 @@
|
||||
/ {
|
||||
model = "OrangePi One Plus";
|
||||
compatible = "xunlong,orangepi-one-plus", "allwinner,sun50i-h6";
|
||||
+
|
||||
+ aliases {
|
||||
+ ethernet0 = &emac;
|
||||
+ };
|
||||
+
|
||||
+ connector {
|
||||
+ compatible = "hdmi-connector";
|
||||
+ type = "a";
|
||||
+ ddc-supply = <®_ddc>;
|
||||
+
|
||||
+ port {
|
||||
+ hdmi_con_in: endpoint {
|
||||
+ remote-endpoint = <&hdmi_out_con>;
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ reg_ddc: ddc-io {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-name = "ddc-io";
|
||||
+ regulator-min-microvolt = <5000000>;
|
||||
+ regulator-max-microvolt = <5000000>;
|
||||
+ enable-active-high;
|
||||
+ gpio = <&pio 7 2 GPIO_ACTIVE_HIGH>; /* PH2 */
|
||||
+ };
|
||||
+
|
||||
+ reg_gmac_2v5: gmac-2v5 {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-name = "gmac-2v5";
|
||||
+ regulator-min-microvolt = <2500000>;
|
||||
+ regulator-max-microvolt = <2500000>;
|
||||
+ startup-delay-us = <100000>;
|
||||
+ enable-active-high;
|
||||
+ gpio = <&pio 3 6 GPIO_ACTIVE_HIGH>; /* PD6 */
|
||||
+
|
||||
+ /* The real parent of gmac-2v5 is reg_vcc5v, but we need to
|
||||
+ * enable two regulators to power the phy. This is one way
|
||||
+ * to achieve that.
|
||||
+ */
|
||||
+ vin-supply = <®_aldo2>; /* GMAC-3V3 */
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&de {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&emac {
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&ext_rgmii_pins>;
|
||||
+ phy-mode = "rgmii";
|
||||
+ phy-handle = <&ext_rgmii_phy>;
|
||||
+ phy-supply = <®_gmac_2v5>;
|
||||
+ allwinner,rx-delay-ps = <1500>;
|
||||
+ allwinner,tx-delay-ps = <700>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&hdmi {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&hdmi_out {
|
||||
+ hdmi_out_con: endpoint {
|
||||
+ remote-endpoint = <&hdmi_con_in>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&mdio {
|
||||
+ ext_rgmii_phy: ethernet-phy@1 {
|
||||
+ compatible = "ethernet-phy-ieee802.3-c22";
|
||||
+ reg = <1>;
|
||||
+ };
|
||||
};
|
@ -1,15 +1,16 @@
|
||||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# Linux/arm64 5.0.2 Kernel Configuration
|
||||
# Linux/arm64 5.1.6 Kernel Configuration
|
||||
#
|
||||
|
||||
#
|
||||
# Compiler: aarch64-linux-gnu-gcc.real (Linaro GCC 7.3-2018.05) 7.3.1 20180425 [linaro-7.3-2018.05 revision d29120a424ecfbc167ef90065c0eeb7f91977701]
|
||||
# Compiler: aarch64-linux-gnu-gcc.real (GNU Toolchain for the A-profile Architecture 8.3-2019.03 (arm-rel-8.36)) 8.3.0
|
||||
#
|
||||
CONFIG_CC_IS_GCC=y
|
||||
CONFIG_GCC_VERSION=70301
|
||||
CONFIG_GCC_VERSION=80300
|
||||
CONFIG_CLANG_VERSION=0
|
||||
CONFIG_CC_HAS_ASM_GOTO=y
|
||||
CONFIG_CC_HAS_WARN_MAYBE_UNINITIALIZED=y
|
||||
CONFIG_IRQ_WORK=y
|
||||
CONFIG_BUILDTIME_EXTABLE_SORT=y
|
||||
CONFIG_THREAD_INFO_IN_TASK=y
|
||||
@ -180,6 +181,7 @@ CONFIG_TIMERFD=y
|
||||
CONFIG_EVENTFD=y
|
||||
CONFIG_SHMEM=y
|
||||
CONFIG_AIO=y
|
||||
CONFIG_IO_URING=y
|
||||
CONFIG_ADVISE_SYSCALLS=y
|
||||
CONFIG_MEMBARRIER=y
|
||||
CONFIG_KALLSYMS=y
|
||||
@ -247,6 +249,7 @@ CONFIG_ARCH_SUNXI=y
|
||||
# CONFIG_ARCH_BCM2835 is not set
|
||||
# CONFIG_ARCH_BCM_IPROC is not set
|
||||
# CONFIG_ARCH_BERLIN is not set
|
||||
# CONFIG_ARCH_BITMAIN is not set
|
||||
# CONFIG_ARCH_BRCMSTB is not set
|
||||
# CONFIG_ARCH_EXYNOS is not set
|
||||
# CONFIG_ARCH_K3 is not set
|
||||
@ -293,6 +296,7 @@ CONFIG_ARM64_ERRATUM_1024718=y
|
||||
CONFIG_ARM64_ERRATUM_1188873=y
|
||||
CONFIG_ARM64_ERRATUM_1165522=y
|
||||
CONFIG_ARM64_ERRATUM_1286807=y
|
||||
CONFIG_ARM64_ERRATUM_1463225=y
|
||||
CONFIG_CAVIUM_ERRATUM_22375=y
|
||||
CONFIG_CAVIUM_ERRATUM_23144=y
|
||||
CONFIG_CAVIUM_ERRATUM_23154=y
|
||||
@ -305,6 +309,7 @@ CONFIG_QCOM_QDF2400_ERRATUM_0065=y
|
||||
CONFIG_SOCIONEXT_SYNQUACER_PREITS=y
|
||||
CONFIG_HISILICON_ERRATUM_161600802=y
|
||||
CONFIG_QCOM_FALKOR_ERRATUM_E1041=y
|
||||
CONFIG_FUJITSU_ERRATUM_010001=y
|
||||
CONFIG_ARM64_4K_PAGES=y
|
||||
# CONFIG_ARM64_16K_PAGES is not set
|
||||
# CONFIG_ARM64_64K_PAGES is not set
|
||||
@ -389,6 +394,7 @@ CONFIG_EFI=y
|
||||
CONFIG_DMI=y
|
||||
CONFIG_COMPAT=y
|
||||
CONFIG_SYSVIPC_COMPAT=y
|
||||
CONFIG_ARCH_ENABLE_HUGEPAGE_MIGRATION=y
|
||||
|
||||
#
|
||||
# Power management options
|
||||
@ -426,6 +432,7 @@ CONFIG_CPU_IDLE=y
|
||||
CONFIG_CPU_IDLE_MULTIPLE_DRIVERS=y
|
||||
# CONFIG_CPU_IDLE_GOV_LADDER is not set
|
||||
CONFIG_CPU_IDLE_GOV_MENU=y
|
||||
# CONFIG_CPU_IDLE_GOV_TEO is not set
|
||||
CONFIG_DT_IDLE_STATES=y
|
||||
|
||||
#
|
||||
@ -472,7 +479,6 @@ CONFIG_ARM_SCPI_POWER_DOMAIN=y
|
||||
# CONFIG_ARM_SDE_INTERFACE is not set
|
||||
CONFIG_DMIID=y
|
||||
# CONFIG_DMI_SYSFS is not set
|
||||
# CONFIG_INTEL_STRATIX10_SERVICE is not set
|
||||
CONFIG_HAVE_ARM_SMCCC=y
|
||||
# CONFIG_GOOGLE_FIRMWARE is not set
|
||||
|
||||
@ -488,6 +494,7 @@ CONFIG_EFI_ARMSTUB_DTB_LOADER=y
|
||||
CONFIG_EFI_CAPSULE_LOADER=y
|
||||
# CONFIG_EFI_TEST is not set
|
||||
# CONFIG_RESET_ATTACK_MITIGATION is not set
|
||||
CONFIG_EFI_EARLYCON=y
|
||||
|
||||
#
|
||||
# Tegra firmware driver
|
||||
@ -571,6 +578,7 @@ CONFIG_ARCH_MMAP_RND_COMPAT_BITS=11
|
||||
CONFIG_CLONE_BACKWARDS=y
|
||||
CONFIG_OLD_SIGSUSPEND3=y
|
||||
CONFIG_COMPAT_OLD_SIGACTION=y
|
||||
CONFIG_64BIT_TIME=y
|
||||
CONFIG_COMPAT_32BIT_TIME=y
|
||||
CONFIG_HAVE_ARCH_VMAP_STACK=y
|
||||
CONFIG_VMAP_STACK=y
|
||||
@ -580,15 +588,15 @@ CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y
|
||||
CONFIG_STRICT_MODULE_RWX=y
|
||||
CONFIG_REFCOUNT_FULL=y
|
||||
CONFIG_HAVE_ARCH_PREL32_RELOCATIONS=y
|
||||
CONFIG_ARCH_USE_MEMREMAP_PROT=y
|
||||
|
||||
#
|
||||
# GCOV-based kernel profiling
|
||||
#
|
||||
# CONFIG_GCOV_KERNEL is not set
|
||||
CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y
|
||||
CONFIG_PLUGIN_HOSTCC="g++"
|
||||
CONFIG_PLUGIN_HOSTCC=""
|
||||
CONFIG_HAVE_GCC_PLUGINS=y
|
||||
# CONFIG_GCC_PLUGINS is not set
|
||||
CONFIG_RT_MUTEXES=y
|
||||
CONFIG_BASE_SMALL=0
|
||||
CONFIG_MODULES=y
|
||||
@ -708,6 +716,7 @@ CONFIG_SKB_EXTENSIONS=y
|
||||
CONFIG_PACKET=y
|
||||
# CONFIG_PACKET_DIAG is not set
|
||||
CONFIG_UNIX=y
|
||||
CONFIG_UNIX_SCM=y
|
||||
# CONFIG_UNIX_DIAG is not set
|
||||
# CONFIG_TLS is not set
|
||||
CONFIG_XFRM=y
|
||||
@ -819,6 +828,7 @@ CONFIG_NF_NAT_NEEDED=y
|
||||
CONFIG_NF_NAT_FTP=m
|
||||
CONFIG_NF_NAT_TFTP=m
|
||||
CONFIG_NF_NAT_REDIRECT=y
|
||||
CONFIG_NF_NAT_MASQUERADE=y
|
||||
# CONFIG_NF_TABLES is not set
|
||||
CONFIG_NETFILTER_XTABLES=m
|
||||
|
||||
@ -960,8 +970,6 @@ CONFIG_NF_DEFRAG_IPV4=m
|
||||
# CONFIG_NF_LOG_ARP is not set
|
||||
CONFIG_NF_LOG_IPV4=m
|
||||
CONFIG_NF_REJECT_IPV4=m
|
||||
CONFIG_NF_NAT_IPV4=m
|
||||
CONFIG_NF_NAT_MASQUERADE_IPV4=y
|
||||
CONFIG_IP_NF_IPTABLES=m
|
||||
# CONFIG_IP_NF_MATCH_AH is not set
|
||||
# CONFIG_IP_NF_MATCH_ECN is not set
|
||||
@ -990,8 +998,6 @@ CONFIG_IP_NF_MANGLE=m
|
||||
# CONFIG_NF_DUP_IPV6 is not set
|
||||
CONFIG_NF_REJECT_IPV6=m
|
||||
CONFIG_NF_LOG_IPV6=m
|
||||
CONFIG_NF_NAT_IPV6=m
|
||||
CONFIG_NF_NAT_MASQUERADE_IPV6=y
|
||||
CONFIG_IP6_NF_IPTABLES=m
|
||||
# CONFIG_IP6_NF_MATCH_AH is not set
|
||||
# CONFIG_IP6_NF_MATCH_EUI64 is not set
|
||||
@ -1214,7 +1220,6 @@ CONFIG_NET_9P=y
|
||||
CONFIG_DST_CACHE=y
|
||||
CONFIG_GRO_CELLS=y
|
||||
# CONFIG_NET_DEVLINK is not set
|
||||
CONFIG_MAY_USE_DEVLINK=y
|
||||
CONFIG_FAILOVER=y
|
||||
CONFIG_HAVE_EBPF_JIT=y
|
||||
|
||||
@ -1258,17 +1263,6 @@ CONFIG_REGMAP_MMIO=y
|
||||
CONFIG_REGMAP_IRQ=y
|
||||
CONFIG_DMA_SHARED_BUFFER=y
|
||||
# CONFIG_DMA_FENCE_TRACE is not set
|
||||
CONFIG_DMA_CMA=y
|
||||
|
||||
#
|
||||
# Default contiguous memory area size:
|
||||
#
|
||||
CONFIG_CMA_SIZE_MBYTES=256
|
||||
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
|
||||
CONFIG_GENERIC_ARCH_TOPOLOGY=y
|
||||
|
||||
#
|
||||
@ -1364,9 +1358,9 @@ CONFIG_MTD_NAND_DENALI_DT=y
|
||||
#
|
||||
# CONFIG_MTD_LPDDR is not set
|
||||
CONFIG_MTD_SPI_NOR=y
|
||||
# CONFIG_MTD_MT81xx_NOR is not set
|
||||
CONFIG_MTD_SPI_NOR_USE_4K_SECTORS=y
|
||||
# CONFIG_SPI_CADENCE_QUADSPI is not set
|
||||
# CONFIG_SPI_MTK_QUADSPI is not set
|
||||
# CONFIG_MTD_UBI is not set
|
||||
CONFIG_DTC=y
|
||||
CONFIG_OF=y
|
||||
@ -1459,6 +1453,7 @@ CONFIG_EEPROM_AT25=m
|
||||
#
|
||||
# VOP Bus Driver
|
||||
#
|
||||
# CONFIG_VOP_BUS is not set
|
||||
|
||||
#
|
||||
# Intel MIC Host Driver
|
||||
@ -1526,7 +1521,6 @@ CONFIG_SCSI_UFSHCD_PLATFORM=m
|
||||
# CONFIG_SCSI_UFS_BSG is not set
|
||||
# CONFIG_SCSI_DEBUG is not set
|
||||
# CONFIG_SCSI_DH is not set
|
||||
# CONFIG_SCSI_OSD_INITIATOR is not set
|
||||
CONFIG_HAVE_PATA_PLATFORM=y
|
||||
CONFIG_ATA=y
|
||||
CONFIG_ATA_VERBOSE_ERROR=y
|
||||
@ -1603,6 +1597,7 @@ CONFIG_DUMMY=m
|
||||
# CONFIG_NET_TEAM is not set
|
||||
CONFIG_MACVLAN=m
|
||||
CONFIG_MACVTAP=m
|
||||
CONFIG_IPVLAN_L3S=y
|
||||
CONFIG_IPVLAN=m
|
||||
# CONFIG_IPVTAP is not set
|
||||
CONFIG_VXLAN=m
|
||||
@ -1698,8 +1693,8 @@ CONFIG_STMMAC_ETH=y
|
||||
CONFIG_STMMAC_PLATFORM=y
|
||||
# CONFIG_DWMAC_DWC_QOS_ETH is not set
|
||||
CONFIG_DWMAC_GENERIC=y
|
||||
CONFIG_DWMAC_SUNXI=y
|
||||
CONFIG_DWMAC_SUN8I=y
|
||||
CONFIG_DWMAC_SUNXI=m
|
||||
CONFIG_DWMAC_SUN8I=m
|
||||
CONFIG_NET_VENDOR_SYNOPSYS=y
|
||||
# CONFIG_DWC_XLGMAC is not set
|
||||
CONFIG_NET_VENDOR_VIA=y
|
||||
@ -1715,6 +1710,7 @@ CONFIG_MDIO_BITBANG=y
|
||||
CONFIG_MDIO_BUS_MUX=y
|
||||
# CONFIG_MDIO_BUS_MUX_GPIO is not set
|
||||
CONFIG_MDIO_BUS_MUX_MMIOREG=y
|
||||
# CONFIG_MDIO_BUS_MUX_MULTIPLEXER is not set
|
||||
# CONFIG_MDIO_GPIO is not set
|
||||
# CONFIG_MDIO_HISI_FEMAC is not set
|
||||
# CONFIG_MDIO_MSCC_MIIM is not set
|
||||
@ -1939,7 +1935,6 @@ CONFIG_KEYBOARD_GPIO=y
|
||||
# CONFIG_KEYBOARD_OMAP4 is not set
|
||||
# CONFIG_KEYBOARD_TM2_TOUCHKEY is not set
|
||||
# CONFIG_KEYBOARD_XTKBD is not set
|
||||
CONFIG_KEYBOARD_CROS_EC=y
|
||||
# CONFIG_KEYBOARD_CAP11XX is not set
|
||||
# CONFIG_KEYBOARD_BCM is not set
|
||||
# CONFIG_INPUT_MOUSE is not set
|
||||
@ -2016,6 +2011,7 @@ CONFIG_INPUT_MISC=y
|
||||
# CONFIG_INPUT_ATMEL_CAPTOUCH is not set
|
||||
# CONFIG_INPUT_BMA150 is not set
|
||||
# CONFIG_INPUT_E3X0_BUTTON is not set
|
||||
# CONFIG_INPUT_MSM_VIBRATOR is not set
|
||||
# CONFIG_INPUT_MMA8450 is not set
|
||||
# CONFIG_INPUT_GP2A is not set
|
||||
# CONFIG_INPUT_GPIO_BEEPER is not set
|
||||
@ -2077,6 +2073,7 @@ CONFIG_LEGACY_PTY_COUNT=16
|
||||
# CONFIG_SERIAL_NONSTANDARD is not set
|
||||
# CONFIG_N_GSM is not set
|
||||
# CONFIG_TRACE_SINK is not set
|
||||
CONFIG_LDISC_AUTOLOAD=y
|
||||
CONFIG_DEVMEM=y
|
||||
|
||||
#
|
||||
@ -2129,7 +2126,6 @@ CONFIG_SERIAL_DEV_CTRL_TTYPORT=y
|
||||
# CONFIG_IPMI_HANDLER is not set
|
||||
CONFIG_HW_RANDOM=m
|
||||
# CONFIG_HW_RANDOM_TIMERIOMEM is not set
|
||||
# CONFIG_R3964 is not set
|
||||
# CONFIG_RAW_DRIVER is not set
|
||||
CONFIG_TCG_TPM=y
|
||||
# CONFIG_TCG_TIS is not set
|
||||
@ -2201,7 +2197,6 @@ CONFIG_I2C_RK3X=y
|
||||
#
|
||||
# Other I2C/SMBus bus drivers
|
||||
#
|
||||
CONFIG_I2C_CROS_EC_TUNNEL=y
|
||||
# CONFIG_I2C_STUB is not set
|
||||
CONFIG_I2C_SLAVE=y
|
||||
# CONFIG_I2C_SLAVE_EEPROM is not set
|
||||
@ -2222,12 +2217,14 @@ CONFIG_SPI_MEM=y
|
||||
# CONFIG_SPI_BITBANG is not set
|
||||
# CONFIG_SPI_CADENCE is not set
|
||||
# CONFIG_SPI_DESIGNWARE is not set
|
||||
# CONFIG_SPI_NXP_FLEXSPI is not set
|
||||
# CONFIG_SPI_GPIO is not set
|
||||
# CONFIG_SPI_FSL_SPI is not set
|
||||
# CONFIG_SPI_OC_TINY is not set
|
||||
CONFIG_SPI_PL022=y
|
||||
CONFIG_SPI_ROCKCHIP=y
|
||||
# CONFIG_SPI_SC18IS602 is not set
|
||||
# CONFIG_SPI_SIFIVE is not set
|
||||
# CONFIG_SPI_SUN4I is not set
|
||||
# CONFIG_SPI_SUN6I is not set
|
||||
# CONFIG_SPI_MXIC is not set
|
||||
@ -2314,12 +2311,14 @@ CONFIG_GPIO_PL061=y
|
||||
# CONFIG_GPIO_SYSCON is not set
|
||||
CONFIG_GPIO_XGENE=y
|
||||
# CONFIG_GPIO_XILINX is not set
|
||||
# CONFIG_GPIO_AMD_FCH is not set
|
||||
|
||||
#
|
||||
# I2C GPIO expanders
|
||||
#
|
||||
# CONFIG_GPIO_ADP5588 is not set
|
||||
# CONFIG_GPIO_ADNP is not set
|
||||
# CONFIG_GPIO_GW_PLD is not set
|
||||
# CONFIG_GPIO_MAX7300 is not set
|
||||
# CONFIG_GPIO_MAX732X is not set
|
||||
CONFIG_GPIO_PCA953X=y
|
||||
@ -2330,7 +2329,6 @@ CONFIG_GPIO_PCA953X_IRQ=y
|
||||
#
|
||||
# MFD GPIO expanders
|
||||
#
|
||||
# CONFIG_GPIO_BD9571MWV is not set
|
||||
CONFIG_GPIO_MAX77620=y
|
||||
|
||||
#
|
||||
@ -2395,7 +2393,6 @@ CONFIG_AXP20X_POWER=y
|
||||
# CONFIG_CHARGER_SMB347 is not set
|
||||
# CONFIG_BATTERY_GAUGE_LTC2941 is not set
|
||||
# CONFIG_CHARGER_RT9455 is not set
|
||||
# CONFIG_CHARGER_CROS_USBPD is not set
|
||||
CONFIG_HWMON=y
|
||||
# CONFIG_HWMON_DEBUG_CHIP is not set
|
||||
|
||||
@ -2570,7 +2567,7 @@ CONFIG_ARM_SP805_WATCHDOG=y
|
||||
# CONFIG_ARM_SBSA_WATCHDOG is not set
|
||||
# CONFIG_CADENCE_WATCHDOG is not set
|
||||
# CONFIG_DW_WATCHDOG is not set
|
||||
# CONFIG_SUNXI_WATCHDOG is not set
|
||||
CONFIG_SUNXI_WATCHDOG=y
|
||||
# CONFIG_MAX63XX_WATCHDOG is not set
|
||||
# CONFIG_MAX77620_WATCHDOG is not set
|
||||
# CONFIG_MEN_A21_WDT is not set
|
||||
@ -2602,13 +2599,12 @@ CONFIG_MFD_CORE=y
|
||||
# CONFIG_MFD_ATMEL_FLEXCOM is not set
|
||||
# CONFIG_MFD_ATMEL_HLCDC is not set
|
||||
# CONFIG_MFD_BCM590XX is not set
|
||||
CONFIG_MFD_BD9571MWV=y
|
||||
# CONFIG_MFD_BD9571MWV is not set
|
||||
# CONFIG_MFD_AC100 is not set
|
||||
CONFIG_MFD_AXP20X=y
|
||||
CONFIG_MFD_AXP20X_I2C=y
|
||||
CONFIG_MFD_AXP20X_RSB=y
|
||||
CONFIG_MFD_CROS_EC=y
|
||||
CONFIG_MFD_CROS_EC_CHARDEV=m
|
||||
# CONFIG_MFD_CROS_EC is not set
|
||||
# CONFIG_MFD_MADERA is not set
|
||||
# CONFIG_PMIC_DA903X is not set
|
||||
# CONFIG_MFD_DA9052_SPI is not set
|
||||
@ -2680,6 +2676,8 @@ CONFIG_MFD_SYSCON=y
|
||||
# CONFIG_MFD_WL1273_CORE is not set
|
||||
# CONFIG_MFD_LM3533 is not set
|
||||
# CONFIG_MFD_TC3589X is not set
|
||||
# CONFIG_MFD_TQMX86 is not set
|
||||
# CONFIG_MFD_LOCHNAGAR is not set
|
||||
# CONFIG_MFD_ARIZONA_I2C is not set
|
||||
# CONFIG_MFD_ARIZONA_SPI is not set
|
||||
# CONFIG_MFD_WM8400 is not set
|
||||
@ -2688,6 +2686,7 @@ CONFIG_MFD_SYSCON=y
|
||||
# CONFIG_MFD_WM8350_I2C is not set
|
||||
# CONFIG_MFD_WM8994 is not set
|
||||
# CONFIG_MFD_ROHM_BD718XX is not set
|
||||
# CONFIG_MFD_STPMIC1 is not set
|
||||
CONFIG_MFD_VEXPRESS_SYSREG=y
|
||||
# CONFIG_RAVE_SP_CORE is not set
|
||||
CONFIG_REGULATOR=y
|
||||
@ -2700,7 +2699,6 @@ CONFIG_REGULATOR_FIXED_VOLTAGE=y
|
||||
# CONFIG_REGULATOR_AD5398 is not set
|
||||
# CONFIG_REGULATOR_ANATOP is not set
|
||||
CONFIG_REGULATOR_AXP20X=y
|
||||
CONFIG_REGULATOR_BD9571MWV=y
|
||||
# CONFIG_REGULATOR_DA9210 is not set
|
||||
# CONFIG_REGULATOR_DA9211 is not set
|
||||
CONFIG_REGULATOR_FAN53555=y
|
||||
@ -3067,10 +3065,6 @@ CONFIG_VIDEO_MT9V011=m
|
||||
# Miscellaneous helper chips
|
||||
#
|
||||
|
||||
#
|
||||
# Sensors used on soc_camera driver
|
||||
#
|
||||
|
||||
#
|
||||
# Media SPI Adapters
|
||||
#
|
||||
@ -3260,8 +3254,13 @@ CONFIG_DRM_I2C_CH7006=m
|
||||
CONFIG_DRM_I2C_SIL164=m
|
||||
# CONFIG_DRM_I2C_NXP_TDA998X is not set
|
||||
# CONFIG_DRM_I2C_NXP_TDA9950 is not set
|
||||
|
||||
#
|
||||
# ARM devices
|
||||
#
|
||||
# CONFIG_DRM_HDLCD is not set
|
||||
# CONFIG_DRM_MALI_DISPLAY is not set
|
||||
# CONFIG_DRM_KOMEDA is not set
|
||||
|
||||
#
|
||||
# ACP (Audio CoProcessor) Configuration
|
||||
@ -3298,6 +3297,7 @@ CONFIG_DRM_PANEL_SIMPLE=m
|
||||
# CONFIG_DRM_PANEL_SAMSUNG_S6E8AA0 is not set
|
||||
# CONFIG_DRM_PANEL_SEIKO_43WVF1G is not set
|
||||
# CONFIG_DRM_PANEL_SITRONIX_ST7789V is not set
|
||||
# CONFIG_DRM_PANEL_TPO_TPG110 is not set
|
||||
CONFIG_DRM_BRIDGE=y
|
||||
CONFIG_DRM_PANEL_BRIDGE=y
|
||||
|
||||
@ -3324,6 +3324,7 @@ 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=y
|
||||
# CONFIG_DRM_ETNAVIV is not set
|
||||
# CONFIG_DRM_ARCPGU is not set
|
||||
# CONFIG_DRM_HISI_KIRIN is not set
|
||||
# CONFIG_DRM_MXSFB is not set
|
||||
@ -3468,9 +3469,11 @@ CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y
|
||||
# CONFIG_SND_SOC_FSL_SSI is not set
|
||||
# CONFIG_SND_SOC_FSL_SPDIF is not set
|
||||
# CONFIG_SND_SOC_FSL_ESAI is not set
|
||||
# CONFIG_SND_SOC_FSL_MICFIL is not set
|
||||
# CONFIG_SND_SOC_IMX_AUDMUX is not set
|
||||
# CONFIG_SND_I2S_HI6210_I2S is not set
|
||||
# CONFIG_SND_SOC_IMG is not set
|
||||
# CONFIG_SND_SOC_MTK_BTCVSD is not set
|
||||
|
||||
#
|
||||
# STMicroelectronics STM32 SOC audio support
|
||||
@ -3487,6 +3490,8 @@ CONFIG_SND_SUN4I_I2S=y
|
||||
CONFIG_SND_SUN4I_SPDIF=y
|
||||
CONFIG_SND_SUN8I_ADDA_PR_REGMAP=y
|
||||
# CONFIG_SND_SOC_XILINX_I2S is not set
|
||||
# CONFIG_SND_SOC_XILINX_AUDIO_FORMATTER is not set
|
||||
# CONFIG_SND_SOC_XILINX_SPDIF is not set
|
||||
# CONFIG_SND_SOC_XTFPGA_I2S is not set
|
||||
# CONFIG_ZX_TDM is not set
|
||||
CONFIG_SND_SOC_I2C_AND_SPI=y
|
||||
@ -3514,6 +3519,7 @@ CONFIG_SND_SOC_AK4613=m
|
||||
# CONFIG_SND_SOC_CS35L33 is not set
|
||||
# CONFIG_SND_SOC_CS35L34 is not set
|
||||
# CONFIG_SND_SOC_CS35L35 is not set
|
||||
# CONFIG_SND_SOC_CS35L36 is not set
|
||||
# CONFIG_SND_SOC_CS42L42 is not set
|
||||
# CONFIG_SND_SOC_CS42L51_I2C is not set
|
||||
# CONFIG_SND_SOC_CS42L52 is not set
|
||||
@ -3525,6 +3531,7 @@ CONFIG_SND_SOC_AK4613=m
|
||||
# CONFIG_SND_SOC_CS4271_SPI is not set
|
||||
# CONFIG_SND_SOC_CS42XX8_I2C is not set
|
||||
# CONFIG_SND_SOC_CS43130 is not set
|
||||
# CONFIG_SND_SOC_CS4341 is not set
|
||||
# CONFIG_SND_SOC_CS4349 is not set
|
||||
# CONFIG_SND_SOC_CS53L30 is not set
|
||||
# CONFIG_SND_SOC_DMIC is not set
|
||||
@ -3556,6 +3563,7 @@ CONFIG_SND_SOC_HDMI_CODEC=y
|
||||
# CONFIG_SND_SOC_PCM3168A_SPI is not set
|
||||
# CONFIG_SND_SOC_PCM512x_I2C is not set
|
||||
# CONFIG_SND_SOC_PCM512x_SPI is not set
|
||||
# CONFIG_SND_SOC_RK3328 is not set
|
||||
# CONFIG_SND_SOC_RT5616 is not set
|
||||
# CONFIG_SND_SOC_RT5631 is not set
|
||||
# CONFIG_SND_SOC_SGTL5000 is not set
|
||||
@ -3602,6 +3610,7 @@ CONFIG_SND_SOC_HDMI_CODEC=y
|
||||
# CONFIG_SND_SOC_WM8804_I2C is not set
|
||||
# CONFIG_SND_SOC_WM8804_SPI is not set
|
||||
# CONFIG_SND_SOC_WM8903 is not set
|
||||
# CONFIG_SND_SOC_WM8904 is not set
|
||||
# CONFIG_SND_SOC_WM8960 is not set
|
||||
# CONFIG_SND_SOC_WM8962 is not set
|
||||
# CONFIG_SND_SOC_WM8974 is not set
|
||||
@ -3610,6 +3619,7 @@ CONFIG_SND_SOC_HDMI_CODEC=y
|
||||
# CONFIG_SND_SOC_ZX_AUD96P22 is not set
|
||||
# CONFIG_SND_SOC_MAX9759 is not set
|
||||
# CONFIG_SND_SOC_MT6351 is not set
|
||||
# CONFIG_SND_SOC_MT6358 is not set
|
||||
# CONFIG_SND_SOC_NAU8540 is not set
|
||||
# CONFIG_SND_SOC_NAU8810 is not set
|
||||
# CONFIG_SND_SOC_NAU8822 is not set
|
||||
@ -3617,9 +3627,7 @@ CONFIG_SND_SOC_HDMI_CODEC=y
|
||||
# CONFIG_SND_SOC_TPA6130A2 is not set
|
||||
CONFIG_SND_SIMPLE_CARD_UTILS=y
|
||||
CONFIG_SND_SIMPLE_CARD=y
|
||||
# CONFIG_SND_SIMPLE_SCU_CARD is not set
|
||||
CONFIG_SND_AUDIO_GRAPH_CARD=y
|
||||
# CONFIG_SND_AUDIO_GRAPH_SCU_CARD is not set
|
||||
|
||||
#
|
||||
# HID support
|
||||
@ -3659,12 +3667,12 @@ CONFIG_HID_EZKEY=y
|
||||
# CONFIG_HID_GEMBIRD is not set
|
||||
# CONFIG_HID_GFRM is not set
|
||||
# CONFIG_HID_HOLTEK is not set
|
||||
# CONFIG_HID_GOOGLE_HAMMER is not set
|
||||
# CONFIG_HID_GT683R is not set
|
||||
# CONFIG_HID_KEYTOUCH is not set
|
||||
# CONFIG_HID_KYE is not set
|
||||
# CONFIG_HID_UCLOGIC is not set
|
||||
# CONFIG_HID_WALTOP is not set
|
||||
# CONFIG_HID_VIEWSONIC is not set
|
||||
# CONFIG_HID_GYRATION is not set
|
||||
# CONFIG_HID_ICADE is not set
|
||||
CONFIG_HID_ITE=y
|
||||
@ -3681,6 +3689,7 @@ CONFIG_HID_LOGITECH=y
|
||||
# CONFIG_LOGIG940_FF is not set
|
||||
# CONFIG_LOGIWHEELS_FF is not set
|
||||
# CONFIG_HID_MAGICMOUSE is not set
|
||||
# CONFIG_HID_MALTRON is not set
|
||||
# CONFIG_HID_MAYFLASH is not set
|
||||
CONFIG_HID_REDRAGON=y
|
||||
CONFIG_HID_MICROSOFT=y
|
||||
@ -3749,6 +3758,7 @@ CONFIG_USB_OTG=y
|
||||
# CONFIG_USB_OTG_BLACKLIST_HUB is not set
|
||||
# CONFIG_USB_OTG_FSM is not set
|
||||
# CONFIG_USB_LEDS_TRIGGER_USBPORT is not set
|
||||
CONFIG_USB_AUTOSUSPEND_DELAY=2
|
||||
# CONFIG_USB_MON is not set
|
||||
# CONFIG_USB_WUSB_CBAF is not set
|
||||
|
||||
@ -3762,6 +3772,7 @@ CONFIG_USB_XHCI_PLATFORM=y
|
||||
CONFIG_USB_EHCI_HCD=y
|
||||
CONFIG_USB_EHCI_ROOT_HUB_TT=y
|
||||
CONFIG_USB_EHCI_TT_NEWSCHED=y
|
||||
# CONFIG_USB_EHCI_FSL is not set
|
||||
CONFIG_USB_EHCI_HCD_PLATFORM=y
|
||||
# CONFIG_USB_OXU210HP_HCD is not set
|
||||
# CONFIG_USB_ISP116X_HCD is not set
|
||||
@ -4067,6 +4078,7 @@ CONFIG_RTC_INTF_DEV=y
|
||||
# I2C RTC drivers
|
||||
#
|
||||
# CONFIG_RTC_DRV_ABB5ZES3 is not set
|
||||
# CONFIG_RTC_DRV_ABEOZ9 is not set
|
||||
# CONFIG_RTC_DRV_ABX80X is not set
|
||||
# CONFIG_RTC_DRV_DS1307 is not set
|
||||
# CONFIG_RTC_DRV_DS1374 is not set
|
||||
@ -4093,8 +4105,10 @@ CONFIG_RTC_DRV_RK808=m
|
||||
# CONFIG_RTC_DRV_RX8581 is not set
|
||||
# CONFIG_RTC_DRV_RX8025 is not set
|
||||
# CONFIG_RTC_DRV_EM3027 is not set
|
||||
# CONFIG_RTC_DRV_RV3028 is not set
|
||||
# CONFIG_RTC_DRV_RV8803 is not set
|
||||
CONFIG_RTC_DRV_S5M=y
|
||||
# CONFIG_RTC_DRV_SD3078 is not set
|
||||
|
||||
#
|
||||
# SPI RTC drivers
|
||||
@ -4143,7 +4157,6 @@ CONFIG_RTC_DRV_EFI=y
|
||||
# CONFIG_RTC_DRV_RP5C01 is not set
|
||||
# CONFIG_RTC_DRV_V3020 is not set
|
||||
# CONFIG_RTC_DRV_ZYNQMP is not set
|
||||
CONFIG_RTC_DRV_CROS_EC=y
|
||||
|
||||
#
|
||||
# on-CPU RTC drivers
|
||||
@ -4151,6 +4164,7 @@ CONFIG_RTC_DRV_CROS_EC=y
|
||||
# CONFIG_RTC_DRV_PL030 is not set
|
||||
CONFIG_RTC_DRV_PL031=y
|
||||
CONFIG_RTC_DRV_SUN6I=y
|
||||
# CONFIG_RTC_DRV_CADENCE is not set
|
||||
# CONFIG_RTC_DRV_FTRTC010 is not set
|
||||
# CONFIG_RTC_DRV_SNVS is not set
|
||||
# CONFIG_RTC_DRV_R7301 is not set
|
||||
@ -4158,7 +4172,6 @@ CONFIG_RTC_DRV_SUN6I=y
|
||||
#
|
||||
# HID Sensor RTC drivers
|
||||
#
|
||||
# CONFIG_RTC_DRV_HID_SENSOR_TIME is not set
|
||||
CONFIG_DMADEVICES=y
|
||||
# CONFIG_DMADEVICES_DEBUG is not set
|
||||
|
||||
@ -4175,6 +4188,7 @@ CONFIG_BCM_SBA_RAID=m
|
||||
CONFIG_DMA_SUN6I=y
|
||||
# CONFIG_DW_AXI_DMAC is not set
|
||||
# CONFIG_FSL_EDMA is not set
|
||||
# CONFIG_FSL_QDMA is not set
|
||||
# CONFIG_INTEL_IDMA64 is not set
|
||||
CONFIG_MV_XOR_V2=y
|
||||
CONFIG_PL330_DMA=y
|
||||
@ -4227,7 +4241,6 @@ CONFIG_RTL8723BS=m
|
||||
#
|
||||
# Analog to digital converters
|
||||
#
|
||||
# CONFIG_AD7606 is not set
|
||||
# CONFIG_AD7780 is not set
|
||||
# CONFIG_AD7816 is not set
|
||||
# CONFIG_AD7192 is not set
|
||||
@ -4242,7 +4255,6 @@ CONFIG_RTL8723BS=m
|
||||
# Capacitance to digital converters
|
||||
#
|
||||
# CONFIG_AD7150 is not set
|
||||
# CONFIG_AD7152 is not set
|
||||
# CONFIG_AD7746 is not set
|
||||
|
||||
#
|
||||
@ -4274,6 +4286,10 @@ CONFIG_STAGING_MEDIA=y
|
||||
CONFIG_VIDEO_SUNXI=y
|
||||
CONFIG_VIDEO_SUNXI_CEDRUS=y
|
||||
|
||||
#
|
||||
# soc_camera sensor drivers
|
||||
#
|
||||
|
||||
#
|
||||
# Android
|
||||
#
|
||||
@ -4289,7 +4305,6 @@ CONFIG_VIDEO_SUNXI_CEDRUS=y
|
||||
# CONFIG_KS7010 is not set
|
||||
# CONFIG_GREYBUS is not set
|
||||
# CONFIG_PI433 is not set
|
||||
# CONFIG_MTK_MMC is not set
|
||||
|
||||
#
|
||||
# Gasket devices
|
||||
@ -4297,11 +4312,7 @@ CONFIG_VIDEO_SUNXI_CEDRUS=y
|
||||
# CONFIG_XIL_AXIS_FIFO is not set
|
||||
# CONFIG_EROFS_FS is not set
|
||||
# CONFIG_GOLDFISH is not set
|
||||
CONFIG_CHROME_PLATFORMS=y
|
||||
CONFIG_CROS_EC_CTL=m
|
||||
CONFIG_CROS_EC_I2C=y
|
||||
CONFIG_CROS_EC_SPI=y
|
||||
CONFIG_CROS_EC_PROTO=y
|
||||
# CONFIG_CHROME_PLATFORMS is not set
|
||||
CONFIG_CLKDEV_LOOKUP=y
|
||||
CONFIG_HAVE_CLK_PREPARE=y
|
||||
CONFIG_COMMON_CLK=y
|
||||
@ -4327,6 +4338,7 @@ CONFIG_COMMON_CLK_SCPI=y
|
||||
# CONFIG_COMMON_CLK_XGENE is not set
|
||||
# CONFIG_COMMON_CLK_PWM is not set
|
||||
# CONFIG_COMMON_CLK_VC5 is not set
|
||||
# CONFIG_COMMON_CLK_FIXED_MMIO is not set
|
||||
CONFIG_SUNXI_CCU=y
|
||||
CONFIG_SUN50I_A64_CCU=y
|
||||
CONFIG_SUN50I_H6_CCU=y
|
||||
@ -4429,10 +4441,10 @@ CONFIG_EXTCON=y
|
||||
# CONFIG_EXTCON_ADC_JACK is not set
|
||||
# CONFIG_EXTCON_GPIO is not set
|
||||
# CONFIG_EXTCON_MAX3355 is not set
|
||||
# CONFIG_EXTCON_PTN5150 is not set
|
||||
# CONFIG_EXTCON_RT8973A is not set
|
||||
# CONFIG_EXTCON_SM5502 is not set
|
||||
CONFIG_EXTCON_USB_GPIO=y
|
||||
CONFIG_EXTCON_USBC_CROS_EC=y
|
||||
CONFIG_MEMORY=y
|
||||
# CONFIG_ARM_PL172_MPMC is not set
|
||||
CONFIG_IIO=y
|
||||
@ -4440,7 +4452,6 @@ CONFIG_IIO_BUFFER=y
|
||||
# CONFIG_IIO_BUFFER_CB is not set
|
||||
# CONFIG_IIO_BUFFER_HW_CONSUMER is not set
|
||||
CONFIG_IIO_KFIFO_BUF=m
|
||||
CONFIG_IIO_TRIGGERED_BUFFER=m
|
||||
# CONFIG_IIO_CONFIGFS is not set
|
||||
CONFIG_IIO_TRIGGER=y
|
||||
CONFIG_IIO_CONSUMERS_PER_TRIGGER=2
|
||||
@ -4489,7 +4500,10 @@ CONFIG_IIO_CONSUMERS_PER_TRIGGER=2
|
||||
# CONFIG_AD7291 is not set
|
||||
# CONFIG_AD7298 is not set
|
||||
# CONFIG_AD7476 is not set
|
||||
# CONFIG_AD7606_IFACE_PARALLEL is not set
|
||||
# CONFIG_AD7606_IFACE_SPI is not set
|
||||
# CONFIG_AD7766 is not set
|
||||
# CONFIG_AD7768_1 is not set
|
||||
# CONFIG_AD7791 is not set
|
||||
# CONFIG_AD7793 is not set
|
||||
# CONFIG_AD7887 is not set
|
||||
@ -4529,6 +4543,7 @@ CONFIG_IIO_CONSUMERS_PER_TRIGGER=2
|
||||
# CONFIG_TI_ADS1015 is not set
|
||||
# CONFIG_TI_ADS7950 is not set
|
||||
# CONFIG_TI_ADS8688 is not set
|
||||
# CONFIG_TI_ADS124S08 is not set
|
||||
# CONFIG_TI_TLC4541 is not set
|
||||
# CONFIG_VF610_ADC is not set
|
||||
|
||||
@ -4549,9 +4564,10 @@ CONFIG_IIO_CONSUMERS_PER_TRIGGER=2
|
||||
# CONFIG_BME680 is not set
|
||||
# CONFIG_CCS811 is not set
|
||||
# CONFIG_IAQCORE is not set
|
||||
# CONFIG_PMS7003 is not set
|
||||
# CONFIG_SENSIRION_SGP30 is not set
|
||||
# CONFIG_SPS30 is not set
|
||||
# CONFIG_VZ89X is not set
|
||||
CONFIG_IIO_CROS_EC_SENSORS_CORE=m
|
||||
CONFIG_IIO_CROS_EC_SENSORS=m
|
||||
|
||||
#
|
||||
# Hid Sensor IIO Common
|
||||
@ -4600,6 +4616,7 @@ CONFIG_IIO_CROS_EC_SENSORS=m
|
||||
# CONFIG_TI_DAC082S085 is not set
|
||||
# CONFIG_TI_DAC5571 is not set
|
||||
# CONFIG_TI_DAC7311 is not set
|
||||
# CONFIG_TI_DAC7612 is not set
|
||||
# CONFIG_VF610_DAC is not set
|
||||
|
||||
#
|
||||
@ -4682,7 +4699,6 @@ CONFIG_IIO_CROS_EC_SENSORS=m
|
||||
# CONFIG_CM3323 is not set
|
||||
# CONFIG_CM3605 is not set
|
||||
# CONFIG_CM36651 is not set
|
||||
CONFIG_IIO_CROS_EC_LIGHT_PROX=m
|
||||
# CONFIG_GP2AP020A00F is not set
|
||||
# CONFIG_SENSORS_ISL29018 is not set
|
||||
# CONFIG_SENSORS_ISL29028 is not set
|
||||
@ -4692,6 +4708,7 @@ CONFIG_IIO_CROS_EC_LIGHT_PROX=m
|
||||
# CONFIG_LTR501 is not set
|
||||
# CONFIG_LV0104CS is not set
|
||||
# CONFIG_MAX44000 is not set
|
||||
# CONFIG_MAX44009 is not set
|
||||
# CONFIG_OPT3001 is not set
|
||||
# CONFIG_PA12203001 is not set
|
||||
# CONFIG_SI1133 is not set
|
||||
@ -4765,7 +4782,6 @@ CONFIG_IIO_CROS_EC_LIGHT_PROX=m
|
||||
#
|
||||
# CONFIG_ABP060MG is not set
|
||||
# CONFIG_BMP280 is not set
|
||||
CONFIG_IIO_CROS_EC_BARO=m
|
||||
# CONFIG_HP03 is not set
|
||||
# CONFIG_MPL115_I2C is not set
|
||||
# CONFIG_MPL115_SPI is not set
|
||||
@ -4811,7 +4827,6 @@ CONFIG_IIO_CROS_EC_BARO=m
|
||||
# CONFIG_TSYS02D is not set
|
||||
CONFIG_PWM=y
|
||||
CONFIG_PWM_SYSFS=y
|
||||
CONFIG_PWM_CROS_EC=m
|
||||
# CONFIG_PWM_FSL_FTM is not set
|
||||
# CONFIG_PWM_PCA9685 is not set
|
||||
# CONFIG_PWM_SUN4I is not set
|
||||
@ -4839,9 +4854,12 @@ CONFIG_RESET_SUNXI=y
|
||||
CONFIG_GENERIC_PHY=y
|
||||
CONFIG_PHY_XGENE=y
|
||||
CONFIG_PHY_SUN4I_USB=y
|
||||
# CONFIG_PHY_SUN6I_MIPI_DPHY is not set
|
||||
# CONFIG_PHY_SUN9I_USB is not set
|
||||
CONFIG_PHY_SUN50I_USB3=y
|
||||
# CONFIG_BCM_KONA_USB2_PHY is not set
|
||||
# CONFIG_PHY_CADENCE_DP is not set
|
||||
# CONFIG_PHY_CADENCE_DPHY is not set
|
||||
# CONFIG_PHY_CADENCE_SIERRA is not set
|
||||
# CONFIG_PHY_FSL_IMX8MQ_USB is not set
|
||||
# CONFIG_PHY_PXA_28NM_HSIC is not set
|
||||
@ -4886,11 +4904,13 @@ CONFIG_NVMEM=y
|
||||
CONFIG_PM_OPP=y
|
||||
# CONFIG_SIOX is not set
|
||||
# CONFIG_SLIMBUS is not set
|
||||
# CONFIG_INTERCONNECT is not set
|
||||
|
||||
#
|
||||
# File systems
|
||||
#
|
||||
CONFIG_DCACHE_WORD_ACCESS=y
|
||||
CONFIG_VALIDATE_FS_PARSER=y
|
||||
CONFIG_FS_IOMAP=y
|
||||
# CONFIG_EXT2_FS is not set
|
||||
# CONFIG_EXT3_FS is not set
|
||||
@ -4898,7 +4918,6 @@ CONFIG_EXT4_FS=y
|
||||
CONFIG_EXT4_USE_FOR_EXT2=y
|
||||
CONFIG_EXT4_FS_POSIX_ACL=y
|
||||
CONFIG_EXT4_FS_SECURITY=y
|
||||
# CONFIG_EXT4_ENCRYPTION is not set
|
||||
# CONFIG_EXT4_DEBUG is not set
|
||||
CONFIG_JBD2=y
|
||||
# CONFIG_JBD2_DEBUG is not set
|
||||
@ -4928,7 +4947,6 @@ CONFIG_F2FS_FS_XATTR=y
|
||||
CONFIG_F2FS_FS_POSIX_ACL=y
|
||||
# CONFIG_F2FS_FS_SECURITY is not set
|
||||
# CONFIG_F2FS_CHECK_FS is not set
|
||||
# CONFIG_F2FS_FS_ENCRYPTION is not set
|
||||
# CONFIG_F2FS_FAULT_INJECTION is not set
|
||||
# CONFIG_FS_DAX is not set
|
||||
CONFIG_FS_POSIX_ACL=y
|
||||
@ -5163,13 +5181,14 @@ CONFIG_HAVE_HARDENED_USERCOPY_ALLOCATOR=y
|
||||
# CONFIG_SECURITY_APPARMOR is not set
|
||||
# CONFIG_SECURITY_LOADPIN is not set
|
||||
# CONFIG_SECURITY_YAMA is not set
|
||||
# CONFIG_SECURITY_SAFESETID is not set
|
||||
CONFIG_INTEGRITY=y
|
||||
# CONFIG_INTEGRITY_SIGNATURE is not set
|
||||
CONFIG_INTEGRITY_AUDIT=y
|
||||
# CONFIG_IMA is not set
|
||||
# CONFIG_EVM is not set
|
||||
CONFIG_DEFAULT_SECURITY_DAC=y
|
||||
CONFIG_DEFAULT_SECURITY=""
|
||||
CONFIG_LSM="yama,loadpin,safesetid,integrity"
|
||||
CONFIG_XOR_BLOCKS=m
|
||||
CONFIG_ASYNC_TX_DISABLE_PQ_VAL_DMA=y
|
||||
CONFIG_ASYNC_TX_DISABLE_XOR_VAL_DMA=y
|
||||
@ -5400,7 +5419,8 @@ CONFIG_HAS_DMA=y
|
||||
CONFIG_NEED_SG_DMA_LENGTH=y
|
||||
CONFIG_NEED_DMA_MAP_STATE=y
|
||||
CONFIG_ARCH_DMA_ADDR_T_64BIT=y
|
||||
CONFIG_HAVE_GENERIC_DMA_COHERENT=y
|
||||
CONFIG_DMA_DECLARE_COHERENT=y
|
||||
CONFIG_ARCH_HAS_SETUP_DMA_OPS=y
|
||||
CONFIG_ARCH_HAS_SYNC_DMA_FOR_DEVICE=y
|
||||
CONFIG_ARCH_HAS_SYNC_DMA_FOR_CPU=y
|
||||
CONFIG_ARCH_HAS_DMA_COHERENT_TO_PFN=y
|
||||
@ -5408,6 +5428,18 @@ CONFIG_ARCH_HAS_DMA_MMAP_PGPROT=y
|
||||
CONFIG_SWIOTLB=y
|
||||
CONFIG_DMA_REMAP=y
|
||||
CONFIG_DMA_DIRECT_REMAP=y
|
||||
CONFIG_DMA_CMA=y
|
||||
|
||||
#
|
||||
# Default contiguous memory area size:
|
||||
#
|
||||
CONFIG_CMA_SIZE_MBYTES=384
|
||||
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
|
||||
# CONFIG_DMA_API_DEBUG is not set
|
||||
CONFIG_SGL_ALLOC=y
|
||||
CONFIG_CPU_RMAP=y
|
||||
CONFIG_DQL=y
|
||||
@ -5438,6 +5470,7 @@ CONFIG_SBITMAP=y
|
||||
# printk and dmesg options
|
||||
#
|
||||
CONFIG_PRINTK_TIME=y
|
||||
# CONFIG_PRINTK_CALLER is not set
|
||||
CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7
|
||||
CONFIG_CONSOLE_LOGLEVEL_QUIET=4
|
||||
CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
|
||||
@ -5457,7 +5490,6 @@ CONFIG_FRAME_WARN=2048
|
||||
# CONFIG_STRIP_ASM_SYMS is not set
|
||||
# CONFIG_READABLE_ASM is not set
|
||||
# CONFIG_UNUSED_SYMBOLS is not set
|
||||
# CONFIG_PAGE_OWNER is not set
|
||||
CONFIG_DEBUG_FS=y
|
||||
# CONFIG_HEADERS_CHECK is not set
|
||||
# CONFIG_DEBUG_SECTION_MISMATCH is not set
|
||||
@ -5475,6 +5507,7 @@ CONFIG_DEBUG_KERNEL=y
|
||||
#
|
||||
# CONFIG_PAGE_EXTENSION is not set
|
||||
# CONFIG_DEBUG_PAGEALLOC is not set
|
||||
# CONFIG_PAGE_OWNER is not set
|
||||
# CONFIG_PAGE_POISONING is not set
|
||||
# CONFIG_DEBUG_RODATA_TEST is not set
|
||||
# CONFIG_DEBUG_OBJECTS is not set
|
||||
@ -5563,7 +5596,6 @@ CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
|
||||
CONFIG_HAVE_C_RECORDMCOUNT=y
|
||||
CONFIG_TRACING_SUPPORT=y
|
||||
# CONFIG_FTRACE is not set
|
||||
# CONFIG_DMA_API_DEBUG is not set
|
||||
CONFIG_RUNTIME_TESTING_MENU=y
|
||||
# CONFIG_LKDTM is not set
|
||||
# CONFIG_TEST_LIST_SORT is not set
|
||||
@ -5586,6 +5618,7 @@ CONFIG_RUNTIME_TESTING_MENU=y
|
||||
# CONFIG_TEST_HASH is not set
|
||||
# CONFIG_TEST_IDA is not set
|
||||
# CONFIG_TEST_LKM is not set
|
||||
# CONFIG_TEST_VMALLOC is not set
|
||||
# CONFIG_TEST_USER_COPY is not set
|
||||
# CONFIG_TEST_BPF is not set
|
||||
# CONFIG_FIND_BIT_BENCHMARK is not set
|
||||
@ -5595,6 +5628,7 @@ CONFIG_RUNTIME_TESTING_MENU=y
|
||||
# CONFIG_TEST_STATIC_KEYS is not set
|
||||
# CONFIG_TEST_KMOD is not set
|
||||
# CONFIG_TEST_MEMCAT_P is not set
|
||||
# CONFIG_TEST_STACKINIT is not set
|
||||
CONFIG_MEMTEST=y
|
||||
# CONFIG_BUG_ON_DATA_CORRUPTION is not set
|
||||
# CONFIG_SAMPLES is not set
|
||||
@ -5602,6 +5636,7 @@ CONFIG_HAVE_ARCH_KGDB=y
|
||||
# CONFIG_KGDB is not set
|
||||
CONFIG_ARCH_HAS_UBSAN_SANITIZE_ALL=y
|
||||
# CONFIG_UBSAN is not set
|
||||
CONFIG_UBSAN_ALIGNMENT=y
|
||||
CONFIG_ARCH_HAS_DEVMEM_IS_ALLOWED=y
|
||||
CONFIG_STRICT_DEVMEM=y
|
||||
# CONFIG_IO_STRICT_DEVMEM is not set
|
||||
|
@ -1,15 +1,16 @@
|
||||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# Linux/arm 5.0.2 Kernel Configuration
|
||||
# Linux/arm 5.1.9 Kernel Configuration
|
||||
#
|
||||
|
||||
#
|
||||
# Compiler: armv7ve-libreelec-linux-gnueabi-gcc-8.2.0 (GCC) 8.2.0
|
||||
# Compiler: armv7ve-libreelec-linux-gnueabi-gcc-8.3.0 (GCC) 8.3.0
|
||||
#
|
||||
CONFIG_CC_IS_GCC=y
|
||||
CONFIG_GCC_VERSION=80200
|
||||
CONFIG_GCC_VERSION=80300
|
||||
CONFIG_CLANG_VERSION=0
|
||||
CONFIG_CC_HAS_ASM_GOTO=y
|
||||
CONFIG_CC_HAS_WARN_MAYBE_UNINITIALIZED=y
|
||||
CONFIG_IRQ_WORK=y
|
||||
CONFIG_BUILDTIME_EXTABLE_SORT=y
|
||||
|
||||
@ -178,6 +179,7 @@ CONFIG_TIMERFD=y
|
||||
CONFIG_EVENTFD=y
|
||||
CONFIG_SHMEM=y
|
||||
CONFIG_AIO=y
|
||||
CONFIG_IO_URING=y
|
||||
CONFIG_ADVISE_SYSCALLS=y
|
||||
CONFIG_MEMBARRIER=y
|
||||
CONFIG_KALLSYMS=y
|
||||
@ -278,6 +280,7 @@ CONFIG_ARCH_MULTI_V6_V7=y
|
||||
# CONFIG_ARCH_KEYSTONE is not set
|
||||
# CONFIG_ARCH_MEDIATEK is not set
|
||||
# CONFIG_ARCH_MESON is not set
|
||||
# CONFIG_ARCH_MILBEAUT is not set
|
||||
# CONFIG_ARCH_MMP is not set
|
||||
# CONFIG_ARCH_MVEBU is not set
|
||||
# CONFIG_ARCH_NPCM is not set
|
||||
@ -488,6 +491,7 @@ CONFIG_CPUFREQ_DT_PLATDEV=y
|
||||
CONFIG_CPU_IDLE=y
|
||||
CONFIG_CPU_IDLE_GOV_LADDER=y
|
||||
CONFIG_CPU_IDLE_GOV_MENU=y
|
||||
# CONFIG_CPU_IDLE_GOV_TEO is not set
|
||||
|
||||
#
|
||||
# ARM CPU Idle Drivers
|
||||
@ -536,7 +540,6 @@ CONFIG_ARM_PSCI_FW=y
|
||||
# CONFIG_ARM_PSCI_CHECKER is not set
|
||||
# CONFIG_FIRMWARE_MEMMAP is not set
|
||||
# CONFIG_FW_CFG_SYSFS is not set
|
||||
# CONFIG_INTEL_STRATIX10_SERVICE is not set
|
||||
CONFIG_HAVE_ARM_SMCCC=y
|
||||
# CONFIG_GOOGLE_FIRMWARE is not set
|
||||
|
||||
@ -569,6 +572,7 @@ CONFIG_GENERIC_IDLE_POLL_SETUP=y
|
||||
CONFIG_ARCH_HAS_FORTIFY_SOURCE=y
|
||||
CONFIG_ARCH_HAS_SET_MEMORY=y
|
||||
CONFIG_HAVE_ARCH_THREAD_STRUCT_WHITELIST=y
|
||||
CONFIG_ARCH_32BIT_OFF_T=y
|
||||
CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
|
||||
CONFIG_HAVE_RSEQ=y
|
||||
CONFIG_HAVE_CLK=y
|
||||
@ -594,6 +598,8 @@ CONFIG_ARCH_MMAP_RND_BITS=8
|
||||
CONFIG_CLONE_BACKWARDS=y
|
||||
CONFIG_OLD_SIGSUSPEND3=y
|
||||
CONFIG_OLD_SIGACTION=y
|
||||
CONFIG_64BIT_TIME=y
|
||||
CONFIG_COMPAT_32BIT_TIME=y
|
||||
CONFIG_ARCH_OPTIONAL_KERNEL_RWX=y
|
||||
CONFIG_ARCH_OPTIONAL_KERNEL_RWX_DEFAULT=y
|
||||
CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y
|
||||
@ -608,9 +614,8 @@ CONFIG_REFCOUNT_FULL=y
|
||||
#
|
||||
# CONFIG_GCOV_KERNEL is not set
|
||||
CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y
|
||||
CONFIG_PLUGIN_HOSTCC="g++"
|
||||
CONFIG_PLUGIN_HOSTCC=""
|
||||
CONFIG_HAVE_GCC_PLUGINS=y
|
||||
# CONFIG_GCC_PLUGINS is not set
|
||||
CONFIG_RT_MUTEXES=y
|
||||
CONFIG_BASE_SMALL=0
|
||||
CONFIG_MODULES=y
|
||||
@ -731,6 +736,7 @@ CONFIG_SKB_EXTENSIONS=y
|
||||
CONFIG_PACKET=y
|
||||
# CONFIG_PACKET_DIAG is not set
|
||||
CONFIG_UNIX=y
|
||||
CONFIG_UNIX_SCM=y
|
||||
# CONFIG_UNIX_DIAG is not set
|
||||
# CONFIG_TLS is not set
|
||||
CONFIG_XFRM=y
|
||||
@ -838,6 +844,7 @@ CONFIG_NF_NAT_NEEDED=y
|
||||
CONFIG_NF_NAT_FTP=m
|
||||
CONFIG_NF_NAT_TFTP=m
|
||||
CONFIG_NF_NAT_REDIRECT=y
|
||||
CONFIG_NF_NAT_MASQUERADE=y
|
||||
# CONFIG_NF_TABLES is not set
|
||||
CONFIG_NETFILTER_XTABLES=m
|
||||
|
||||
@ -973,8 +980,6 @@ CONFIG_NF_DEFRAG_IPV4=m
|
||||
# CONFIG_NF_LOG_ARP is not set
|
||||
# CONFIG_NF_LOG_IPV4 is not set
|
||||
# CONFIG_NF_REJECT_IPV4 is not set
|
||||
CONFIG_NF_NAT_IPV4=m
|
||||
CONFIG_NF_NAT_MASQUERADE_IPV4=y
|
||||
CONFIG_IP_NF_IPTABLES=m
|
||||
# CONFIG_IP_NF_MATCH_AH is not set
|
||||
# CONFIG_IP_NF_MATCH_ECN is not set
|
||||
@ -998,7 +1003,6 @@ CONFIG_IP_NF_TARGET_REDIRECT=m
|
||||
# CONFIG_NF_DUP_IPV6 is not set
|
||||
# CONFIG_NF_REJECT_IPV6 is not set
|
||||
# CONFIG_NF_LOG_IPV6 is not set
|
||||
# CONFIG_NF_NAT_IPV6 is not set
|
||||
# CONFIG_IP6_NF_IPTABLES is not set
|
||||
CONFIG_NF_DEFRAG_IPV6=m
|
||||
# CONFIG_BRIDGE_NF_EBTABLES is not set
|
||||
@ -1171,16 +1175,23 @@ CONFIG_BT_LEDS=y
|
||||
CONFIG_BT_INTEL=m
|
||||
CONFIG_BT_BCM=m
|
||||
CONFIG_BT_RTL=m
|
||||
CONFIG_BT_QCA=m
|
||||
CONFIG_BT_HCIBTUSB=m
|
||||
# CONFIG_BT_HCIBTUSB_AUTOSUSPEND is not set
|
||||
CONFIG_BT_HCIBTUSB_BCM=y
|
||||
CONFIG_BT_HCIBTUSB_RTL=y
|
||||
CONFIG_BT_HCIBTSDIO=m
|
||||
CONFIG_BT_HCIUART=m
|
||||
CONFIG_BT_HCIUART_SERDEV=y
|
||||
CONFIG_BT_HCIUART_H4=y
|
||||
# CONFIG_BT_HCIUART_NOKIA is not set
|
||||
CONFIG_BT_HCIUART_BCSP=y
|
||||
CONFIG_BT_HCIUART_ATH3K=y
|
||||
CONFIG_BT_HCIUART_LL=y
|
||||
CONFIG_BT_HCIUART_3WIRE=y
|
||||
CONFIG_BT_HCIUART_INTEL=y
|
||||
CONFIG_BT_HCIUART_BCM=y
|
||||
CONFIG_BT_HCIUART_QCA=y
|
||||
CONFIG_BT_HCIUART_AG6XX=y
|
||||
CONFIG_BT_HCIUART_MRVL=y
|
||||
CONFIG_BT_HCIBCM203X=m
|
||||
@ -1190,6 +1201,7 @@ CONFIG_BT_HCIVHCI=m
|
||||
CONFIG_BT_MRVL=m
|
||||
CONFIG_BT_MRVL_SDIO=m
|
||||
CONFIG_BT_ATH3K=m
|
||||
CONFIG_BT_MTKUART=m
|
||||
# CONFIG_AF_RXRPC is not set
|
||||
# CONFIG_AF_KCM is not set
|
||||
CONFIG_WIRELESS=y
|
||||
@ -1230,7 +1242,6 @@ CONFIG_MAC80211_STA_HASH_MAX_SIZE=0
|
||||
CONFIG_DST_CACHE=y
|
||||
CONFIG_GRO_CELLS=y
|
||||
# CONFIG_NET_DEVLINK is not set
|
||||
CONFIG_MAY_USE_DEVLINK=y
|
||||
# CONFIG_FAILOVER is not set
|
||||
CONFIG_HAVE_EBPF_JIT=y
|
||||
|
||||
@ -1272,17 +1283,6 @@ CONFIG_REGMAP_MMIO=y
|
||||
CONFIG_REGMAP_IRQ=y
|
||||
CONFIG_DMA_SHARED_BUFFER=y
|
||||
# CONFIG_DMA_FENCE_TRACE is not set
|
||||
CONFIG_DMA_CMA=y
|
||||
|
||||
#
|
||||
# Default contiguous memory area size:
|
||||
#
|
||||
CONFIG_CMA_SIZE_MBYTES=256
|
||||
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
|
||||
CONFIG_GENERIC_ARCH_TOPOLOGY=y
|
||||
|
||||
#
|
||||
@ -1391,6 +1391,7 @@ CONFIG_EEPROM_93CX6=m
|
||||
#
|
||||
# VOP Bus Driver
|
||||
#
|
||||
# CONFIG_VOP_BUS is not set
|
||||
|
||||
#
|
||||
# Intel MIC Host Driver
|
||||
@ -1451,7 +1452,6 @@ CONFIG_SCSI_LOWLEVEL=y
|
||||
# CONFIG_SCSI_UFSHCD is not set
|
||||
# CONFIG_SCSI_DEBUG is not set
|
||||
# CONFIG_SCSI_DH is not set
|
||||
# CONFIG_SCSI_OSD_INITIATOR is not set
|
||||
CONFIG_ATA=y
|
||||
CONFIG_ATA_VERBOSE_ERROR=y
|
||||
CONFIG_SATA_PMP=y
|
||||
@ -1525,6 +1525,7 @@ CONFIG_DUMMY=m
|
||||
# CONFIG_NET_TEAM is not set
|
||||
CONFIG_MACVLAN=m
|
||||
# CONFIG_MACVTAP is not set
|
||||
CONFIG_IPVLAN_L3S=y
|
||||
CONFIG_IPVLAN=m
|
||||
# CONFIG_IPVTAP is not set
|
||||
CONFIG_VXLAN=m
|
||||
@ -1588,6 +1589,7 @@ CONFIG_NET_VENDOR_NI=y
|
||||
# CONFIG_ETHOC is not set
|
||||
CONFIG_NET_VENDOR_QUALCOMM=y
|
||||
# CONFIG_QCA7000_SPI is not set
|
||||
# CONFIG_QCA7000_UART is not set
|
||||
# CONFIG_QCOM_EMAC is not set
|
||||
# CONFIG_RMNET is not set
|
||||
CONFIG_NET_VENDOR_RENESAS=y
|
||||
@ -1615,6 +1617,7 @@ CONFIG_MDIO_BUS=y
|
||||
CONFIG_MDIO_BUS_MUX=y
|
||||
# CONFIG_MDIO_BUS_MUX_GPIO is not set
|
||||
# CONFIG_MDIO_BUS_MUX_MMIOREG is not set
|
||||
# CONFIG_MDIO_BUS_MUX_MULTIPLEXER is not set
|
||||
# CONFIG_MDIO_HISI_FEMAC is not set
|
||||
# CONFIG_MDIO_MSCC_MIIM is not set
|
||||
CONFIG_MDIO_SUN4I=y
|
||||
@ -1910,6 +1913,7 @@ CONFIG_INPUT_MISC=y
|
||||
# CONFIG_INPUT_ATMEL_CAPTOUCH is not set
|
||||
# CONFIG_INPUT_BMA150 is not set
|
||||
# CONFIG_INPUT_E3X0_BUTTON is not set
|
||||
# CONFIG_INPUT_MSM_VIBRATOR is not set
|
||||
# CONFIG_INPUT_MMA8450 is not set
|
||||
# CONFIG_INPUT_GP2A is not set
|
||||
# CONFIG_INPUT_GPIO_BEEPER is not set
|
||||
@ -1968,6 +1972,7 @@ CONFIG_LEGACY_PTY_COUNT=256
|
||||
# CONFIG_SERIAL_NONSTANDARD is not set
|
||||
# CONFIG_N_GSM is not set
|
||||
# CONFIG_TRACE_SINK is not set
|
||||
CONFIG_LDISC_AUTOLOAD=y
|
||||
CONFIG_DEVMEM=y
|
||||
CONFIG_DEVKMEM=y
|
||||
|
||||
@ -2010,12 +2015,12 @@ CONFIG_SERIAL_CORE_CONSOLE=y
|
||||
# CONFIG_SERIAL_FSL_LPUART is not set
|
||||
# CONFIG_SERIAL_CONEXANT_DIGICOLOR is not set
|
||||
# CONFIG_SERIAL_ST_ASC is not set
|
||||
# CONFIG_SERIAL_DEV_BUS is not set
|
||||
CONFIG_SERIAL_DEV_BUS=y
|
||||
CONFIG_SERIAL_DEV_CTRL_TTYPORT=y
|
||||
# CONFIG_TTY_PRINTK is not set
|
||||
# CONFIG_HVC_DCC is not set
|
||||
# CONFIG_IPMI_HANDLER is not set
|
||||
# CONFIG_HW_RANDOM is not set
|
||||
# CONFIG_R3964 is not set
|
||||
# CONFIG_RAW_DRIVER is not set
|
||||
# CONFIG_TCG_TPM is not set
|
||||
# CONFIG_XILLYBUS is not set
|
||||
@ -2094,11 +2099,13 @@ CONFIG_SPI_MASTER=y
|
||||
# CONFIG_SPI_BITBANG is not set
|
||||
# CONFIG_SPI_CADENCE is not set
|
||||
# CONFIG_SPI_DESIGNWARE is not set
|
||||
# CONFIG_SPI_NXP_FLEXSPI is not set
|
||||
# CONFIG_SPI_GPIO is not set
|
||||
# CONFIG_SPI_FSL_SPI is not set
|
||||
# CONFIG_SPI_OC_TINY is not set
|
||||
# CONFIG_SPI_ROCKCHIP is not set
|
||||
# CONFIG_SPI_SC18IS602 is not set
|
||||
# CONFIG_SPI_SIFIVE is not set
|
||||
CONFIG_SPI_SUN4I=y
|
||||
CONFIG_SPI_SUN6I=y
|
||||
# CONFIG_SPI_MXIC is not set
|
||||
@ -2183,12 +2190,14 @@ CONFIG_GPIO_SYSFS=y
|
||||
# CONFIG_GPIO_SYSCON is not set
|
||||
# CONFIG_GPIO_XILINX is not set
|
||||
# CONFIG_GPIO_ZEVIO is not set
|
||||
# CONFIG_GPIO_AMD_FCH is not set
|
||||
|
||||
#
|
||||
# I2C GPIO expanders
|
||||
#
|
||||
# CONFIG_GPIO_ADP5588 is not set
|
||||
# CONFIG_GPIO_ADNP is not set
|
||||
# CONFIG_GPIO_GW_PLD is not set
|
||||
# CONFIG_GPIO_MAX7300 is not set
|
||||
# CONFIG_GPIO_MAX732X is not set
|
||||
# CONFIG_GPIO_PCA953X is not set
|
||||
@ -2541,6 +2550,8 @@ CONFIG_MFD_SYSCON=y
|
||||
# CONFIG_MFD_T7L66XB is not set
|
||||
# CONFIG_MFD_TC6387XB is not set
|
||||
# CONFIG_MFD_TC6393XB is not set
|
||||
# CONFIG_MFD_TQMX86 is not set
|
||||
# CONFIG_MFD_LOCHNAGAR is not set
|
||||
# CONFIG_MFD_ARIZONA_I2C is not set
|
||||
# CONFIG_MFD_ARIZONA_SPI is not set
|
||||
# CONFIG_MFD_WM8400 is not set
|
||||
@ -2549,6 +2560,8 @@ CONFIG_MFD_SYSCON=y
|
||||
# CONFIG_MFD_WM8350_I2C is not set
|
||||
# CONFIG_MFD_WM8994 is not set
|
||||
# CONFIG_MFD_ROHM_BD718XX is not set
|
||||
# CONFIG_MFD_STPMIC1 is not set
|
||||
# CONFIG_RAVE_SP_CORE is not set
|
||||
CONFIG_REGULATOR=y
|
||||
# CONFIG_REGULATOR_DEBUG is not set
|
||||
CONFIG_REGULATOR_FIXED_VOLTAGE=y
|
||||
@ -2902,10 +2915,6 @@ CONFIG_VIDEO_OV7640=m
|
||||
# Miscellaneous helper chips
|
||||
#
|
||||
|
||||
#
|
||||
# Sensors used on soc_camera driver
|
||||
#
|
||||
|
||||
#
|
||||
# Media SPI Adapters
|
||||
#
|
||||
@ -3088,8 +3097,13 @@ CONFIG_DRM_KMS_CMA_HELPER=y
|
||||
# CONFIG_DRM_I2C_SIL164 is not set
|
||||
# CONFIG_DRM_I2C_NXP_TDA998X is not set
|
||||
# CONFIG_DRM_I2C_NXP_TDA9950 is not set
|
||||
|
||||
#
|
||||
# ARM devices
|
||||
#
|
||||
# CONFIG_DRM_HDLCD is not set
|
||||
# CONFIG_DRM_MALI_DISPLAY is not set
|
||||
# CONFIG_DRM_KOMEDA is not set
|
||||
|
||||
#
|
||||
# ACP (Audio CoProcessor) Configuration
|
||||
@ -3158,6 +3172,7 @@ CONFIG_DRM_DW_HDMI=y
|
||||
CONFIG_DRM_DW_HDMI_I2S_AUDIO=y
|
||||
CONFIG_DRM_DW_HDMI_CEC=y
|
||||
# CONFIG_DRM_STI is not set
|
||||
# CONFIG_DRM_ETNAVIV is not set
|
||||
# CONFIG_DRM_ARCPGU is not set
|
||||
# CONFIG_DRM_MXSFB is not set
|
||||
# CONFIG_DRM_TINYDRM is not set
|
||||
@ -3273,9 +3288,11 @@ CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y
|
||||
# CONFIG_SND_SOC_FSL_SSI is not set
|
||||
# CONFIG_SND_SOC_FSL_SPDIF is not set
|
||||
# CONFIG_SND_SOC_FSL_ESAI is not set
|
||||
# CONFIG_SND_SOC_FSL_MICFIL is not set
|
||||
# CONFIG_SND_SOC_IMX_AUDMUX is not set
|
||||
# CONFIG_SND_I2S_HI6210_I2S is not set
|
||||
# CONFIG_SND_SOC_IMG is not set
|
||||
# CONFIG_SND_SOC_MTK_BTCVSD is not set
|
||||
|
||||
#
|
||||
# STMicroelectronics STM32 SOC audio support
|
||||
@ -3291,6 +3308,8 @@ CONFIG_SND_SUN4I_I2S=y
|
||||
CONFIG_SND_SUN4I_SPDIF=y
|
||||
CONFIG_SND_SUN8I_ADDA_PR_REGMAP=y
|
||||
# CONFIG_SND_SOC_XILINX_I2S is not set
|
||||
# CONFIG_SND_SOC_XILINX_AUDIO_FORMATTER is not set
|
||||
# CONFIG_SND_SOC_XILINX_SPDIF is not set
|
||||
# CONFIG_SND_SOC_XTFPGA_I2S is not set
|
||||
# CONFIG_ZX_TDM is not set
|
||||
CONFIG_SND_SOC_I2C_AND_SPI=y
|
||||
@ -3318,6 +3337,7 @@ CONFIG_SND_SOC_I2C_AND_SPI=y
|
||||
# CONFIG_SND_SOC_CS35L33 is not set
|
||||
# CONFIG_SND_SOC_CS35L34 is not set
|
||||
# CONFIG_SND_SOC_CS35L35 is not set
|
||||
# CONFIG_SND_SOC_CS35L36 is not set
|
||||
# CONFIG_SND_SOC_CS42L42 is not set
|
||||
# CONFIG_SND_SOC_CS42L51_I2C is not set
|
||||
# CONFIG_SND_SOC_CS42L52 is not set
|
||||
@ -3329,6 +3349,7 @@ CONFIG_SND_SOC_I2C_AND_SPI=y
|
||||
# CONFIG_SND_SOC_CS4271_SPI is not set
|
||||
# CONFIG_SND_SOC_CS42XX8_I2C is not set
|
||||
# CONFIG_SND_SOC_CS43130 is not set
|
||||
# CONFIG_SND_SOC_CS4341 is not set
|
||||
# CONFIG_SND_SOC_CS4349 is not set
|
||||
# CONFIG_SND_SOC_CS53L30 is not set
|
||||
# CONFIG_SND_SOC_DMIC is not set
|
||||
@ -3359,6 +3380,7 @@ CONFIG_SND_SOC_HDMI_CODEC=y
|
||||
# CONFIG_SND_SOC_PCM3168A_SPI is not set
|
||||
# CONFIG_SND_SOC_PCM512x_I2C is not set
|
||||
# CONFIG_SND_SOC_PCM512x_SPI is not set
|
||||
# CONFIG_SND_SOC_RK3328 is not set
|
||||
# CONFIG_SND_SOC_RT5616 is not set
|
||||
# CONFIG_SND_SOC_RT5631 is not set
|
||||
# CONFIG_SND_SOC_SGTL5000 is not set
|
||||
@ -3405,6 +3427,7 @@ CONFIG_SND_SOC_HDMI_CODEC=y
|
||||
# CONFIG_SND_SOC_WM8804_I2C is not set
|
||||
# CONFIG_SND_SOC_WM8804_SPI is not set
|
||||
# CONFIG_SND_SOC_WM8903 is not set
|
||||
# CONFIG_SND_SOC_WM8904 is not set
|
||||
# CONFIG_SND_SOC_WM8960 is not set
|
||||
# CONFIG_SND_SOC_WM8962 is not set
|
||||
# CONFIG_SND_SOC_WM8974 is not set
|
||||
@ -3413,6 +3436,7 @@ CONFIG_SND_SOC_HDMI_CODEC=y
|
||||
# CONFIG_SND_SOC_ZX_AUD96P22 is not set
|
||||
# CONFIG_SND_SOC_MAX9759 is not set
|
||||
# CONFIG_SND_SOC_MT6351 is not set
|
||||
# CONFIG_SND_SOC_MT6358 is not set
|
||||
# CONFIG_SND_SOC_NAU8540 is not set
|
||||
# CONFIG_SND_SOC_NAU8810 is not set
|
||||
# CONFIG_SND_SOC_NAU8822 is not set
|
||||
@ -3420,9 +3444,7 @@ CONFIG_SND_SOC_HDMI_CODEC=y
|
||||
# CONFIG_SND_SOC_TPA6130A2 is not set
|
||||
CONFIG_SND_SIMPLE_CARD_UTILS=y
|
||||
CONFIG_SND_SIMPLE_CARD=y
|
||||
CONFIG_SND_SIMPLE_SCU_CARD=y
|
||||
CONFIG_SND_AUDIO_GRAPH_CARD=y
|
||||
CONFIG_SND_AUDIO_GRAPH_SCU_CARD=y
|
||||
|
||||
#
|
||||
# HID support
|
||||
@ -3467,6 +3489,7 @@ CONFIG_HID_EZKEY=y
|
||||
# CONFIG_HID_KYE is not set
|
||||
# CONFIG_HID_UCLOGIC is not set
|
||||
# CONFIG_HID_WALTOP is not set
|
||||
# CONFIG_HID_VIEWSONIC is not set
|
||||
# CONFIG_HID_GYRATION is not set
|
||||
# CONFIG_HID_ICADE is not set
|
||||
# CONFIG_HID_ITE is not set
|
||||
@ -3483,6 +3506,7 @@ CONFIG_HID_LOGITECH=y
|
||||
# CONFIG_LOGIG940_FF is not set
|
||||
# CONFIG_LOGIWHEELS_FF is not set
|
||||
# CONFIG_HID_MAGICMOUSE is not set
|
||||
# CONFIG_HID_MALTRON is not set
|
||||
# CONFIG_HID_MAYFLASH is not set
|
||||
# CONFIG_HID_REDRAGON is not set
|
||||
CONFIG_HID_MICROSOFT=y
|
||||
@ -3550,6 +3574,7 @@ CONFIG_USB_DEFAULT_PERSIST=y
|
||||
# CONFIG_USB_OTG_WHITELIST is not set
|
||||
# CONFIG_USB_OTG_BLACKLIST_HUB is not set
|
||||
# CONFIG_USB_LEDS_TRIGGER_USBPORT is not set
|
||||
CONFIG_USB_AUTOSUSPEND_DELAY=2
|
||||
CONFIG_USB_MON=m
|
||||
# CONFIG_USB_WUSB_CBAF is not set
|
||||
|
||||
@ -3561,6 +3586,7 @@ CONFIG_USB_MON=m
|
||||
CONFIG_USB_EHCI_HCD=y
|
||||
# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
|
||||
CONFIG_USB_EHCI_TT_NEWSCHED=y
|
||||
# CONFIG_USB_EHCI_FSL is not set
|
||||
CONFIG_USB_EHCI_HCD_PLATFORM=y
|
||||
# CONFIG_USB_OXU210HP_HCD is not set
|
||||
# CONFIG_USB_ISP116X_HCD is not set
|
||||
@ -3872,6 +3898,7 @@ CONFIG_RTC_INTF_DEV=y
|
||||
# I2C RTC drivers
|
||||
#
|
||||
# CONFIG_RTC_DRV_ABB5ZES3 is not set
|
||||
# CONFIG_RTC_DRV_ABEOZ9 is not set
|
||||
# CONFIG_RTC_DRV_ABX80X is not set
|
||||
# CONFIG_RTC_DRV_DS1307 is not set
|
||||
# CONFIG_RTC_DRV_DS1374 is not set
|
||||
@ -3896,7 +3923,9 @@ CONFIG_RTC_INTF_DEV=y
|
||||
# CONFIG_RTC_DRV_RX8581 is not set
|
||||
# CONFIG_RTC_DRV_RX8025 is not set
|
||||
# CONFIG_RTC_DRV_EM3027 is not set
|
||||
# CONFIG_RTC_DRV_RV3028 is not set
|
||||
# CONFIG_RTC_DRV_RV8803 is not set
|
||||
# CONFIG_RTC_DRV_SD3078 is not set
|
||||
|
||||
#
|
||||
# SPI RTC drivers
|
||||
@ -3949,6 +3978,7 @@ CONFIG_RTC_I2C_AND_SPI=y
|
||||
# on-CPU RTC drivers
|
||||
#
|
||||
CONFIG_RTC_DRV_SUN6I=y
|
||||
# CONFIG_RTC_DRV_CADENCE is not set
|
||||
# CONFIG_RTC_DRV_FTRTC010 is not set
|
||||
# CONFIG_RTC_DRV_SNVS is not set
|
||||
# CONFIG_RTC_DRV_R7301 is not set
|
||||
@ -3956,7 +3986,6 @@ CONFIG_RTC_DRV_SUN6I=y
|
||||
#
|
||||
# HID Sensor RTC drivers
|
||||
#
|
||||
# CONFIG_RTC_DRV_HID_SENSOR_TIME is not set
|
||||
CONFIG_DMADEVICES=y
|
||||
# CONFIG_DMADEVICES_DEBUG is not set
|
||||
|
||||
@ -3970,6 +3999,7 @@ CONFIG_DMA_OF=y
|
||||
CONFIG_DMA_SUN6I=y
|
||||
# CONFIG_DW_AXI_DMAC is not set
|
||||
# CONFIG_FSL_EDMA is not set
|
||||
# CONFIG_FSL_QDMA is not set
|
||||
# CONFIG_INTEL_IDMA64 is not set
|
||||
# CONFIG_NBPFAXI_DMA is not set
|
||||
# CONFIG_QCOM_HIDMA_MGMT is not set
|
||||
@ -4018,7 +4048,6 @@ CONFIG_STAGING=y
|
||||
#
|
||||
# Analog to digital converters
|
||||
#
|
||||
# CONFIG_AD7606 is not set
|
||||
# CONFIG_AD7780 is not set
|
||||
# CONFIG_AD7816 is not set
|
||||
# CONFIG_AD7192 is not set
|
||||
@ -4033,7 +4062,6 @@ CONFIG_STAGING=y
|
||||
# Capacitance to digital converters
|
||||
#
|
||||
# CONFIG_AD7150 is not set
|
||||
# CONFIG_AD7152 is not set
|
||||
# CONFIG_AD7746 is not set
|
||||
|
||||
#
|
||||
@ -4065,6 +4093,10 @@ CONFIG_STAGING_MEDIA=y
|
||||
CONFIG_VIDEO_SUNXI=y
|
||||
CONFIG_VIDEO_SUNXI_CEDRUS=y
|
||||
|
||||
#
|
||||
# soc_camera sensor drivers
|
||||
#
|
||||
|
||||
#
|
||||
# Android
|
||||
#
|
||||
@ -4080,7 +4112,6 @@ CONFIG_VIDEO_SUNXI_CEDRUS=y
|
||||
# CONFIG_KS7010 is not set
|
||||
# CONFIG_GREYBUS is not set
|
||||
# CONFIG_PI433 is not set
|
||||
# CONFIG_MTK_MMC is not set
|
||||
|
||||
#
|
||||
# Gasket devices
|
||||
@ -4109,6 +4140,7 @@ CONFIG_COMMON_CLK=y
|
||||
# CONFIG_CLK_QORIQ is not set
|
||||
# CONFIG_COMMON_CLK_PWM is not set
|
||||
# CONFIG_COMMON_CLK_VC5 is not set
|
||||
# CONFIG_COMMON_CLK_FIXED_MMIO is not set
|
||||
CONFIG_SUNXI_CCU=y
|
||||
CONFIG_SUN8I_A23_CCU=y
|
||||
CONFIG_SUN8I_A33_CCU=y
|
||||
@ -4198,6 +4230,7 @@ CONFIG_EXTCON=y
|
||||
# CONFIG_EXTCON_ADC_JACK is not set
|
||||
# CONFIG_EXTCON_GPIO is not set
|
||||
# CONFIG_EXTCON_MAX3355 is not set
|
||||
# CONFIG_EXTCON_PTN5150 is not set
|
||||
# CONFIG_EXTCON_RT8973A is not set
|
||||
# CONFIG_EXTCON_SM5502 is not set
|
||||
# CONFIG_EXTCON_USB_GPIO is not set
|
||||
@ -4254,7 +4287,10 @@ CONFIG_IIO_SW_TRIGGER=y
|
||||
# CONFIG_AD7291 is not set
|
||||
# CONFIG_AD7298 is not set
|
||||
# CONFIG_AD7476 is not set
|
||||
# CONFIG_AD7606_IFACE_PARALLEL is not set
|
||||
# CONFIG_AD7606_IFACE_SPI is not set
|
||||
# CONFIG_AD7766 is not set
|
||||
# CONFIG_AD7768_1 is not set
|
||||
# CONFIG_AD7791 is not set
|
||||
# CONFIG_AD7793 is not set
|
||||
# CONFIG_AD7887 is not set
|
||||
@ -4292,6 +4328,7 @@ CONFIG_SUN4I_GPADC=y
|
||||
# CONFIG_TI_ADS1015 is not set
|
||||
# CONFIG_TI_ADS7950 is not set
|
||||
# CONFIG_TI_ADS8688 is not set
|
||||
# CONFIG_TI_ADS124S08 is not set
|
||||
# CONFIG_TI_TLC4541 is not set
|
||||
# CONFIG_VF610_ADC is not set
|
||||
|
||||
@ -4312,6 +4349,9 @@ CONFIG_SUN4I_GPADC=y
|
||||
# CONFIG_BME680 is not set
|
||||
# CONFIG_CCS811 is not set
|
||||
# CONFIG_IAQCORE is not set
|
||||
# CONFIG_PMS7003 is not set
|
||||
# CONFIG_SENSIRION_SGP30 is not set
|
||||
# CONFIG_SPS30 is not set
|
||||
# CONFIG_VZ89X is not set
|
||||
|
||||
#
|
||||
@ -4361,6 +4401,7 @@ CONFIG_SUN4I_GPADC=y
|
||||
# CONFIG_TI_DAC082S085 is not set
|
||||
# CONFIG_TI_DAC5571 is not set
|
||||
# CONFIG_TI_DAC7311 is not set
|
||||
# CONFIG_TI_DAC7612 is not set
|
||||
# CONFIG_VF610_DAC is not set
|
||||
|
||||
#
|
||||
@ -4452,6 +4493,7 @@ CONFIG_SUN4I_GPADC=y
|
||||
# CONFIG_LTR501 is not set
|
||||
# CONFIG_LV0104CS is not set
|
||||
# CONFIG_MAX44000 is not set
|
||||
# CONFIG_MAX44009 is not set
|
||||
# CONFIG_OPT3001 is not set
|
||||
# CONFIG_PA12203001 is not set
|
||||
# CONFIG_SI1133 is not set
|
||||
@ -4586,10 +4628,14 @@ CONFIG_RESET_SUNXI=y
|
||||
# PHY Subsystem
|
||||
#
|
||||
CONFIG_GENERIC_PHY=y
|
||||
CONFIG_GENERIC_PHY_MIPI_DPHY=y
|
||||
CONFIG_PHY_SUN4I_USB=y
|
||||
CONFIG_PHY_SUN6I_MIPI_DPHY=y
|
||||
CONFIG_PHY_SUN9I_USB=y
|
||||
CONFIG_PHY_SUN50I_USB3=y
|
||||
# CONFIG_BCM_KONA_USB2_PHY is not set
|
||||
# CONFIG_PHY_CADENCE_DP is not set
|
||||
# CONFIG_PHY_CADENCE_DPHY is not set
|
||||
# CONFIG_PHY_CADENCE_SIERRA is not set
|
||||
# CONFIG_PHY_FSL_IMX8MQ_USB is not set
|
||||
# CONFIG_PHY_PXA_28NM_HSIC is not set
|
||||
@ -4627,11 +4673,13 @@ CONFIG_NVMEM_SUNXI_SID=y
|
||||
CONFIG_PM_OPP=y
|
||||
# CONFIG_SIOX is not set
|
||||
# CONFIG_SLIMBUS is not set
|
||||
# CONFIG_INTERCONNECT is not set
|
||||
|
||||
#
|
||||
# File systems
|
||||
#
|
||||
CONFIG_DCACHE_WORD_ACCESS=y
|
||||
CONFIG_VALIDATE_FS_PARSER=y
|
||||
CONFIG_FS_IOMAP=y
|
||||
# CONFIG_EXT2_FS is not set
|
||||
# CONFIG_EXT3_FS is not set
|
||||
@ -4639,7 +4687,6 @@ CONFIG_EXT4_FS=y
|
||||
CONFIG_EXT4_USE_FOR_EXT2=y
|
||||
CONFIG_EXT4_FS_POSIX_ACL=y
|
||||
CONFIG_EXT4_FS_SECURITY=y
|
||||
# CONFIG_EXT4_ENCRYPTION is not set
|
||||
# CONFIG_EXT4_DEBUG is not set
|
||||
CONFIG_JBD2=y
|
||||
# CONFIG_JBD2_DEBUG is not set
|
||||
@ -4670,7 +4717,6 @@ CONFIG_F2FS_FS_XATTR=y
|
||||
CONFIG_F2FS_FS_POSIX_ACL=y
|
||||
# CONFIG_F2FS_FS_SECURITY is not set
|
||||
# CONFIG_F2FS_CHECK_FS is not set
|
||||
# CONFIG_F2FS_FS_ENCRYPTION is not set
|
||||
# CONFIG_F2FS_FAULT_INJECTION is not set
|
||||
CONFIG_FS_POSIX_ACL=y
|
||||
CONFIG_EXPORTFS=y
|
||||
@ -4869,7 +4915,7 @@ CONFIG_HAVE_HARDENED_USERCOPY_ALLOCATOR=y
|
||||
# CONFIG_FORTIFY_SOURCE is not set
|
||||
# CONFIG_STATIC_USERMODEHELPER is not set
|
||||
CONFIG_DEFAULT_SECURITY_DAC=y
|
||||
CONFIG_DEFAULT_SECURITY=""
|
||||
CONFIG_LSM="yama,loadpin,safesetid,integrity"
|
||||
CONFIG_CRYPTO=y
|
||||
|
||||
#
|
||||
@ -5085,8 +5131,22 @@ CONFIG_HAS_IOMEM=y
|
||||
CONFIG_HAS_IOPORT_MAP=y
|
||||
CONFIG_HAS_DMA=y
|
||||
CONFIG_NEED_DMA_MAP_STATE=y
|
||||
CONFIG_HAVE_GENERIC_DMA_COHERENT=y
|
||||
CONFIG_DMA_DECLARE_COHERENT=y
|
||||
CONFIG_ARCH_HAS_SETUP_DMA_OPS=y
|
||||
CONFIG_ARCH_HAS_TEARDOWN_DMA_OPS=y
|
||||
CONFIG_DMA_REMAP=y
|
||||
CONFIG_DMA_CMA=y
|
||||
|
||||
#
|
||||
# Default contiguous memory area size:
|
||||
#
|
||||
CONFIG_CMA_SIZE_MBYTES=256
|
||||
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
|
||||
# CONFIG_DMA_API_DEBUG is not set
|
||||
CONFIG_SGL_ALLOC=y
|
||||
CONFIG_CPU_RMAP=y
|
||||
CONFIG_DQL=y
|
||||
@ -5116,6 +5176,7 @@ CONFIG_SBITMAP=y
|
||||
# printk and dmesg options
|
||||
#
|
||||
CONFIG_PRINTK_TIME=y
|
||||
# CONFIG_PRINTK_CALLER is not set
|
||||
CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7
|
||||
CONFIG_CONSOLE_LOGLEVEL_QUIET=4
|
||||
CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
|
||||
@ -5131,7 +5192,6 @@ CONFIG_FRAME_WARN=1024
|
||||
# CONFIG_STRIP_ASM_SYMS is not set
|
||||
# CONFIG_READABLE_ASM is not set
|
||||
# CONFIG_UNUSED_SYMBOLS is not set
|
||||
# CONFIG_PAGE_OWNER is not set
|
||||
CONFIG_DEBUG_FS=y
|
||||
# CONFIG_HEADERS_CHECK is not set
|
||||
# CONFIG_DEBUG_SECTION_MISMATCH is not set
|
||||
@ -5147,6 +5207,7 @@ CONFIG_DEBUG_KERNEL=y
|
||||
#
|
||||
# CONFIG_PAGE_EXTENSION is not set
|
||||
# CONFIG_DEBUG_PAGEALLOC is not set
|
||||
# CONFIG_PAGE_OWNER is not set
|
||||
# CONFIG_PAGE_POISONING is not set
|
||||
# CONFIG_DEBUG_RODATA_TEST is not set
|
||||
# CONFIG_DEBUG_OBJECTS is not set
|
||||
@ -5231,7 +5292,6 @@ CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
|
||||
CONFIG_HAVE_C_RECORDMCOUNT=y
|
||||
CONFIG_TRACING_SUPPORT=y
|
||||
# CONFIG_FTRACE is not set
|
||||
# CONFIG_DMA_API_DEBUG is not set
|
||||
CONFIG_RUNTIME_TESTING_MENU=y
|
||||
# CONFIG_LKDTM is not set
|
||||
# CONFIG_TEST_LIST_SORT is not set
|
||||
@ -5254,6 +5314,7 @@ CONFIG_RUNTIME_TESTING_MENU=y
|
||||
# CONFIG_TEST_HASH is not set
|
||||
# CONFIG_TEST_IDA is not set
|
||||
# CONFIG_TEST_LKM is not set
|
||||
# CONFIG_TEST_VMALLOC is not set
|
||||
# CONFIG_TEST_USER_COPY is not set
|
||||
# CONFIG_TEST_BPF is not set
|
||||
# CONFIG_FIND_BIT_BENCHMARK is not set
|
||||
@ -5263,12 +5324,14 @@ CONFIG_RUNTIME_TESTING_MENU=y
|
||||
# CONFIG_TEST_STATIC_KEYS is not set
|
||||
# CONFIG_TEST_KMOD is not set
|
||||
# CONFIG_TEST_MEMCAT_P is not set
|
||||
# CONFIG_TEST_STACKINIT is not set
|
||||
# CONFIG_MEMTEST is not set
|
||||
# CONFIG_BUG_ON_DATA_CORRUPTION is not set
|
||||
# CONFIG_SAMPLES is not set
|
||||
CONFIG_HAVE_ARCH_KGDB=y
|
||||
# CONFIG_KGDB is not set
|
||||
# CONFIG_UBSAN is not set
|
||||
CONFIG_UBSAN_ALIGNMENT=y
|
||||
CONFIG_ARCH_HAS_DEVMEM_IS_ALLOWED=y
|
||||
# CONFIG_STRICT_DEVMEM is not set
|
||||
# CONFIG_ARM_PTDUMP_DEBUGFS is not set
|
||||
|
@ -8,15 +8,6 @@
|
||||
# u-boot version to use (default)
|
||||
UBOOT_VERSION="default"
|
||||
|
||||
# Configuration for u-boot
|
||||
UBOOT_CONFIG=""
|
||||
|
||||
# Target Configfile for u-boot
|
||||
UBOOT_CONFIGFILE=""
|
||||
|
||||
# Kernel extra targets to build
|
||||
KERNEL_UBOOT_EXTRA_TARGET=""
|
||||
|
||||
# Additional kernel make parameters (for example to specify the u-boot loadaddress)
|
||||
KERNEL_MAKE_EXTRACMD="dtbs"
|
||||
|
||||
|
@ -401,9 +401,9 @@ index ccb5aa8468e0..e78be449e763 100644
|
||||
--- a/include/drm/bridge/dw_hdmi.h
|
||||
+++ b/include/drm/bridge/dw_hdmi.h
|
||||
@@ -156,6 +156,8 @@ void dw_hdmi_setup_rx_sense(struct dw_hdmi *hdmi, bool hpd, bool rx_sense);
|
||||
void dw_hdmi_set_sample_rate(struct dw_hdmi *hdmi, unsigned int rate);
|
||||
void dw_hdmi_audio_enable(struct dw_hdmi *hdmi);
|
||||
void dw_hdmi_audio_disable(struct dw_hdmi *hdmi);
|
||||
void dw_hdmi_set_high_tmds_clock_ratio(struct dw_hdmi *hdmi);
|
||||
+void dw_hdmi_set_update_eld(struct dw_hdmi *hdmi,
|
||||
+ void (*update_eld)(struct device *dev, u8 *eld));
|
||||
|
||||
|
@ -674,3 +674,316 @@ index b98add3cdedd..d0429c0e6b6b 100644
|
||||
--
|
||||
2.21.0
|
||||
|
||||
From ed19ec00d4d62a74857ad9c2ea1dbf9671ac3580 Mon Sep 17 00:00:00 2001
|
||||
From: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
Date: Mon, 28 Jan 2019 19:36:54 +0100
|
||||
Subject: [PATCH 1/6] dt-bindings: media: cedrus: Add H6 compatible
|
||||
|
||||
This adds a compatible for H6. H6 VPU supports 10-bit HEVC decoding and
|
||||
additional AFBC output format for HEVC.
|
||||
|
||||
Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
---
|
||||
Documentation/devicetree/bindings/media/cedrus.txt | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/Documentation/devicetree/bindings/media/cedrus.txt b/Documentation/devicetree/bindings/media/cedrus.txt
|
||||
index bce0705df953..20c82fb0c343 100644
|
||||
--- a/Documentation/devicetree/bindings/media/cedrus.txt
|
||||
+++ b/Documentation/devicetree/bindings/media/cedrus.txt
|
||||
@@ -13,6 +13,7 @@ Required properties:
|
||||
- "allwinner,sun8i-h3-video-engine"
|
||||
- "allwinner,sun50i-a64-video-engine"
|
||||
- "allwinner,sun50i-h5-video-engine"
|
||||
+ - "allwinner,sun50i-h6-video-engine"
|
||||
- reg : register base and length of VE;
|
||||
- clocks : list of clock specifiers, corresponding to entries in
|
||||
the clock-names property;
|
||||
--
|
||||
2.20.1
|
||||
|
||||
|
||||
From 744c66f8c328ef40b6fb246f8b9f2daa9cce4d9d Mon Sep 17 00:00:00 2001
|
||||
From: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
Date: Mon, 28 Jan 2019 19:47:33 +0100
|
||||
Subject: [PATCH 3/6] media: cedrus: Add support for H6
|
||||
|
||||
H6 has improved VPU. It supports 10-bit HEVC decoding and AFBC output
|
||||
format for HEVC.
|
||||
|
||||
Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
---
|
||||
drivers/staging/media/sunxi/cedrus/cedrus.c | 9 +++++++++
|
||||
1 file changed, 9 insertions(+)
|
||||
|
||||
diff --git a/drivers/staging/media/sunxi/cedrus/cedrus.c b/drivers/staging/media/sunxi/cedrus/cedrus.c
|
||||
index ff11cbeba205..b98add3cdedd 100644
|
||||
--- a/drivers/staging/media/sunxi/cedrus/cedrus.c
|
||||
+++ b/drivers/staging/media/sunxi/cedrus/cedrus.c
|
||||
@@ -396,6 +396,11 @@ static const struct cedrus_variant sun50i_h5_cedrus_variant = {
|
||||
.capabilities = CEDRUS_CAPABILITY_UNTILED,
|
||||
};
|
||||
|
||||
+static const struct cedrus_variant sun50i_h6_cedrus_variant = {
|
||||
+ .capabilities = CEDRUS_CAPABILITY_UNTILED,
|
||||
+ .quirks = CEDRUS_QUIRK_NO_DMA_OFFSET,
|
||||
+};
|
||||
+
|
||||
static const struct of_device_id cedrus_dt_match[] = {
|
||||
{
|
||||
.compatible = "allwinner,sun4i-a10-video-engine",
|
||||
@@ -425,6 +430,10 @@ static const struct of_device_id cedrus_dt_match[] = {
|
||||
.compatible = "allwinner,sun50i-h5-video-engine",
|
||||
.data = &sun50i_h5_cedrus_variant,
|
||||
},
|
||||
+ {
|
||||
+ .compatible = "allwinner,sun50i-h6-video-engine",
|
||||
+ .data = &sun50i_h6_cedrus_variant,
|
||||
+ },
|
||||
{ /* sentinel */ }
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, cedrus_dt_match);
|
||||
--
|
||||
2.20.1
|
||||
|
||||
|
||||
From c1b3128ac98c05c0afde4e6e065d6b1f2ae1dfa7 Mon Sep 17 00:00:00 2001
|
||||
From: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
Date: Mon, 28 Jan 2019 19:59:27 +0100
|
||||
Subject: [PATCH 6/6] arm64: dts: allwinner: h6: Add Video Engine node
|
||||
|
||||
This adds the Video engine node for H6. It can use whole DRAM range so
|
||||
there is no need for reserved memory node.
|
||||
|
||||
Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
---
|
||||
arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 11 +++++++++++
|
||||
1 file changed, 11 insertions(+)
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
|
||||
index 247dc0a5ce89..de4b7a1f1012 100644
|
||||
--- a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
|
||||
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
|
||||
@@ -146,6 +146,17 @@
|
||||
};
|
||||
};
|
||||
|
||||
+ video-codec@1c0e000 {
|
||||
+ compatible = "allwinner,sun50i-h6-video-engine";
|
||||
+ reg = <0x01c0e000 0x2000>;
|
||||
+ clocks = <&ccu CLK_BUS_VE>, <&ccu CLK_VE>,
|
||||
+ <&ccu CLK_MBUS_VE>;
|
||||
+ clock-names = "ahb", "mod", "ram";
|
||||
+ resets = <&ccu RST_BUS_VE>;
|
||||
+ interrupts = <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>;
|
||||
+ allwinner,sram = <&ve_sram 1>;
|
||||
+ };
|
||||
+
|
||||
syscon: syscon@3000000 {
|
||||
compatible = "allwinner,sun50i-h6-system-control",
|
||||
"allwinner,sun50i-a64-system-control";
|
||||
--
|
||||
2.20.1
|
||||
|
||||
From 87effaae9e90474546d441b9123bca824e670a0b Mon Sep 17 00:00:00 2001
|
||||
From: Fish Lin <linfish@google.com>
|
||||
Date: Thu, 28 Mar 2019 23:20:46 -0400
|
||||
Subject: [PATCH] media: v4l: add I / P frame min max QP definitions
|
||||
|
||||
Add following V4L2 QP parameters for H.264:
|
||||
* V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MIN_QP
|
||||
* V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MAX_QP
|
||||
* V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MIN_QP
|
||||
* V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MAX_QP
|
||||
|
||||
These controls will limit QP range for intra and inter frame,
|
||||
provide more manual control to improve video encode quality.
|
||||
|
||||
Signed-off-by: Fish Lin <linfish@google.com>
|
||||
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
|
||||
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
|
||||
---
|
||||
.../media/uapi/v4l/ext-ctrls-codec.rst | 24 +++++++++++++++++++
|
||||
drivers/media/v4l2-core/v4l2-ctrls.c | 4 ++++
|
||||
include/uapi/linux/v4l2-controls.h | 4 ++++
|
||||
3 files changed, 32 insertions(+)
|
||||
|
||||
diff --git a/Documentation/media/uapi/v4l/ext-ctrls-codec.rst b/Documentation/media/uapi/v4l/ext-ctrls-codec.rst
|
||||
index 67a122339c0e..4a8446203085 100644
|
||||
--- a/Documentation/media/uapi/v4l/ext-ctrls-codec.rst
|
||||
+++ b/Documentation/media/uapi/v4l/ext-ctrls-codec.rst
|
||||
@@ -1055,6 +1055,30 @@ enum v4l2_mpeg_video_h264_entropy_mode -
|
||||
Quantization parameter for an B frame for H264. Valid range: from 0
|
||||
to 51.
|
||||
|
||||
+``V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MIN_QP (integer)``
|
||||
+ Minimum quantization parameter for the H264 I frame to limit I frame
|
||||
+ quality to a range. Valid range: from 0 to 51. If
|
||||
+ V4L2_CID_MPEG_VIDEO_H264_MIN_QP is also set, the quantization parameter
|
||||
+ should be chosen to meet both requirements.
|
||||
+
|
||||
+``V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MAX_QP (integer)``
|
||||
+ Maximum quantization parameter for the H264 I frame to limit I frame
|
||||
+ quality to a range. Valid range: from 0 to 51. If
|
||||
+ V4L2_CID_MPEG_VIDEO_H264_MAX_QP is also set, the quantization parameter
|
||||
+ should be chosen to meet both requirements.
|
||||
+
|
||||
+``V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MIN_QP (integer)``
|
||||
+ Minimum quantization parameter for the H264 P frame to limit P frame
|
||||
+ quality to a range. Valid range: from 0 to 51. If
|
||||
+ V4L2_CID_MPEG_VIDEO_H264_MIN_QP is also set, the quantization parameter
|
||||
+ should be chosen to meet both requirements.
|
||||
+
|
||||
+``V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MAX_QP (integer)``
|
||||
+ Maximum quantization parameter for the H264 P frame to limit P frame
|
||||
+ quality to a range. Valid range: from 0 to 51. If
|
||||
+ V4L2_CID_MPEG_VIDEO_H264_MAX_QP is also set, the quantization parameter
|
||||
+ should be chosen to meet both requirements.
|
||||
+
|
||||
``V4L2_CID_MPEG_VIDEO_MPEG4_I_FRAME_QP (integer)``
|
||||
Quantization parameter for an I frame for MPEG4. Valid range: from 1
|
||||
to 31.
|
||||
diff --git a/drivers/media/v4l2-core/v4l2-ctrls.c b/drivers/media/v4l2-core/v4l2-ctrls.c
|
||||
index b1ae2e555c68..89a1fe564675 100644
|
||||
--- a/drivers/media/v4l2-core/v4l2-ctrls.c
|
||||
+++ b/drivers/media/v4l2-core/v4l2-ctrls.c
|
||||
@@ -828,6 +828,10 @@ const char *v4l2_ctrl_get_name(u32 id)
|
||||
case V4L2_CID_MPEG_VIDEO_H264_CONSTRAINED_INTRA_PREDICTION:
|
||||
return "H264 Constrained Intra Pred";
|
||||
case V4L2_CID_MPEG_VIDEO_H264_CHROMA_QP_INDEX_OFFSET: return "H264 Chroma QP Index Offset";
|
||||
+ case V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MIN_QP: return "H264 I-Frame Minimum QP Value";
|
||||
+ case V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MAX_QP: return "H264 I-Frame Maximum QP Value";
|
||||
+ case V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MIN_QP: return "H264 P-Frame Minimum QP Value";
|
||||
+ case V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MAX_QP: return "H264 P-Frame Maximum QP Value";
|
||||
case V4L2_CID_MPEG_VIDEO_MPEG4_I_FRAME_QP: return "MPEG4 I-Frame QP Value";
|
||||
case V4L2_CID_MPEG_VIDEO_MPEG4_P_FRAME_QP: return "MPEG4 P-Frame QP Value";
|
||||
case V4L2_CID_MPEG_VIDEO_MPEG4_B_FRAME_QP: return "MPEG4 B-Frame QP Value";
|
||||
diff --git a/include/uapi/linux/v4l2-controls.h b/include/uapi/linux/v4l2-controls.h
|
||||
index 78816ec88751..37807f23231e 100644
|
||||
--- a/include/uapi/linux/v4l2-controls.h
|
||||
+++ b/include/uapi/linux/v4l2-controls.h
|
||||
@@ -539,6 +539,10 @@ enum v4l2_mpeg_video_h264_hierarchical_coding_type {
|
||||
#define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER_QP (V4L2_CID_MPEG_BASE+382)
|
||||
#define V4L2_CID_MPEG_VIDEO_H264_CONSTRAINED_INTRA_PREDICTION (V4L2_CID_MPEG_BASE+383)
|
||||
#define V4L2_CID_MPEG_VIDEO_H264_CHROMA_QP_INDEX_OFFSET (V4L2_CID_MPEG_BASE+384)
|
||||
+#define V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MIN_QP (V4L2_CID_MPEG_BASE+385)
|
||||
+#define V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MAX_QP (V4L2_CID_MPEG_BASE+386)
|
||||
+#define V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MIN_QP (V4L2_CID_MPEG_BASE+387)
|
||||
+#define V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MAX_QP (V4L2_CID_MPEG_BASE+388)
|
||||
#define V4L2_CID_MPEG_VIDEO_MPEG4_I_FRAME_QP (V4L2_CID_MPEG_BASE+400)
|
||||
#define V4L2_CID_MPEG_VIDEO_MPEG4_P_FRAME_QP (V4L2_CID_MPEG_BASE+401)
|
||||
#define V4L2_CID_MPEG_VIDEO_MPEG4_B_FRAME_QP (V4L2_CID_MPEG_BASE+402)
|
||||
--
|
||||
2.21.0
|
||||
|
||||
From 26fae7a41313506931c9be5f532c12d8d654f153 Mon Sep 17 00:00:00 2001
|
||||
From: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
Date: Tue, 2 Apr 2019 23:06:22 +0200
|
||||
Subject: [PATCH] clk: sunxi-ng: h6: Preset hdmi-cec clock parent
|
||||
|
||||
H6 manual and BSP clock driver both states that hdmi-cec clock has two
|
||||
possible parents, osc32k and pll-periph0-2x with 36621 predivider.
|
||||
Because pll-periph0-2x is always 1.2 GHz, both parents give same
|
||||
hdmi-cec rate - 32768 Hz, which is exactly the rate needed for HDMI CEC
|
||||
controller to operate correctly.
|
||||
|
||||
However, for some reason, HDMI CEC controller doesn't work if default
|
||||
parent (osc32k) is used. BSP HDMI driver also always use pll-periph0-2x
|
||||
as hdmi-cec clock parent.
|
||||
|
||||
In order to solve the issue, preset hdmi-cec clock parent to
|
||||
pll-periph0-2x.
|
||||
|
||||
Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com>
|
||||
---
|
||||
drivers/clk/sunxi-ng/ccu-sun50i-h6.c | 11 +++++++++++
|
||||
1 file changed, 11 insertions(+)
|
||||
|
||||
diff --git a/drivers/clk/sunxi-ng/ccu-sun50i-h6.c b/drivers/clk/sunxi-ng/ccu-sun50i-h6.c
|
||||
index daf78966555e..33980067b06e 100644
|
||||
--- a/drivers/clk/sunxi-ng/ccu-sun50i-h6.c
|
||||
+++ b/drivers/clk/sunxi-ng/ccu-sun50i-h6.c
|
||||
@@ -656,6 +656,8 @@ static const char * const hdmi_cec_parents[] = { "osc32k", "pll-periph0-2x" };
|
||||
static const struct ccu_mux_fixed_prediv hdmi_cec_predivs[] = {
|
||||
{ .index = 1, .div = 36621 },
|
||||
};
|
||||
+
|
||||
+#define SUN50I_H6_HDMI_CEC_CLK_REG 0xb10
|
||||
static struct ccu_mux hdmi_cec_clk = {
|
||||
.enable = BIT(31),
|
||||
|
||||
@@ -1200,6 +1202,15 @@ static int sun50i_h6_ccu_probe(struct platform_device *pdev)
|
||||
val &= ~(GENMASK(21, 16) | BIT(0));
|
||||
writel(val | (7 << 16), reg + SUN50I_H6_PLL_AUDIO_REG);
|
||||
|
||||
+ /*
|
||||
+ * First clock parent (osc32K) is unusable for CEC. But since there
|
||||
+ * is no good way to force parent switch (both run with same frequency),
|
||||
+ * just set second clock parent here.
|
||||
+ */
|
||||
+ val = readl(reg + SUN50I_H6_HDMI_CEC_CLK_REG);
|
||||
+ val |= BIT(24);
|
||||
+ writel(val, reg + SUN50I_H6_HDMI_CEC_CLK_REG);
|
||||
+
|
||||
return sunxi_ccu_probe(pdev->dev.of_node, reg, &sun50i_h6_ccu_desc);
|
||||
}
|
||||
|
||||
--
|
||||
2.21.0
|
||||
|
||||
From 6597ce3de9e443f0cab693496fc529f55ae6eb01 Mon Sep 17 00:00:00 2001
|
||||
From: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
Date: Wed, 3 Apr 2019 17:14:03 +0200
|
||||
Subject: [PATCH] clk: sunxi-ng: h6: Allow video & vpu clocks to change parent
|
||||
rate
|
||||
|
||||
Video related clocks need to set rate as close as possible to the
|
||||
requested one, so they should be able to change parent clock rate.
|
||||
|
||||
When processing 4K video, VPU clock has to be set to higher rate than it
|
||||
is default parent rate. Because of that, VPU clock should be able to
|
||||
change parent clock rate.
|
||||
|
||||
Add CLK_SET_RATE_PARENT flag to tcon-lcd0, tcon-tv0 and ve.
|
||||
|
||||
Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com>
|
||||
---
|
||||
drivers/clk/sunxi-ng/ccu-sun50i-h6.c | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/drivers/clk/sunxi-ng/ccu-sun50i-h6.c b/drivers/clk/sunxi-ng/ccu-sun50i-h6.c
|
||||
index 33980067b06e..3c32d7798f27 100644
|
||||
--- a/drivers/clk/sunxi-ng/ccu-sun50i-h6.c
|
||||
+++ b/drivers/clk/sunxi-ng/ccu-sun50i-h6.c
|
||||
@@ -311,7 +311,7 @@ static SUNXI_CCU_M_WITH_MUX_GATE(ve_clk, "ve", ve_parents, 0x690,
|
||||
0, 3, /* M */
|
||||
24, 1, /* mux */
|
||||
BIT(31), /* gate */
|
||||
- 0);
|
||||
+ CLK_SET_RATE_PARENT);
|
||||
|
||||
static SUNXI_CCU_GATE(bus_ve_clk, "bus-ve", "psi-ahb1-ahb2",
|
||||
0x69c, BIT(0), 0);
|
||||
@@ -691,7 +691,7 @@ static SUNXI_CCU_MUX_WITH_GATE(tcon_lcd0_clk, "tcon-lcd0",
|
||||
tcon_lcd0_parents, 0xb60,
|
||||
24, 3, /* mux */
|
||||
BIT(31), /* gate */
|
||||
- 0);
|
||||
+ CLK_SET_RATE_PARENT);
|
||||
|
||||
static SUNXI_CCU_GATE(bus_tcon_lcd0_clk, "bus-tcon-lcd0", "ahb3",
|
||||
0xb7c, BIT(0), 0);
|
||||
@@ -706,7 +706,7 @@ static SUNXI_CCU_MP_WITH_MUX_GATE(tcon_tv0_clk, "tcon-tv0",
|
||||
8, 2, /* P */
|
||||
24, 3, /* mux */
|
||||
BIT(31), /* gate */
|
||||
- 0);
|
||||
+ CLK_SET_RATE_PARENT);
|
||||
|
||||
static SUNXI_CCU_GATE(bus_tcon_tv0_clk, "bus-tcon-tv0", "ahb3",
|
||||
0xb9c, BIT(0), 0);
|
||||
--
|
||||
2.21.0
|
||||
|
File diff suppressed because it is too large
Load Diff
2765
projects/Allwinner/patches/linux/0003-backport-from-5.3.patch
Normal file
2765
projects/Allwinner/patches/linux/0003-backport-from-5.3.patch
Normal file
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
@ -1,8 +1,85 @@
|
||||
From bf21ad0889bdcc1dc12fe5a024fd7df7ad2c4310 Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Karlman <jonas@kwiboo.se>
|
||||
Date: Tue, 26 Feb 2019 20:45:14 +0000
|
||||
Subject: [PATCH 1/2] WIP: dw-hdmi-cec: sleep 100ms on error
|
||||
|
||||
---
|
||||
drivers/gpu/drm/bridge/synopsys/dw-hdmi-cec.c | 18 ++++++++++++++++--
|
||||
1 file changed, 16 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-cec.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-cec.c
|
||||
index 6c323510f128..b5a1a85c8700 100644
|
||||
--- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-cec.c
|
||||
+++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-cec.c
|
||||
@@ -7,6 +7,7 @@
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
+#include <linux/delay.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/module.h>
|
||||
@@ -132,8 +133,15 @@ static irqreturn_t dw_hdmi_cec_hardirq(int irq, void *data)
|
||||
|
||||
dw_hdmi_write(cec, stat, HDMI_IH_CEC_STAT0);
|
||||
|
||||
- if (stat & CEC_STAT_ERROR_INIT) {
|
||||
- cec->tx_status = CEC_TX_STATUS_ERROR;
|
||||
+ /* Status with both done and error_initiator bits have been seen
|
||||
+ * on Rockchip RK3328 devices, transmit attempt seems to have failed
|
||||
+ * when this happens, report as low drive and block cec-framework
|
||||
+ * 100ms before core retransmits the failed message, this seems to
|
||||
+ * mitigate the issue with failed transmit attempts.
|
||||
+ */
|
||||
+ if ((stat & (CEC_STAT_DONE|CEC_STAT_ERROR_INIT)) == (CEC_STAT_DONE|CEC_STAT_ERROR_INIT)) {
|
||||
+ pr_info("dw_hdmi_cec_hardirq: stat=%02x LOW_DRIVE\n", stat);
|
||||
+ cec->tx_status = CEC_TX_STATUS_LOW_DRIVE;
|
||||
cec->tx_done = true;
|
||||
ret = IRQ_WAKE_THREAD;
|
||||
} else if (stat & CEC_STAT_DONE) {
|
||||
@@ -144,6 +152,10 @@ static irqreturn_t dw_hdmi_cec_hardirq(int irq, void *data)
|
||||
cec->tx_status = CEC_TX_STATUS_NACK;
|
||||
cec->tx_done = true;
|
||||
ret = IRQ_WAKE_THREAD;
|
||||
+ } else if (stat & CEC_STAT_ERROR_INIT) {
|
||||
+ cec->tx_status = CEC_TX_STATUS_ERROR;
|
||||
+ cec->tx_done = true;
|
||||
+ ret = IRQ_WAKE_THREAD;
|
||||
}
|
||||
|
||||
if (stat & CEC_STAT_EOM) {
|
||||
@@ -176,6 +188,8 @@ static irqreturn_t dw_hdmi_cec_thread(int irq, void *data)
|
||||
|
||||
if (cec->tx_done) {
|
||||
cec->tx_done = false;
|
||||
+ if (cec->tx_status == CEC_TX_STATUS_LOW_DRIVE)
|
||||
+ msleep(100);
|
||||
cec_transmit_attempt_done(adap, cec->tx_status);
|
||||
}
|
||||
if (cec->rx_done) {
|
||||
--
|
||||
2.21.0
|
||||
|
||||
|
||||
From 12f1abe2b5cee6575c6dd9cd29b17b589f044b80 Mon Sep 17 00:00:00 2001
|
||||
From: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
Date: Sat, 25 May 2019 12:03:39 +0200
|
||||
Subject: [PATCH 2/2] WIP: sun8i-hdmi CEC improvements
|
||||
|
||||
Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
---
|
||||
drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 2 +-
|
||||
drivers/gpu/drm/sun4i/Kconfig | 10 +++
|
||||
drivers/gpu/drm/sun4i/sun8i_dw_hdmi.h | 11 +++
|
||||
drivers/gpu/drm/sun4i/sun8i_hdmi_phy.c | 83 ++++++++++++++++++++++-
|
||||
include/drm/bridge/dw_hdmi.h | 2 +
|
||||
5 files changed, 105 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
||||
index a63e5f0dae56..fdda26f8b056 100644
|
||||
index 09fdc9f87651..f359c4c3f1d1 100644
|
||||
--- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
||||
+++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
||||
@@ -2634,7 +2634,7 @@ __dw_hdmi_probe(struct platform_device *pdev,
|
||||
@@ -2713,7 +2713,7 @@ __dw_hdmi_probe(struct platform_device *pdev,
|
||||
hdmi->audio = platform_device_register_full(&pdevinfo);
|
||||
}
|
||||
|
||||
@ -33,7 +110,7 @@ index 1dbbc3a1b763..7149c72e44c8 100644
|
||||
tristate "Support for Allwinner Display Engine 2.0 Mixer"
|
||||
default MACH_SUN8I
|
||||
diff --git a/drivers/gpu/drm/sun4i/sun8i_dw_hdmi.h b/drivers/gpu/drm/sun4i/sun8i_dw_hdmi.h
|
||||
index 720c5aa8adc1..82dd84094638 100644
|
||||
index 720c5aa8adc1..49ca001923e3 100644
|
||||
--- a/drivers/gpu/drm/sun4i/sun8i_dw_hdmi.h
|
||||
+++ b/drivers/gpu/drm/sun4i/sun8i_dw_hdmi.h
|
||||
@@ -12,6 +12,7 @@
|
||||
@ -71,15 +148,15 @@ index 720c5aa8adc1..82dd84094638 100644
|
||||
|
||||
struct sun8i_hdmi_phy {
|
||||
+ struct cec_adapter *cec_adapter;
|
||||
+ struct cec_notifier *cec_notifier;
|
||||
+ struct cec_notifier *cec_notifier;
|
||||
struct clk *clk_bus;
|
||||
struct clk *clk_mod;
|
||||
struct clk *clk_phy;
|
||||
diff --git a/drivers/gpu/drm/sun4i/sun8i_hdmi_phy.c b/drivers/gpu/drm/sun4i/sun8i_hdmi_phy.c
|
||||
index 66ea3a902e36..70e291353569 100644
|
||||
index 43643ad31730..d840bc07cba6 100644
|
||||
--- a/drivers/gpu/drm/sun4i/sun8i_hdmi_phy.c
|
||||
+++ b/drivers/gpu/drm/sun4i/sun8i_hdmi_phy.c
|
||||
@@ -503,8 +503,9 @@ static void sun8i_hdmi_phy_init_h3(struct sun8i_hdmi_phy *phy)
|
||||
@@ -504,8 +504,9 @@ static void sun8i_hdmi_phy_init_h3(struct sun8i_hdmi_phy *phy)
|
||||
regmap_update_bits(phy->regs, SUN8I_HDMI_PHY_PLL_CFG1_REG,
|
||||
SUN8I_HDMI_PHY_PLL_CFG1_CKIN_SEL_MSK, 0);
|
||||
|
||||
@ -91,7 +168,7 @@ index 66ea3a902e36..70e291353569 100644
|
||||
|
||||
/* read calibration data */
|
||||
regmap_read(phy->regs, SUN8I_HDMI_PHY_ANA_STS_REG, &val);
|
||||
@@ -530,8 +531,49 @@ void sun8i_hdmi_phy_set_ops(struct sun8i_hdmi_phy *phy,
|
||||
@@ -531,8 +532,49 @@ void sun8i_hdmi_phy_set_ops(struct sun8i_hdmi_phy *phy,
|
||||
plat_data->cur_ctr = variant->cur_ctr;
|
||||
plat_data->phy_config = variant->phy_cfg;
|
||||
}
|
||||
@ -141,7 +218,7 @@ index 66ea3a902e36..70e291353569 100644
|
||||
static struct regmap_config sun8i_hdmi_phy_regmap_config = {
|
||||
.reg_bits = 32,
|
||||
.val_bits = 32,
|
||||
@@ -548,6 +590,7 @@ static const struct sun8i_hdmi_phy_variant sun8i_a83t_hdmi_phy = {
|
||||
@@ -549,6 +591,7 @@ static const struct sun8i_hdmi_phy_variant sun8i_a83t_hdmi_phy = {
|
||||
};
|
||||
|
||||
static const struct sun8i_hdmi_phy_variant sun8i_h3_hdmi_phy = {
|
||||
@ -149,7 +226,7 @@ index 66ea3a902e36..70e291353569 100644
|
||||
.has_phy_clk = true,
|
||||
.is_custom_phy = true,
|
||||
.phy_init = &sun8i_hdmi_phy_init_h3,
|
||||
@@ -556,6 +599,7 @@ static const struct sun8i_hdmi_phy_variant sun8i_h3_hdmi_phy = {
|
||||
@@ -557,6 +600,7 @@ static const struct sun8i_hdmi_phy_variant sun8i_h3_hdmi_phy = {
|
||||
};
|
||||
|
||||
static const struct sun8i_hdmi_phy_variant sun8i_r40_hdmi_phy = {
|
||||
@ -157,7 +234,7 @@ index 66ea3a902e36..70e291353569 100644
|
||||
.has_phy_clk = true,
|
||||
.has_second_pll = true,
|
||||
.is_custom_phy = true,
|
||||
@@ -565,6 +609,7 @@ static const struct sun8i_hdmi_phy_variant sun8i_r40_hdmi_phy = {
|
||||
@@ -566,6 +610,7 @@ static const struct sun8i_hdmi_phy_variant sun8i_r40_hdmi_phy = {
|
||||
};
|
||||
|
||||
static const struct sun8i_hdmi_phy_variant sun50i_a64_hdmi_phy = {
|
||||
@ -165,7 +242,7 @@ index 66ea3a902e36..70e291353569 100644
|
||||
.has_phy_clk = true,
|
||||
.is_custom_phy = true,
|
||||
.phy_init = &sun8i_hdmi_phy_init_h3,
|
||||
@@ -708,10 +753,40 @@ int sun8i_hdmi_phy_probe(struct sun8i_dw_hdmi *hdmi, struct device_node *node)
|
||||
@@ -711,10 +756,40 @@ int sun8i_hdmi_phy_probe(struct sun8i_dw_hdmi *hdmi, struct device_node *node)
|
||||
clk_prepare_enable(phy->clk_phy);
|
||||
}
|
||||
|
||||
@ -204,9 +281,9 @@ index 66ea3a902e36..70e291353569 100644
|
||||
+err_disable_clk_phy:
|
||||
+ clk_disable_unprepare(phy->clk_phy);
|
||||
err_disable_clk_mod:
|
||||
clk_disable_unprepare(phy->clk_mod);
|
||||
clk_disable_unprepare(phy->clk_mod);
|
||||
err_disable_clk_bus:
|
||||
@@ -736,6 +811,10 @@ void sun8i_hdmi_phy_remove(struct sun8i_dw_hdmi *hdmi)
|
||||
@@ -739,6 +814,10 @@ void sun8i_hdmi_phy_remove(struct sun8i_dw_hdmi *hdmi)
|
||||
{
|
||||
struct sun8i_hdmi_phy *phy = hdmi->phy;
|
||||
|
||||
@ -218,7 +295,7 @@ index 66ea3a902e36..70e291353569 100644
|
||||
clk_disable_unprepare(phy->clk_bus);
|
||||
clk_disable_unprepare(phy->clk_phy);
|
||||
diff --git a/include/drm/bridge/dw_hdmi.h b/include/drm/bridge/dw_hdmi.h
|
||||
index 66e70770cce5..764b8bcfa62c 100644
|
||||
index 323febe7f102..cec73761856d 100644
|
||||
--- a/include/drm/bridge/dw_hdmi.h
|
||||
+++ b/include/drm/bridge/dw_hdmi.h
|
||||
@@ -144,6 +144,8 @@ struct dw_hdmi_plat_data {
|
||||
@ -230,3 +307,6 @@ index 66e70770cce5..764b8bcfa62c 100644
|
||||
};
|
||||
|
||||
struct dw_hdmi *dw_hdmi_probe(struct platform_device *pdev,
|
||||
--
|
||||
2.21.0
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user