diff options
Diffstat (limited to 'gnu/packages/patches')
-rw-r--r-- | gnu/packages/patches/circos-remove-findbin.patch | 544 | ||||
-rw-r--r-- | gnu/packages/patches/gnupg-default-pinentry.patch | 15 | ||||
-rw-r--r-- | gnu/packages/patches/icu4c-CVE-2020-10531.patch | 127 | ||||
-rw-r--r-- | gnu/packages/patches/linux-libre-support-for-Pinebook-Pro.patch | 1135 |
4 files changed, 1821 insertions, 0 deletions
diff --git a/gnu/packages/patches/circos-remove-findbin.patch b/gnu/packages/patches/circos-remove-findbin.patch new file mode 100644 index 0000000000..5675172e5d --- /dev/null +++ b/gnu/packages/patches/circos-remove-findbin.patch @@ -0,0 +1,544 @@ +This patch was created by Roel Janssen <roel@gnu.org>. + +Circos uses paths relative to the "circos" script to find its Perl modules. +This patch removes that mechanism, and instead expects the 'Circos' modules +to be available in the global Perl path. + +diff -crB circos-0.69-6/bin/circos circos-0.69-6-new/bin/circos +*** circos-0.69-6/bin/circos 2016-02-19 01:42:59.000000000 +0100 +--- circos-0.69-6-new/bin/circos 2018-01-12 09:59:25.662731269 +0100 +*************** +*** 474,486 **** + + use strict; + use warnings; +- use FindBin; + use Getopt::Long qw(:config pass_through posix_default auto_abbrev); + use Pod::Usage; + +- use lib "$FindBin::RealBin"; +- use lib "$FindBin::RealBin/../lib"; +- use lib "$FindBin::RealBin/lib"; + use Circos; + + use Cwd; +--- 474,482 ---- +diff -crB circos-0.69-6/lib/Circos/Colors.pm circos-0.69-6-new/lib/Circos/Colors.pm +*** circos-0.69-6/lib/Circos/Colors.pm 2015-03-17 01:25:43.000000000 +0100 +--- circos-0.69-6-new/lib/Circos/Colors.pm 2018-01-12 10:10:39.174797379 +0100 +*************** +*** 49,55 **** + + use Carp qw( carp confess croak ); + use Digest::MD5 qw(md5_hex); +- use FindBin; + use File::Basename; + use File::Spec::Functions; + use File::Temp qw(tempdir); +--- 49,54 ---- +*************** +*** 65,74 **** + #use Time::HiRes qw(gettimeofday tv_interval); + #use List::Util qw( max min ); + +- use lib "$FindBin::RealBin"; +- use lib "$FindBin::RealBin/../lib"; +- use lib "$FindBin::RealBin/lib"; +- + use POSIX qw(pow); + + use Circos::Configuration; +--- 64,69 ---- +diff -crB circos-0.69-6/lib/Circos/Configuration.pm circos-0.69-6-new/lib/Circos/Configuration.pm +*** circos-0.69-6/lib/Circos/Configuration.pm 2015-03-17 22:11:01.000000000 +0100 +--- circos-0.69-6-new/lib/Circos/Configuration.pm 2018-01-12 10:11:41.064008273 +0100 +*************** +*** 59,68 **** + use Params::Validate qw(:all); + use List::MoreUtils qw(uniq); + +- use lib "$FindBin::RealBin"; +- use lib "$FindBin::RealBin/../lib"; +- use lib "$FindBin::RealBin/lib"; +- + use Circos::Constants; + use Circos::Debug; + use Circos::Utils; +--- 59,64 ---- +diff -crB circos-0.69-6/lib/Circos/DataPoint.pm circos-0.69-6-new/lib/Circos/DataPoint.pm +*** circos-0.69-6/lib/Circos/DataPoint.pm 2014-05-12 18:20:19.000000000 +0200 +--- circos-0.69-6-new/lib/Circos/DataPoint.pm 2018-01-12 10:11:54.888270731 +0100 +*************** +*** 38,51 **** + + use Carp qw( carp confess croak ); + use Data::Dumper; +- use FindBin; + use GD::Image; + use Params::Validate qw(:all); + +- use lib "$FindBin::RealBin"; +- use lib "$FindBin::RealBin/../lib"; +- use lib "$FindBin::RealBin/lib"; +- + use Circos::Configuration; # qw(%CONF $DIMS); + use Circos::Constants; + use Circos::Debug; +--- 38,46 ---- +diff -crB circos-0.69-6/lib/Circos/Debug.pm circos-0.69-6-new/lib/Circos/Debug.pm +*** circos-0.69-6/lib/Circos/Debug.pm 2015-03-24 01:26:13.000000000 +0100 +--- circos-0.69-6-new/lib/Circos/Debug.pm 2018-01-12 10:12:07.192502006 +0100 +*************** +*** 63,75 **** + + use Carp qw( carp confess croak ); + use Data::Dumper; +- use FindBin; + use Memoize; + use List::MoreUtils qw(uniq); + use Time::HiRes qw(gettimeofday tv_interval); +- use lib "$FindBin::RealBin"; +- use lib "$FindBin::RealBin/../lib"; +- use lib "$FindBin::RealBin/lib"; + + use Circos::Constants; + +--- 63,71 ---- +diff -crB circos-0.69-6/lib/Circos/Division.pm circos-0.69-6-new/lib/Circos/Division.pm +*** circos-0.69-6/lib/Circos/Division.pm 2015-11-17 00:55:58.000000000 +0100 +--- circos-0.69-6-new/lib/Circos/Division.pm 2018-01-12 10:12:21.544769084 +0100 +*************** +*** 37,52 **** + our @EXPORT = qw(); + + use Carp qw( carp confess croak ); +- use FindBin; + use GD; + use Math::Round; + use List::MoreUtils qw(uniq); + use Params::Validate qw(:all); + +- use lib "$FindBin::RealBin"; +- use lib "$FindBin::RealBin/../lib"; +- use lib "$FindBin::RealBin/lib"; +- + use Circos::Configuration; + use Circos::Constants; + use Circos::Debug; +--- 37,47 ---- +diff -crB circos-0.69-6/lib/Circos/Error.pm circos-0.69-6-new/lib/Circos/Error.pm +*** circos-0.69-6/lib/Circos/Error.pm 2015-03-17 22:46:36.000000000 +0100 +--- circos-0.69-6-new/lib/Circos/Error.pm 2018-01-12 10:12:32.472970548 +0100 +*************** +*** 44,53 **** + use Params::Validate; + use Text::Format; + +- use lib "$FindBin::RealBin"; +- use lib "$FindBin::RealBin/../lib"; +- use lib "$FindBin::RealBin/lib"; +- + use Circos::Constants; + use Circos::Debug; + use Circos::Utils; +--- 44,49 ---- +diff -crB circos-0.69-6/lib/Circos/Expression.pm circos-0.69-6-new/lib/Circos/Expression.pm +*** circos-0.69-6/lib/Circos/Expression.pm 2015-11-30 23:49:36.000000000 +0100 +--- circos-0.69-6-new/lib/Circos/Expression.pm 2018-01-12 10:12:41.953144015 +0100 +*************** +*** 39,55 **** + + use Carp qw( carp confess croak ); + use Data::Dumper; +- use FindBin; + use Params::Validate qw(:all); + use Math::Round; + use Math::VecStat qw(average); + use List::Util qw(min max); + use Text::Balanced qw(extract_bracketed); + +- use lib "$FindBin::RealBin"; +- use lib "$FindBin::RealBin/../lib"; +- use lib "$FindBin::RealBin/lib"; +- + use Circos::Configuration; + use Circos::Constants; + use Circos::Debug; +--- 39,50 ---- +diff -crB circos-0.69-6/lib/Circos/Font.pm circos-0.69-6-new/lib/Circos/Font.pm +*** circos-0.69-6/lib/Circos/Font.pm 2014-05-12 18:20:19.000000000 +0200 +--- circos-0.69-6-new/lib/Circos/Font.pm 2018-01-12 10:12:51.657320357 +0100 +*************** +*** 45,59 **** + ); + + use Carp qw( carp confess croak ); +- use FindBin; + use GD::Image; + use Font::TTF::Font; + use Params::Validate qw(:all); + +- use lib "$FindBin::RealBin"; +- use lib "$FindBin::RealBin/../lib"; +- use lib "$FindBin::RealBin/lib"; +- + use Circos::Configuration; # qw(%CONF $DIMS fetch_conf); + use Circos::Constants; + use Circos::Colors; +--- 45,54 ---- +diff -crB circos-0.69-6/lib/Circos/Geometry.pm circos-0.69-6-new/lib/Circos/Geometry.pm +*** circos-0.69-6/lib/Circos/Geometry.pm 2014-05-12 18:20:19.000000000 +0200 +--- circos-0.69-6-new/lib/Circos/Geometry.pm 2018-01-12 10:12:58.961452282 +0100 +*************** +*** 41,54 **** + ); + + use Carp qw( carp confess croak ); +- use FindBin; + use GD::Image; + use Params::Validate qw(:all); + +- use lib "$FindBin::RealBin"; +- use lib "$FindBin::RealBin/../lib"; +- use lib "$FindBin::RealBin/lib"; +- + use Circos::Configuration; # qw(%CONF $DIMS fetch_conf); + use Circos::Constants; + use Circos::Debug; +--- 41,49 ---- +diff -crB circos-0.69-6/lib/Circos/Heatmap.pm circos-0.69-6-new/lib/Circos/Heatmap.pm +*** circos-0.69-6/lib/Circos/Heatmap.pm 2016-03-30 22:08:12.000000000 +0200 +--- circos-0.69-6-new/lib/Circos/Heatmap.pm 2018-01-12 10:13:09.953649538 +0100 +*************** +*** 24,40 **** + use Carp qw( carp confess croak ); + use Clone; + use Data::Dumper; +- use FindBin; + use GD::Image; + use Math::VecStat qw(min max); + use Params::Validate qw(:all); + use List::MoreUtils qw(uniq); + use Regexp::Common qw(number); + +- use lib "$FindBin::RealBin"; +- use lib "$FindBin::RealBin/../lib"; +- use lib "$FindBin::RealBin/lib"; +- + use Circos::Configuration; + use Circos::Constants; + use Circos::Colors; +--- 24,35 ---- +diff -crB circos-0.69-6/lib/Circos/Ideogram.pm circos-0.69-6-new/lib/Circos/Ideogram.pm +*** circos-0.69-6/lib/Circos/Ideogram.pm 2015-11-17 01:18:53.000000000 +0100 +--- circos-0.69-6-new/lib/Circos/Ideogram.pm 2018-01-12 10:13:22.045864798 +0100 +*************** +*** 40,46 **** + + use Carp qw( carp confess croak ); + use Cwd; +- use FindBin; + use File::Spec::Functions; + use Math::Round; + use Math::VecStat qw(max); +--- 40,45 ---- +*************** +*** 50,59 **** + + use POSIX qw(floor ceil); + +- use lib "$FindBin::RealBin"; +- use lib "$FindBin::RealBin/../lib"; +- use lib "$FindBin::RealBin/lib"; +- + use Circos::Configuration; + use Circos::Constants; + use Circos::Debug; +--- 49,54 ---- +diff -crB circos-0.69-6/lib/Circos/Image.pm circos-0.69-6-new/lib/Circos/Image.pm +*** circos-0.69-6/lib/Circos/Image.pm 2014-05-12 18:20:19.000000000 +0200 +--- circos-0.69-6-new/lib/Circos/Image.pm 2018-01-12 10:13:31.094024696 +0100 +*************** +*** 45,58 **** + ); + + use Carp qw( carp confess croak ); +- use FindBin; + use GD::Image; + use Params::Validate qw(:all); + +- use lib "$FindBin::RealBin"; +- use lib "$FindBin::RealBin/../lib"; +- use lib "$FindBin::RealBin/lib"; +- + use Circos::Configuration; + use Circos::Colors; + use Circos::Constants; +--- 45,53 ---- +diff -crB circos-0.69-6/lib/Circos/IO.pm circos-0.69-6-new/lib/Circos/IO.pm +*** circos-0.69-6/lib/Circos/IO.pm 2015-12-03 05:51:11.000000000 +0100 +--- circos-0.69-6-new/lib/Circos/IO.pm 2018-01-12 10:13:41.686210640 +0100 +*************** +*** 39,45 **** + use Carp qw( carp confess croak ); + use Storable qw(dclone); + use Cwd; +- use FindBin; + use Data::Dumper; + use File::Spec::Functions; + use Math::Round; +--- 39,44 ---- +*************** +*** 49,58 **** + + use POSIX qw(floor ceil); + +- use lib "$FindBin::RealBin"; +- use lib "$FindBin::RealBin/../lib"; +- use lib "$FindBin::RealBin/lib"; +- + use Circos::Constants; + use Circos::Colors; + use Circos::Configuration; +--- 48,53 ---- +diff -crB circos-0.69-6/lib/Circos/Karyotype.pm circos-0.69-6-new/lib/Circos/Karyotype.pm +*** circos-0.69-6/lib/Circos/Karyotype.pm 2014-09-09 00:15:58.000000000 +0200 +--- circos-0.69-6-new/lib/Circos/Karyotype.pm 2018-01-12 10:13:53.318413330 +0100 +*************** +*** 38,44 **** + + use Carp qw( carp confess croak ); + use Cwd; +- use FindBin; + use Math::Round; + use Math::VecStat qw(max); + use Params::Validate qw(:all); +--- 38,43 ---- +*************** +*** 48,57 **** + #use Regexp::Common qw(number); + #use POSIX qw(floor ceil); + +- use lib "$FindBin::RealBin"; +- use lib "$FindBin::RealBin/../lib"; +- use lib "$FindBin::RealBin/lib"; +- + use Circos::Configuration; + use Circos::Constants; + use Circos::Debug; +--- 47,52 ---- +diff -crB circos-0.69-6/lib/Circos/PNG.pm circos-0.69-6-new/lib/Circos/PNG.pm +*** circos-0.69-6/lib/Circos/PNG.pm 2014-09-17 05:33:06.000000000 +0200 +--- circos-0.69-6-new/lib/Circos/PNG.pm 2018-01-12 10:14:31.011059637 +0100 +*************** +*** 37,51 **** + our @EXPORT = qw(); + + use Carp qw( carp confess croak ); +- use FindBin; + use GD; + use Math::VecStat qw(min max); + use Params::Validate qw(:all); + +- use lib "$FindBin::RealBin"; +- use lib "$FindBin::RealBin/../lib"; +- use lib "$FindBin::RealBin/lib"; +- + use Circos::Configuration; + use Circos::Colors; + use Circos::Constants; +--- 37,46 ---- +diff -crB circos-0.69-6/lib/Circos/Rule.pm circos-0.69-6-new/lib/Circos/Rule.pm +*** circos-0.69-6/lib/Circos/Rule.pm 2014-10-02 01:14:25.000000000 +0200 +--- circos-0.69-6-new/lib/Circos/Rule.pm 2018-01-12 10:14:38.195181067 +0100 +*************** +*** 38,51 **** + + use Carp qw( carp confess croak ); + use Data::Dumper; +- use FindBin; + use GD::Image; + use Params::Validate qw(:all); + +- use lib "$FindBin::RealBin"; +- use lib "$FindBin::RealBin/../lib"; +- use lib "$FindBin::RealBin/lib"; +- + use Circos::Configuration; # qw(%CONF $DIMS); + use Circos::Constants; + use Circos::DataPoint; +--- 38,46 ---- +diff -crB circos-0.69-6/lib/Circos/SVG.pm circos-0.69-6-new/lib/Circos/SVG.pm +*** circos-0.69-6/lib/Circos/SVG.pm 2015-11-30 23:23:52.000000000 +0100 +--- circos-0.69-6-new/lib/Circos/SVG.pm 2018-01-12 10:14:47.803342631 +0100 +*************** +*** 26,39 **** + ); + + use Carp qw( carp confess croak ); +- use FindBin; + use GD::Image; + use Params::Validate qw(:all); + +- use lib "$FindBin::RealBin"; +- use lib "$FindBin::RealBin/../lib"; +- use lib "$FindBin::RealBin/lib"; +- + use Circos::Configuration; + use Circos::Colors; + use Circos::Constants; +--- 26,34 ---- +diff -crB circos-0.69-6/lib/Circos/Text.pm circos-0.69-6-new/lib/Circos/Text.pm +*** circos-0.69-6/lib/Circos/Text.pm 2014-05-12 18:20:19.000000000 +0200 +--- circos-0.69-6-new/lib/Circos/Text.pm 2018-01-12 10:14:57.083497772 +0100 +*************** +*** 42,55 **** + ); + + use Carp qw( carp confess croak ); +- use FindBin; + use GD::Image; + use Params::Validate qw(:all); + +- use lib "$FindBin::RealBin"; +- use lib "$FindBin::RealBin/../lib"; +- use lib "$FindBin::RealBin/lib"; +- + use Circos::Configuration; # qw(%CONF $DIMS); + use Circos::Constants; + use Circos::Colors; +--- 42,50 ---- +diff -crB circos-0.69-6/lib/Circos/Track/Highlight.pm circos-0.69-6-new/lib/Circos/Track/Highlight.pm +*** circos-0.69-6/lib/Circos/Track/Highlight.pm 2014-10-01 00:43:27.000000000 +0200 +--- circos-0.69-6-new/lib/Circos/Track/Highlight.pm 2018-01-12 10:15:06.795659206 +0100 +*************** +*** 37,50 **** + our @EXPORT = qw(); + + use Carp qw( carp confess croak ); +- use FindBin; + use GD::Image; + use Params::Validate qw(:all); + +- use lib "$FindBin::RealBin"; +- use lib "$FindBin::RealBin/../lib"; +- use lib "$FindBin::RealBin/lib"; +- + use Circos::Configuration; # qw(%CONF $DIMS); + use Circos::Constants; + #use Circos::Colors; +--- 37,45 ---- +diff -crB circos-0.69-6/lib/Circos/Track/Link.pm circos-0.69-6-new/lib/Circos/Track/Link.pm +*** circos-0.69-6/lib/Circos/Track/Link.pm 2014-05-12 18:20:19.000000000 +0200 +--- circos-0.69-6-new/lib/Circos/Track/Link.pm 2018-01-12 10:15:17.387834198 +0100 +*************** +*** 37,50 **** + our @EXPORT = qw(); + + use Carp qw( carp confess croak ); +- use FindBin; + use GD::Image; + use Params::Validate qw(:all); + +- use lib "$FindBin::RealBin"; +- use lib "$FindBin::RealBin/../lib"; +- use lib "$FindBin::RealBin/lib"; +- + use Circos::Configuration; # qw(%CONF $DIMS); + use Circos::Constants; + #use Circos::Colors; +--- 37,45 ---- +diff -crB circos-0.69-6/lib/Circos/Track.pm circos-0.69-6-new/lib/Circos/Track.pm +*** circos-0.69-6/lib/Circos/Track.pm 2014-09-16 05:31:46.000000000 +0200 +--- circos-0.69-6-new/lib/Circos/Track.pm 2018-01-12 10:15:29.628035063 +0100 +*************** +*** 41,56 **** + + use Carp qw( carp confess croak ); + use Data::Dumper; +- use FindBin; + use GD::Image; + use List::MoreUtils qw(uniq); + use Math::VecStat qw(min max); + use Params::Validate qw(:all); + use Regexp::Common; + use Statistics::Basic qw(average stddev); +- use lib "$FindBin::RealBin"; +- use lib "$FindBin::RealBin/../lib"; +- use lib "$FindBin::RealBin/lib"; + + use Circos::Configuration; # qw(%CONF $DIMS); + use Circos::Constants; +--- 41,52 ---- +diff -crB circos-0.69-6/lib/Circos/Unit.pm circos-0.69-6-new/lib/Circos/Unit.pm +*** circos-0.69-6/lib/Circos/Unit.pm 2014-05-12 18:20:19.000000000 +0200 +--- circos-0.69-6-new/lib/Circos/Unit.pm 2018-01-12 10:15:37.892169871 +0100 +*************** +*** 46,60 **** + ); + + use Carp qw( carp confess croak ); +- use FindBin; + use Data::Dumper; + use Params::Validate qw(:all); + use Regexp::Common qw(number); + +- use lib "$FindBin::RealBin"; +- use lib "$FindBin::RealBin/../lib"; +- use lib "$FindBin::RealBin/lib"; +- + use Circos::Configuration qw(%CONF $DIMS); + use Circos::Constants; + use Circos::Debug; +--- 46,55 ---- +diff -crB circos-0.69-6/lib/Circos/URL.pm circos-0.69-6-new/lib/Circos/URL.pm +*** circos-0.69-6/lib/Circos/URL.pm 2014-05-12 18:20:19.000000000 +0200 +--- circos-0.69-6-new/lib/Circos/URL.pm 2018-01-12 10:15:46.092303006 +0100 +*************** +*** 39,52 **** + ); + + use Carp qw( carp confess croak ); +- use FindBin; + use GD; + use Params::Validate qw(:all); + +- use lib "$FindBin::RealBin"; +- use lib "$FindBin::RealBin/../lib"; +- use lib "$FindBin::RealBin/lib"; +- + use Circos::Configuration; + #use Circos::Colors; + use Circos::Constants; +--- 39,47 ---- +diff -crB circos-0.69-6/lib/Circos/Utils.pm circos-0.69-6-new/lib/Circos/Utils.pm +*** circos-0.69-6/lib/Circos/Utils.pm 2014-10-01 21:36:19.000000000 +0200 +--- circos-0.69-6-new/lib/Circos/Utils.pm 2018-01-12 10:16:11.576712858 +0100 +*************** +*** 105,114 **** + + use POSIX qw(floor ceil); + +- use lib "$FindBin::RealBin"; +- use lib "$FindBin::RealBin/../lib"; +- use lib "$FindBin::RealBin/lib"; +- + use Circos::Constants; + use Circos::Debug; + use Circos::Error; +--- 105,110 ---- +diff -crB circos-0.69-6/lib/Circos.pm circos-0.69-6-new/lib/Circos.pm +*** circos-0.69-6/lib/Circos.pm 2016-06-25 00:19:27.000000000 +0200 +--- circos-0.69-6-new/lib/Circos.pm 2018-01-12 10:16:35.801097176 +0100 +*************** +*** 49,57 **** + + use strict; + use warnings; +- use lib "$FindBin::RealBin"; +- use lib "$FindBin::RealBin/../lib"; +- use lib "$FindBin::RealBin/lib"; + + BEGIN { + require Circos::Modules; +--- 49,54 ---- diff --git a/gnu/packages/patches/gnupg-default-pinentry.patch b/gnu/packages/patches/gnupg-default-pinentry.patch new file mode 100644 index 0000000000..272f4b53dc --- /dev/null +++ b/gnu/packages/patches/gnupg-default-pinentry.patch @@ -0,0 +1,15 @@ +Default to the pinentry program installed in ~/.guix-profile. + +diff --git a/common/homedir.c b/common/homedir.c +index e9e75d0..74e0aaf 100644 +--- a/common/homedir.c ++++ b/common/homedir.c +@@ -968,7 +968,7 @@ get_default_pinentry_name (int reset) + } names[] = { + /* The first entry is what we return in case we found no + other pinentry. */ +- { gnupg_bindir, DIRSEP_S "pinentry" EXEEXT_S }, ++ { gnupg_homedir, "/.guix-profile/bin/pinentry" }, + #ifdef HAVE_W32_SYSTEM + /* Try Gpg4win directory (with bin and without.) */ + { w32_rootdir, "\\..\\Gpg4win\\bin\\pinentry.exe" }, diff --git a/gnu/packages/patches/icu4c-CVE-2020-10531.patch b/gnu/packages/patches/icu4c-CVE-2020-10531.patch new file mode 100644 index 0000000000..c2ab923bdc --- /dev/null +++ b/gnu/packages/patches/icu4c-CVE-2020-10531.patch @@ -0,0 +1,127 @@ +Fix CVE-2020-10531: + +https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-10531 + +Patch copied from upstream source repository (changes to the test suite +are commented out): + +https://github.com/unicode-org/icu/commit/b7d08bc04a4296982fcef8b6b8a354a9e4e7afca + +From b7d08bc04a4296982fcef8b6b8a354a9e4e7afca Mon Sep 17 00:00:00 2001 +From: Frank Tang <ftang@chromium.org> +Date: Sat, 1 Feb 2020 02:39:04 +0000 +Subject: [PATCH] ICU-20958 Prevent SEGV_MAPERR in append + +See #971 +--- + icu4c/source/common/unistr.cpp | 6 ++- + icu4c/source/test/intltest/ustrtest.cpp | 62 +++++++++++++++++++++++++ + icu4c/source/test/intltest/ustrtest.h | 1 + + 3 files changed, 68 insertions(+), 1 deletion(-) + +diff --git a/icu4c/source/common/unistr.cpp b/icu4c/source/common/unistr.cpp +index 901bb3358ba..077b4d6ef20 100644 +--- a/icu4c/source/common/unistr.cpp ++++ b/icu4c/source/common/unistr.cpp +@@ -1563,7 +1563,11 @@ UnicodeString::doAppend(const UChar *srcChars, int32_t srcStart, int32_t srcLeng + } + + int32_t oldLength = length(); +- int32_t newLength = oldLength + srcLength; ++ int32_t newLength; ++ if (uprv_add32_overflow(oldLength, srcLength, &newLength)) { ++ setToBogus(); ++ return *this; ++ } + + // Check for append onto ourself + const UChar* oldArray = getArrayStart(); +#diff --git a/icu4c/source/test/intltest/ustrtest.cpp b/icu4c/source/test/intltest/ustrtest.cpp +#index b6515ea813c..ad38bdf53a3 100644 +#--- a/icu4c/source/test/intltest/ustrtest.cpp +#+++ b/icu4c/source/test/intltest/ustrtest.cpp +#@@ -67,6 +67,7 @@ void UnicodeStringTest::runIndexedTest( int32_t index, UBool exec, const char* & +# TESTCASE_AUTO(TestWCharPointers); +# TESTCASE_AUTO(TestNullPointers); +# TESTCASE_AUTO(TestUnicodeStringInsertAppendToSelf); +#+ TESTCASE_AUTO(TestLargeAppend); +# TESTCASE_AUTO_END; +# } +# +#@@ -2310,3 +2311,64 @@ void UnicodeStringTest::TestUnicodeStringInsertAppendToSelf() { +# str.insert(2, sub); +# assertEquals("", u"abbcdcde", str); +# } +#+ +#+void UnicodeStringTest::TestLargeAppend() { +#+ if(quick) return; +#+ +#+ IcuTestErrorCode status(*this, "TestLargeAppend"); +#+ // Make a large UnicodeString +#+ int32_t len = 0xAFFFFFF; +#+ UnicodeString str; +#+ char16_t *buf = str.getBuffer(len); +#+ // A fast way to set buffer to valid Unicode. +#+ // 4E4E is a valid unicode character +#+ uprv_memset(buf, 0x4e, len * 2); +#+ str.releaseBuffer(len); +#+ UnicodeString dest; +#+ // Append it 16 times +#+ // 0xAFFFFFF times 16 is 0xA4FFFFF1, +#+ // which is greater than INT32_MAX, which is 0x7FFFFFFF. +#+ int64_t total = 0; +#+ for (int32_t i = 0; i < 16; i++) { +#+ dest.append(str); +#+ total += len; +#+ if (total <= INT32_MAX) { +#+ assertFalse("dest is not bogus", dest.isBogus()); +#+ } else { +#+ assertTrue("dest should be bogus", dest.isBogus()); +#+ } +#+ } +#+ dest.remove(); +#+ total = 0; +#+ for (int32_t i = 0; i < 16; i++) { +#+ dest.append(str); +#+ total += len; +#+ if (total + len <= INT32_MAX) { +#+ assertFalse("dest is not bogus", dest.isBogus()); +#+ } else if (total <= INT32_MAX) { +#+ // Check that a string of exactly the maximum size works +#+ UnicodeString str2; +#+ int32_t remain = INT32_MAX - total; +#+ char16_t *buf2 = str2.getBuffer(remain); +#+ if (buf2 == nullptr) { +#+ // if somehow memory allocation fail, return the test +#+ return; +#+ } +#+ uprv_memset(buf2, 0x4e, remain * 2); +#+ str2.releaseBuffer(remain); +#+ dest.append(str2); +#+ total += remain; +#+ assertEquals("When a string of exactly the maximum size works", (int64_t)INT32_MAX, total); +#+ assertEquals("When a string of exactly the maximum size works", INT32_MAX, dest.length()); +#+ assertFalse("dest is not bogus", dest.isBogus()); +#+ +#+ // Check that a string size+1 goes bogus +#+ str2.truncate(1); +#+ dest.append(str2); +#+ total++; +#+ assertTrue("dest should be bogus", dest.isBogus()); +#+ } else { +#+ assertTrue("dest should be bogus", dest.isBogus()); +#+ } +#+ } +#+} +#diff --git a/icu4c/source/test/intltest/ustrtest.h b/icu4c/source/test/intltest/ustrtest.h +#index 218befdcc68..4a356a92c7a 100644 +#--- a/icu4c/source/test/intltest/ustrtest.h +#+++ b/icu4c/source/test/intltest/ustrtest.h +#@@ -97,6 +97,7 @@ class UnicodeStringTest: public IntlTest { +# void TestWCharPointers(); +# void TestNullPointers(); +# void TestUnicodeStringInsertAppendToSelf(); +#+ void TestLargeAppend(); +# }; +# +# #endif diff --git a/gnu/packages/patches/linux-libre-support-for-Pinebook-Pro.patch b/gnu/packages/patches/linux-libre-support-for-Pinebook-Pro.patch new file mode 100644 index 0000000000..659e10cba6 --- /dev/null +++ b/gnu/packages/patches/linux-libre-support-for-Pinebook-Pro.patch @@ -0,0 +1,1135 @@ +From d87a8072e8129a579246d8d31a591ca2aec05275 Mon Sep 17 00:00:00 2001 +From: Tobias Schramm <t.schramm@manjaro.org> +Date: Wed, 4 Mar 2020 22:30:23 +0100 +Subject: [PATCH] arm64: dts: rockchip: Add initial support for Pinebook Pro + +This commit adds initial dt support for the rk3399 based Pinebook Pro. + +Signed-off-by: Tobias Schramm <t.schramm@manjaro.org> +Link: https://lore.kernel.org/r/20200304213023.689983-3-t.schramm@manjaro.org +Signed-off-by: Heiko Stuebner <heiko@sntech.de> + +Taken from next-20200313 commit 5a65505a6988443b211d3bf3f5bb5b79907c33b9 +--- + arch/arm64/boot/dts/rockchip/Makefile | 1 + + .../boot/dts/rockchip/rk3399-pinebook-pro.dts | 1096 +++++++++++++++++ + 2 files changed, 1097 insertions(+) + create mode 100644 arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts + +diff --git a/arch/arm64/boot/dts/rockchip/Makefile b/arch/arm64/boot/dts/rockchip/Makefile +index 1f18a9392d15..7de9b61d6415 100644 +--- a/arch/arm64/boot/dts/rockchip/Makefile ++++ b/arch/arm64/boot/dts/rockchip/Makefile +@@ -25,6 +25,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-nanopc-t4.dtb + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-nanopi-m4.dtb + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-nanopi-neo4.dtb + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-orangepi.dtb ++dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-pinebook-pro.dtb + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-puma-haikou.dtb + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-roc-pc.dtb + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-rock-pi-4.dtb +diff --git a/arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts b/arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts +new file mode 100644 +index 000000000000..5ea281b55fe2 +--- /dev/null ++++ b/arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts +@@ -0,0 +1,1096 @@ ++// SPDX-License-Identifier: (GPL-2.0+ OR MIT) ++/* ++ * Copyright (c) 2017 Fuzhou Rockchip Electronics Co., Ltd. ++ * Copyright (c) 2018 Akash Gajjar <Akash_Gajjar@mentor.com> ++ * Copyright (c) 2020 Tobias Schramm <t.schramm@manjaro.org> ++ */ ++ ++/dts-v1/; ++#include <dt-bindings/input/gpio-keys.h> ++#include <dt-bindings/input/linux-event-codes.h> ++#include <dt-bindings/pwm/pwm.h> ++#include <dt-bindings/usb/pd.h> ++#include <dt-bindings/leds/common.h> ++#include "rk3399.dtsi" ++#include "rk3399-opp.dtsi" ++ ++/ { ++ model = "Pine64 Pinebook Pro"; ++ compatible = "pine64,pinebook-pro", "rockchip,rk3399"; ++ ++ chosen { ++ stdout-path = "serial2:1500000n8"; ++ }; ++ ++ backlight: edp-backlight { ++ compatible = "pwm-backlight"; ++ power-supply = <&vcc_12v>; ++ pwms = <&pwm0 0 740740 0>; ++ }; ++ ++ edp_panel: edp-panel { ++ compatible = "boe,nv140fhmn49"; ++ backlight = <&backlight>; ++ enable-gpios = <&gpio1 RK_PA0 GPIO_ACTIVE_HIGH>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&panel_en_gpio>; ++ power-supply = <&vcc3v3_panel>; ++ ++ ports { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ port@0 { ++ reg = <0>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ panel_in_edp: endpoint@0 { ++ reg = <0>; ++ remote-endpoint = <&edp_out_panel>; ++ }; ++ }; ++ }; ++ }; ++ ++ /* ++ * Use separate nodes for gpio-keys to allow for selective deactivation ++ * of wakeup sources via sysfs without disabling the whole key ++ */ ++ gpio-key-lid { ++ compatible = "gpio-keys"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&lidbtn_gpio>; ++ ++ lid { ++ debounce-interval = <20>; ++ gpios = <&gpio1 RK_PA1 GPIO_ACTIVE_LOW>; ++ label = "Lid"; ++ linux,code = <SW_LID>; ++ linux,input-type = <EV_SW>; ++ wakeup-event-action = <EV_ACT_DEASSERTED>; ++ wakeup-source; ++ }; ++ }; ++ ++ gpio-key-power { ++ compatible = "gpio-keys"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pwrbtn_gpio>; ++ ++ power { ++ debounce-interval = <20>; ++ gpios = <&gpio0 RK_PA5 GPIO_ACTIVE_LOW>; ++ label = "Power"; ++ linux,code = <KEY_POWER>; ++ wakeup-source; ++ }; ++ }; ++ ++ leds { ++ compatible = "gpio-leds"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pwrled_gpio &slpled_gpio>; ++ ++ green-led { ++ color = <LED_COLOR_ID_GREEN>; ++ default-state = "on"; ++ function = LED_FUNCTION_POWER; ++ gpios = <&gpio0 RK_PB3 GPIO_ACTIVE_HIGH>; ++ label = "green:power"; ++ }; ++ ++ red-led { ++ color = <LED_COLOR_ID_RED>; ++ default-state = "off"; ++ function = LED_FUNCTION_STANDBY; ++ gpios = <&gpio0 RK_PA2 GPIO_ACTIVE_HIGH>; ++ label = "red:standby"; ++ panic-indicator; ++ retain-state-suspended; ++ }; ++ }; ++ ++ /* Power sequence for SDIO WiFi module */ ++ sdio_pwrseq: sdio-pwrseq { ++ compatible = "mmc-pwrseq-simple"; ++ clocks = <&rk808 1>; ++ clock-names = "ext_clock"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&wifi_enable_h_gpio>; ++ post-power-on-delay-ms = <100>; ++ power-off-delay-us = <500000>; ++ ++ /* WL_REG_ON on module */ ++ reset-gpios = <&gpio0 RK_PB2 GPIO_ACTIVE_LOW>; ++ }; ++ ++ /* Audio components */ ++ es8316-sound { ++ compatible = "simple-audio-card"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&hp_det_gpio>; ++ simple-audio-card,name = "rockchip,es8316-codec"; ++ simple-audio-card,format = "i2s"; ++ simple-audio-card,mclk-fs = <256>; ++ ++ simple-audio-card,widgets = ++ "Microphone", "Mic Jack", ++ "Headphone", "Headphones", ++ "Speaker", "Speaker"; ++ simple-audio-card,routing = ++ "MIC1", "Mic Jack", ++ "Headphones", "HPOL", ++ "Headphones", "HPOR", ++ "Speaker Amplifier INL", "HPOL", ++ "Speaker Amplifier INR", "HPOR", ++ "Speaker", "Speaker Amplifier OUTL", ++ "Speaker", "Speaker Amplifier OUTR"; ++ ++ simple-audio-card,hp-det-gpio = <&gpio0 RK_PB0 GPIO_ACTIVE_LOW>; ++ simple-audio-card,aux-devs = <&speaker_amp>; ++ simple-audio-card,pin-switches = "Speaker"; ++ ++ simple-audio-card,cpu { ++ sound-dai = <&i2s1>; ++ }; ++ ++ simple-audio-card,codec { ++ sound-dai = <&es8316>; ++ }; ++ }; ++ ++ speaker_amp: speaker-amplifier { ++ compatible = "simple-audio-amplifier"; ++ enable-gpios = <&gpio4 RK_PD3 GPIO_ACTIVE_HIGH>; ++ sound-name-prefix = "Speaker Amplifier"; ++ VCC-supply = <&pa_5v>; ++ }; ++ ++ /* Power tree */ ++ /* Root power source */ ++ vcc_sysin: vcc-sysin { ++ compatible = "regulator-fixed"; ++ regulator-name = "vcc_sysin"; ++ regulator-always-on; ++ regulator-boot-on; ++ }; ++ ++ /* Regulators supplied by vcc_sysin */ ++ /* LCD backlight supply */ ++ vcc_12v: vcc-12v { ++ compatible = "regulator-fixed"; ++ regulator-name = "vcc_12v"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <12000000>; ++ regulator-max-microvolt = <12000000>; ++ vin-supply = <&vcc_sysin>; ++ ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ /* Main 3.3 V supply */ ++ vcc3v3_sys: wifi_bat: vcc3v3-sys { ++ compatible = "regulator-fixed"; ++ regulator-name = "vcc3v3_sys"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ vin-supply = <&vcc_sysin>; ++ ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ }; ++ }; ++ ++ /* 5 V USB power supply */ ++ vcc5v0_usb: pa_5v: vcc5v0-usb-regulator { ++ compatible = "regulator-fixed"; ++ enable-active-high; ++ gpio = <&gpio1 RK_PB5 GPIO_ACTIVE_HIGH>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pwr_5v_gpio>; ++ regulator-name = "vcc5v0_usb"; ++ regulator-always-on; ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5000000>; ++ vin-supply = <&vcc_sysin>; ++ ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ /* RK3399 logic supply */ ++ vdd_log: vdd-log { ++ compatible = "pwm-regulator"; ++ pwms = <&pwm2 0 25000 1>; ++ regulator-name = "vdd_log"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <800000>; ++ regulator-max-microvolt = <1400000>; ++ vin-supply = <&vcc_sysin>; ++ ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ }; ++ }; ++ ++ /* Regulators supplied by vcc3v3_sys */ ++ /* 0.9 V supply, always on */ ++ vcc_0v9: vcc-0v9 { ++ compatible = "regulator-fixed"; ++ regulator-name = "vcc_0v9"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <900000>; ++ regulator-max-microvolt = <900000>; ++ vin-supply = <&vcc3v3_sys>; ++ }; ++ ++ /* S3 1.8 V supply, switched by vcc1v8_s3 */ ++ vcca1v8_s3: vcc1v8-s3 { ++ compatible = "regulator-fixed"; ++ regulator-name = "vcca1v8_s3"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ vin-supply = <&vcc3v3_sys>; ++ }; ++ ++ /* micro SD card power */ ++ vcc3v0_sd: vcc3v0-sd { ++ compatible = "regulator-fixed"; ++ enable-active-high; ++ gpio = <&gpio0 RK_PA1 GPIO_ACTIVE_HIGH>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&sdmmc0_pwr_h_gpio>; ++ regulator-name = "vcc3v0_sd"; ++ regulator-always-on; ++ regulator-min-microvolt = <3000000>; ++ regulator-max-microvolt = <3000000>; ++ vin-supply = <&vcc3v3_sys>; ++ ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ /* LCD panel power, called VCC3V3_S0 in schematic */ ++ vcc3v3_panel: vcc3v3-panel { ++ compatible = "regulator-fixed"; ++ enable-active-high; ++ gpio = <&gpio1 RK_PC6 GPIO_ACTIVE_HIGH>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&lcdvcc_en_gpio>; ++ regulator-name = "vcc3v3_panel"; ++ regulator-always-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-enable-ramp-delay = <100000>; ++ vin-supply = <&vcc3v3_sys>; ++ ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ /* M.2 adapter power, switched by vcc1v8_s3 */ ++ vcc3v3_ssd: vcc3v3-ssd { ++ compatible = "regulator-fixed"; ++ regulator-name = "vcc3v3_ssd"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ vin-supply = <&vcc3v3_sys>; ++ }; ++ ++ /* Regulators supplied by vcc5v0_usb */ ++ /* USB 3 port power supply regulator */ ++ vcc5v0_otg: vcc5v0-otg { ++ compatible = "regulator-fixed"; ++ enable-active-high; ++ gpio = <&gpio4 RK_PD2 GPIO_ACTIVE_HIGH>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&vcc5v0_host_en_gpio>; ++ regulator-name = "vcc5v0_otg"; ++ regulator-always-on; ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5000000>; ++ vin-supply = <&vcc5v0_usb>; ++ ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ /* Regulators supplied by vcc5v0_usb */ ++ /* Type C port power supply regulator */ ++ vbus_5vout: vbus_typec: vbus-5vout { ++ compatible = "regulator-fixed"; ++ enable-active-high; ++ gpio = <&gpio1 RK_PA3 GPIO_ACTIVE_HIGH>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&vcc5v0_typec0_en_gpio>; ++ regulator-name = "vbus_5vout"; ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5000000>; ++ vin-supply = <&vcc5v0_usb>; ++ ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ /* Regulators supplied by vcc_1v8 */ ++ /* Primary 0.9 V LDO */ ++ vcca0v9_s3: vcca0v9-s3 { ++ compatible = "regulator-fixed"; ++ regulator-name = "vcc0v9_s3"; ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5000000>; ++ vin-supply = <&vcc_1v8>; ++ ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ }; ++ }; ++ ++ mains_charger: dc-charger { ++ compatible = "gpio-charger"; ++ charger-type = "mains"; ++ gpios = <&gpio4 RK_PD0 GPIO_ACTIVE_LOW>; ++ ++ /* Also triggered by USB charger */ ++ pinctrl-names = "default"; ++ pinctrl-0 = <&dc_det_gpio>; ++ }; ++}; ++ ++&cdn_dp { ++ status = "okay"; ++}; ++ ++&cpu_b0 { ++ cpu-supply = <&vdd_cpu_b>; ++}; ++ ++&cpu_b1 { ++ cpu-supply = <&vdd_cpu_b>; ++}; ++ ++&cpu_l0 { ++ cpu-supply = <&vdd_cpu_l>; ++}; ++ ++&cpu_l1 { ++ cpu-supply = <&vdd_cpu_l>; ++}; ++ ++&cpu_l2 { ++ cpu-supply = <&vdd_cpu_l>; ++}; ++ ++&cpu_l3 { ++ cpu-supply = <&vdd_cpu_l>; ++}; ++ ++&edp { ++ force-hpd; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&edp_hpd>; ++ status = "okay"; ++ ++ ports { ++ edp_out: port@1 { ++ reg = <1>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ edp_out_panel: endpoint@0 { ++ reg = <0>; ++ remote-endpoint = <&panel_in_edp>; ++ }; ++ }; ++ }; ++}; ++ ++&emmc_phy { ++ status = "okay"; ++}; ++ ++&gpu { ++ mali-supply = <&vdd_gpu>; ++ status = "okay"; ++}; ++ ++&hdmi_sound { ++ status = "okay"; ++}; ++ ++&i2c0 { ++ clock-frequency = <400000>; ++ i2c-scl-falling-time-ns = <4>; ++ i2c-scl-rising-time-ns = <168>; ++ status = "okay"; ++ ++ rk808: pmic@1b { ++ compatible = "rockchip,rk808"; ++ reg = <0x1b>; ++ #clock-cells = <1>; ++ clock-output-names = "xin32k", "rk808-clkout2"; ++ interrupt-parent = <&gpio3>; ++ interrupts = <10 IRQ_TYPE_LEVEL_LOW>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pmic_int_l_gpio>; ++ rockchip,system-power-controller; ++ wakeup-source; ++ ++ vcc1-supply = <&vcc_sysin>; ++ vcc2-supply = <&vcc_sysin>; ++ vcc3-supply = <&vcc_sysin>; ++ vcc4-supply = <&vcc_sysin>; ++ vcc6-supply = <&vcc_sysin>; ++ vcc7-supply = <&vcc_sysin>; ++ vcc8-supply = <&vcc3v3_sys>; ++ vcc9-supply = <&vcc_sysin>; ++ vcc10-supply = <&vcc_sysin>; ++ vcc11-supply = <&vcc_sysin>; ++ vcc12-supply = <&vcc3v3_sys>; ++ vcc13-supply = <&vcc_sysin>; ++ vcc14-supply = <&vcc_sysin>; ++ ++ regulators { ++ /* rk3399 center logic supply */ ++ vdd_center: DCDC_REG1 { ++ regulator-name = "vdd_center"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <750000>; ++ regulator-max-microvolt = <1350000>; ++ regulator-ramp-delay = <6001>; ++ ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vdd_cpu_l: DCDC_REG2 { ++ regulator-name = "vdd_cpu_l"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <750000>; ++ regulator-max-microvolt = <1350000>; ++ regulator-ramp-delay = <6001>; ++ ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vcc_ddr: DCDC_REG3 { ++ regulator-name = "vcc_ddr"; ++ regulator-always-on; ++ regulator-boot-on; ++ ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ }; ++ }; ++ ++ vcc_1v8: vcc_wl: DCDC_REG4 { ++ regulator-name = "vcc_1v8"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ regulator-suspend-microvolt = <1800000>; ++ }; ++ }; ++ ++ /* not used */ ++ LDO_REG1 { ++ }; ++ ++ /* not used */ ++ LDO_REG2 { ++ }; ++ ++ vcc1v8_pmupll: LDO_REG3 { ++ regulator-name = "vcc1v8_pmupll"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ regulator-suspend-microvolt = <1800000>; ++ }; ++ }; ++ ++ vcc_sdio: LDO_REG4 { ++ regulator-name = "vcc_sdio"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <3000000>; ++ ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ regulator-suspend-microvolt = <3000000>; ++ }; ++ }; ++ ++ vcca3v0_codec: LDO_REG5 { ++ regulator-name = "vcca3v0_codec"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <3000000>; ++ regulator-max-microvolt = <3000000>; ++ ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vcc_1v5: LDO_REG6 { ++ regulator-name = "vcc_1v5"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <1500000>; ++ regulator-max-microvolt = <1500000>; ++ ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ regulator-suspend-microvolt = <1500000>; ++ }; ++ }; ++ ++ vcca1v8_codec: LDO_REG7 { ++ regulator-name = "vcca1v8_codec"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vcc_3v0: LDO_REG8 { ++ regulator-name = "vcc_3v0"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <3000000>; ++ regulator-max-microvolt = <3000000>; ++ ++ regulator-state-mem { ++ regulator-on-in-suspend; ++ regulator-suspend-microvolt = <3000000>; ++ }; ++ }; ++ ++ vcc3v3_s3: SWITCH_REG1 { ++ regulator-name = "vcc3v3_s3"; ++ regulator-always-on; ++ regulator-boot-on; ++ ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vcc3v3_s0: SWITCH_REG2 { ++ regulator-name = "vcc3v3_s0"; ++ regulator-always-on; ++ regulator-boot-on; ++ ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ }; ++ }; ++ ++ vdd_cpu_b: regulator@40 { ++ compatible = "silergy,syr827"; ++ reg = <0x40>; ++ fcs,suspend-voltage-selector = <1>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&vsel1_gpio>; ++ regulator-name = "vdd_cpu_b"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <712500>; ++ regulator-max-microvolt = <1500000>; ++ regulator-ramp-delay = <1000>; ++ vin-supply = <&vcc_1v8>; ++ ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++ ++ vdd_gpu: regulator@41 { ++ compatible = "silergy,syr828"; ++ reg = <0x41>; ++ fcs,suspend-voltage-selector = <1>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&vsel2_gpio>; ++ regulator-name = "vdd_gpu"; ++ regulator-always-on; ++ regulator-boot-on; ++ regulator-min-microvolt = <712500>; ++ regulator-max-microvolt = <1500000>; ++ regulator-ramp-delay = <1000>; ++ vin-supply = <&vcc_1v8>; ++ ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ }; ++ }; ++}; ++ ++&i2c1 { ++ clock-frequency = <100000>; ++ i2c-scl-falling-time-ns = <4>; ++ i2c-scl-rising-time-ns = <168>; ++ status = "okay"; ++ ++ es8316: es8316@11 { ++ compatible = "everest,es8316"; ++ reg = <0x11>; ++ clocks = <&cru SCLK_I2S_8CH_OUT>; ++ clock-names = "mclk"; ++ #sound-dai-cells = <0>; ++ }; ++}; ++ ++&i2c3 { ++ i2c-scl-falling-time-ns = <15>; ++ i2c-scl-rising-time-ns = <450>; ++ status = "okay"; ++}; ++ ++&i2c4 { ++ i2c-scl-falling-time-ns = <20>; ++ i2c-scl-rising-time-ns = <600>; ++ status = "okay"; ++ ++ fusb0: fusb30x@22 { ++ compatible = "fcs,fusb302"; ++ reg = <0x22>; ++ fcs,int_n = <&gpio1 RK_PA2 GPIO_ACTIVE_HIGH>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&fusb0_int_gpio>; ++ vbus-supply = <&vbus_typec>; ++ ++ connector { ++ compatible = "usb-c-connector"; ++ data-role = "host"; ++ label = "USB-C"; ++ op-sink-microwatt = <1000000>; ++ power-role = "dual"; ++ sink-pdos = ++ <PDO_FIXED(5000, 2500, PDO_FIXED_USB_COMM)>; ++ source-pdos = ++ <PDO_FIXED(5000, 1400, PDO_FIXED_USB_COMM)>; ++ try-power-role = "sink"; ++ ++ ports { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ port@0 { ++ reg = <0>; ++ ++ usbc_hs: endpoint { ++ remote-endpoint = ++ <&u2phy0_typec_hs>; ++ }; ++ }; ++ ++ port@1 { ++ reg = <1>; ++ ++ usbc_ss: endpoint { ++ remote-endpoint = ++ <&tcphy0_typec_ss>; ++ }; ++ }; ++ ++ port@2 { ++ reg = <2>; ++ ++ usbc_dp: endpoint { ++ remote-endpoint = ++ <&tcphy0_typec_dp>; ++ }; ++ }; ++ }; ++ }; ++ }; ++}; ++ ++&i2s1 { ++ #sound-dai-cells = <0>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&i2s_8ch_mclk_gpio>, <&i2s1_2ch_bus>; ++ rockchip,capture-channels = <8>; ++ rockchip,playback-channels = <8>; ++ status = "okay"; ++}; ++ ++&io_domains { ++ audio-supply = <&vcc_3v0>; ++ gpio1830-supply = <&vcc_3v0>; ++ sdmmc-supply = <&vcc_sdio>; ++ status = "okay"; ++}; ++ ++&pcie_phy { ++ status = "okay"; ++}; ++ ++&pcie0 { ++ bus-scan-delay-ms = <1000>; ++ ep-gpios = <&gpio2 RK_PD4 GPIO_ACTIVE_HIGH>; ++ max-link-speed = <2>; ++ num-lanes = <4>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pcie_clkreqn_cpm>; ++ vpcie0v9-supply = <&vcca0v9_s3>; ++ vpcie1v8-supply = <&vcca1v8_s3>; ++ vpcie3v3-supply = <&vcc3v3_ssd>; ++ status = "okay"; ++}; ++ ++&pinctrl { ++ buttons { ++ pwrbtn_gpio: pwrbtn-gpio { ++ rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>; ++ }; ++ ++ lidbtn_gpio: lidbtn-gpio { ++ rockchip,pins = <1 RK_PA1 RK_FUNC_GPIO &pcfg_pull_up>; ++ }; ++ }; ++ ++ dc-charger { ++ dc_det_gpio: dc-det-gpio { ++ rockchip,pins = <4 RK_PD0 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ }; ++ ++ es8316 { ++ hp_det_gpio: hp-det-gpio { ++ rockchip,pins = <0 RK_PB0 RK_FUNC_GPIO &pcfg_pull_down>; ++ }; ++ }; ++ ++ fusb302x { ++ fusb0_int_gpio: fusb0-int-gpio { ++ rockchip,pins = <1 RK_PA2 RK_FUNC_GPIO &pcfg_pull_up>; ++ }; ++ }; ++ ++ i2s1 { ++ i2s_8ch_mclk_gpio: i2s-8ch-mclk-gpio { ++ rockchip,pins = <4 RK_PA0 1 &pcfg_pull_none>; ++ }; ++ }; ++ ++ lcd-panel { ++ lcdvcc_en_gpio: lcdvcc-en-gpio { ++ rockchip,pins = <1 RK_PC6 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ ++ panel_en_gpio: panel-en-gpio { ++ rockchip,pins = <1 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ ++ lcd_panel_reset_gpio: lcd-panel-reset-gpio { ++ rockchip,pins = <4 RK_PD6 RK_FUNC_GPIO &pcfg_pull_up>; ++ }; ++ }; ++ ++ leds { ++ pwrled_gpio: pwrled_gpio { ++ rockchip,pins = <0 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ ++ slpled_gpio: slpled_gpio { ++ rockchip,pins = <0 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ }; ++ ++ pmic { ++ pmic_int_l_gpio: pmic-int-l-gpio { ++ rockchip,pins = <3 RK_PB2 RK_FUNC_GPIO &pcfg_pull_up>; ++ }; ++ ++ vsel1_gpio: vsel1-gpio { ++ rockchip,pins = <1 RK_PC1 RK_FUNC_GPIO &pcfg_pull_down>; ++ }; ++ ++ vsel2_gpio: vsel2-gpio { ++ rockchip,pins = <1 RK_PB6 RK_FUNC_GPIO &pcfg_pull_down>; ++ }; ++ }; ++ ++ sdcard { ++ sdmmc0_pwr_h_gpio: sdmmc0-pwr-h-gpio { ++ rockchip,pins = <0 RK_PA1 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ ++ }; ++ ++ sdio-pwrseq { ++ wifi_enable_h_gpio: wifi-enable-h-gpio { ++ rockchip,pins = <0 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ }; ++ ++ usb-typec { ++ vcc5v0_typec0_en_gpio: vcc5v0-typec0-en-gpio { ++ rockchip,pins = <1 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>; ++ }; ++ }; ++ ++ usb2 { ++ pwr_5v_gpio: pwr-5v-gpio { ++ rockchip,pins = <1 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ ++ vcc5v0_host_en_gpio: vcc5v0-host-en-gpio { ++ rockchip,pins = <4 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ }; ++ ++ wireless-bluetooth { ++ bt_wake_gpio: bt-wake-gpio { ++ rockchip,pins = <2 RK_PD3 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ ++ bt_host_wake_gpio: bt-host-wake-gpio { ++ rockchip,pins = <0 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ ++ bt_reset_gpio: bt-reset-gpio { ++ rockchip,pins = <0 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ }; ++}; ++ ++&pmu_io_domains { ++ pmu1830-supply = <&vcc_3v0>; ++ status = "okay"; ++}; ++ ++&pwm0 { ++ status = "okay"; ++}; ++ ++&pwm2 { ++ status = "okay"; ++}; ++ ++&saradc { ++ vref-supply = <&vcca1v8_s3>; ++ status = "okay"; ++}; ++ ++&sdmmc { ++ bus-width = <4>; ++ cap-mmc-highspeed; ++ cap-sd-highspeed; ++ cd-gpios = <&gpio0 RK_PA7 GPIO_ACTIVE_LOW>; ++ disable-wp; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_bus4>; ++ sd-uhs-sdr104; ++ vmmc-supply = <&vcc3v0_sd>; ++ vqmmc-supply = <&vcc_sdio>; ++ status = "okay"; ++}; ++ ++&sdio0 { ++ bus-width = <4>; ++ cap-sd-highspeed; ++ cap-sdio-irq; ++ keep-power-in-suspend; ++ mmc-pwrseq = <&sdio_pwrseq>; ++ non-removable; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&sdio0_bus4 &sdio0_cmd &sdio0_clk>; ++ sd-uhs-sdr104; ++ status = "okay"; ++}; ++ ++&sdhci { ++ bus-width = <8>; ++ mmc-hs200-1_8v; ++ non-removable; ++ status = "okay"; ++}; ++ ++&spi1 { ++ max-freq = <10000000>; ++ status = "okay"; ++ ++ spiflash: flash@0 { ++ compatible = "jedec,spi-nor"; ++ reg = <0>; ++ m25p,fast-read; ++ spi-max-frequency = <10000000>; ++ }; ++}; ++ ++&tcphy0 { ++ status = "okay"; ++}; ++ ++&tcphy0_dp { ++ port { ++ tcphy0_typec_dp: endpoint { ++ remote-endpoint = <&usbc_dp>; ++ }; ++ }; ++}; ++ ++&tcphy0_usb3 { ++ port { ++ tcphy0_typec_ss: endpoint { ++ remote-endpoint = <&usbc_ss>; ++ }; ++ }; ++}; ++ ++&tcphy1 { ++ status = "okay"; ++}; ++ ++&tsadc { ++ /* tshut mode 0:CRU 1:GPIO */ ++ rockchip,hw-tshut-mode = <1>; ++ /* tshut polarity 0:LOW 1:HIGH */ ++ rockchip,hw-tshut-polarity = <1>; ++ status = "okay"; ++}; ++ ++&u2phy0 { ++ status = "okay"; ++ ++ u2phy0_otg: otg-port { ++ status = "okay"; ++ }; ++ ++ u2phy0_host: host-port { ++ phy-supply = <&vcc5v0_otg>; ++ status = "okay"; ++ }; ++ ++ port { ++ u2phy0_typec_hs: endpoint { ++ remote-endpoint = <&usbc_hs>; ++ }; ++ }; ++}; ++ ++&u2phy1 { ++ status = "okay"; ++ ++ u2phy1_otg: otg-port { ++ status = "okay"; ++ }; ++ ++ u2phy1_host: host-port { ++ phy-supply = <&vcc5v0_otg>; ++ status = "okay"; ++ }; ++}; ++ ++&uart0 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart0_xfer &uart0_cts &uart0_rts>; ++ uart-has-rtscts; ++ status = "okay"; ++ ++ bluetooth { ++ compatible = "brcm,bcm4345c5"; ++ clocks = <&rk808 1>; ++ clock-names = "lpo"; ++ device-wakeup-gpios = <&gpio2 RK_PD3 GPIO_ACTIVE_HIGH>; ++ host-wakeup-gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_HIGH>; ++ max-speed = <1500000>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&bt_host_wake_gpio &bt_wake_gpio &bt_reset_gpio>; ++ shutdown-gpios = <&gpio0 RK_PB1 GPIO_ACTIVE_HIGH>; ++ vbat-supply = <&wifi_bat>; ++ vddio-supply = <&vcc_wl>; ++ }; ++}; ++ ++&uart2 { ++ status = "okay"; ++}; ++ ++&usb_host0_ehci { ++ status = "okay"; ++}; ++ ++&usb_host0_ohci { ++ status = "okay"; ++}; ++ ++&usb_host1_ehci { ++ status = "okay"; ++}; ++ ++&usb_host1_ohci { ++ status = "okay"; ++}; ++ ++&usbdrd3_0 { ++ status = "okay"; ++}; ++ ++&usbdrd_dwc3_0 { ++ dr_mode = "host"; ++ status = "okay"; ++}; ++ ++&usbdrd3_1 { ++ status = "okay"; ++}; ++ ++&usbdrd_dwc3_1 { ++ dr_mode = "host"; ++ status = "okay"; ++}; ++ ++&vopb { ++ status = "okay"; ++}; ++ ++&vopb_mmu { ++ status = "okay"; ++}; ++ ++&vopl { ++ status = "okay"; ++}; ++ ++&vopl_mmu { ++ status = "okay"; ++}; +-- +2.25.1 + |