From 8f03ee22707dd0c4082875c3d3fcdb4542112f98 Mon Sep 17 00:00:00 2001 From: Sebastian Krzyszkowiak Date: Sun, 24 Jan 2021 06:24:16 +0100 Subject: [PATCH] Add support for Purism Librem 5 --- .gitignore | 2 + Makefile | 35 ++- splash/purism-librem5-error.ppm | Bin 0 -> 3110462 bytes splash/purism-librem5.ppm | Bin 0 -> 3110462 bytes src/info-purism-librem5.sh | 11 + src/linux_config_librem5 | 470 ++++++++++++++++++++++++++++++++ src/purism-librem5.txt | 29 ++ 7 files changed, 546 insertions(+), 1 deletion(-) create mode 100644 splash/purism-librem5-error.ppm create mode 100644 splash/purism-librem5.ppm create mode 100644 src/info-purism-librem5.sh create mode 100644 src/linux_config_librem5 create mode 100644 src/purism-librem5.txt diff --git a/.gitignore b/.gitignore index 53d024d..bc64243 100644 --- a/.gitignore +++ b/.gitignore @@ -6,8 +6,10 @@ /dtbs /src/linux-rockchip /src/linux-sunxi +/src/linux-librem5 /src/busybox /src/u-boot +/src/u-boot-librem5 /src/arm-trusted-firmware /*.scr /*.dtb diff --git a/Makefile b/Makefile index 00997ce..9a20c78 100644 --- a/Makefile +++ b/Makefile @@ -120,6 +120,18 @@ kernel-rockchip.gz: src/linux_config_rockchip src/linux-rockchip @cp build/linux-rockchip/arch/arm64/boot/Image.gz $@ @cp build/linux-rockchip/arch/arm64/boot/dts/rockchip/*.dtb dtbs/rockchip/ +kernel-librem5.gz: src/linux_config_librem5 src/linux-librem5 + @echo "MAKE $@" + @mkdir -p build/linux-librem5 + @mkdir -p dtbs/librem5 + @cp src/linux_config_librem5 build/linux-librem5/.config + @$(MAKE) -C src/linux-librem5 O=../../build/linux-librem5 $(CROSS_FLAGS) olddefconfig + @$(MAKE) -C src/linux-librem5 O=../../build/linux-librem5 $(CROSS_FLAGS) + @cp build/linux-librem5/arch/arm64/boot/Image.gz $@ + @cp build/linux-librem5/arch/arm64/boot/dts/freescale/imx8mq-librem5*.dtb dtbs/librem5/ + +dtbs/librem5/imx8mq-librem5-r4.dtb: kernel-librem5.gz + %.scr: src/%.txt @echo "MKIMG $@" @mkimage -A arm -O linux -T script -C none -n "U-Boot boot script" -d $< $@ @@ -150,6 +162,12 @@ u-boot-rk3399.bin: build/atf/rk3399/bl31.elf src/u-boot @BL31=../../../build/atf/rk3399/bl31.elf $(MAKE) -C src/u-boot O=../../build/u-boot/rk3399 $(CROSS_FLAGS_BOOT) all @cp build/u-boot/rk3399/u-boot "$@" +u-boot-librem5.bin: src/u-boot-librem5 + @echo "MAKE $@" + @mkdir -p build/u-boot/librem5 + @cd build/u-boot/librem5 && ../../../src/u-boot-librem5/build_uboot.sh -b librem5 + @cp build/u-boot/librem5/output/uboot-librem5/u-boot-librem5.imx $@ + src/linux-rockchip: @echo "WGET linux-rockchip" @mkdir src/linux-rockchip @@ -162,6 +180,12 @@ src/linux-sunxi: @wget https://github.com/megous/linux/archive/orange-pi-5.9-20201019-1553.tar.gz @tar -xvf orange-pi-5.9-20201019-1553.tar.gz --strip-components 1 -C src/linux-sunxi +src/linux-librem5: + @echo "WGET linux-librem5" + @mkdir src/linux-librem5 + @wget -c https://source.puri.sm/Librem5/linux-next/-/archive/pureos/5.9.16+librem5.2/linux-next-pureos-5.9.16+librem5.2.tar.gz + @tar -xvf linux-next-pureos-5.9.16+librem5.2.tar.gz --strip-components 1 -C src/linux-librem5 + src/arm-trusted-firmware: @echo "WGET arm-trusted-firmware" @mkdir src/arm-trusted-firmware @@ -175,13 +199,22 @@ src/u-boot: @tar -xvf u-boot-2020.04.tar.bz2 --strip-components 1 -C src/u-boot @cd src/u-boot && patch -p1 < ../u-boot-pinephone.patch +src/u-boot-librem5: + @echo "WGET u-boot-librem5" + @mkdir src/u-boot-librem5 + @wget https://source.puri.sm/Librem5/u-boot-builder/-/archive/3b1c7d957f46c87c6cdd71cd8dab7c84aca26570/u-boot-builder-3b1c7d957f46c87c6cdd71cd8dab7c84aca26570.tar.gz + @tar -xvf u-boot-builder-3b1c7d957f46c87c6cdd71cd8dab7c84aca26570.tar.gz --strip-components 1 -C src/u-boot-librem5 + src/busybox: @echo "WGET busybox" @mkdir src/busybox @wget https://www.busybox.net/downloads/busybox-1.32.0.tar.bz2 @tar -xvf busybox-1.32.0.tar.bz2 --strip-components 1 -C src/busybox -.PHONY: clean cleanfast +.PHONY: clean cleanfast librem5 + +librem5: initramfs-purism-librem5.gz kernel-librem5.gz u-boot-librem5.bin src/purism-librem5.txt dtbs/librem5/imx8mq-librem5-r4.dtb + @echo 'All done! Switch your phone into flashing mode and run Jumpdrive with `uuu src/purism-librem5.txt`' cleanfast: @rm -rvf build diff --git a/splash/purism-librem5-error.ppm b/splash/purism-librem5-error.ppm new file mode 100644 index 0000000000000000000000000000000000000000..e6ba80f6d8bab62051cf80c59391a2c8a2466fec GIT binary patch literal 3110462 zcmeI*&#UBVmKN~uy21azMS;)@!KSB~)<3|-Aj4>jD6>^;bwoy)w#0#vT)RzNG&15w zT$G4~J9Xh;feWE);V;}+E>h8jHB70bnmSc}?Ux!dEAG7+_uhynPQ>#mhUv=4d*eOl zbKdhrROZc_KluIM`aK`~!C(2|pZv=|{L>%&sbBrz=l;+y{NRJX^21;G(J%eQU;f~G z-}#yEe&>7N{on_G_!mC-OMl_RKl}TB>6gFt2lgNT%+LPpcfa+$?|=VWn|}xpAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAn-ha z7cX9X{PD-1e){RFSFgVK;)^$L-hBDxmtXmZ0D;>T*w=ht_I>5|#oyO|4}s^Uh|eZK zfWW;1FJHdgqvrMN*SDLgIwL^fSb;qX_CVNU;oivb69fnlc%;DopEI9-{`s*naKm72s z&pvxf?)V%61X>05(AcBnh=B1S1PBoL{{s7er}z@k)>jOD6L^-u9vyz6!wU%k0>=n^ z^2sO9iW{FyfIz*#9wW!3jgKKfpjKf2g7f;M1VDhm2?X{qsSQ$%6Cm)gfHxZ_2w6`- zfWX%R-f}z~xqg;Fr-0u^`8p&0F98B46Yv`=oi8Z5CUBp?{`Fla%NI{XfB=EF1bq4E zeZlK-0&N2OpI`H*QQk^N|4M+sDFya;@rPvFURLx=;7$SGXXBLF>bVFII1t!F=Faf( zAOQkB0)8juAR0YDfWYYm{H{vR%Zg43+$rGOm7hLXJtF}E2LgN4+!;Y0BtW1+VEI-wj|A=%@VCC6B~?8s0Rndk?16J<5P6UQf!h{%`SRsmk>D`` z1PGiK&Q;wJAaE$)yNRAFQX|j%lb`%#|1*Z){`R*ICwr5R?9J{iM`#^#MgiY( z^d{F+Qv@Csc>VhI8Dqs$pHpCe<$ZX#xB9c*a-8#8C7yeaom;(}`XWH!PJtIMUL?ZB z8RrqG{q9M7o-m<>iKd4 zd-!}Kj{J}Sfg2X^ZAEkOdY+T^w;cPga`gPh%HFIm7Cp~ZN)Jj{pGzUwyTQ&tW2YgaCnC74R3(3w{CwE+Vjp&#mUFz6cOF6u3yvIFtYZ0=vLr zB6)-Wfm;<2dISg%xRk)H=BmC35I7XLRL(e;009DriR2Li1a4J8;t?P~;8Fs&nydOE zK;Tf|QaR&X0t5&gCXz=85V%zViAR6{flCS8YOd;w0D(h+OXZAn2@oJ~m`ENWK;Tvd zBpv|*1TH0TtGTK#0t5~PE|oLRB|w0{VIp~i0D)T-kaz?L5V(}Ut>&t}2oN|FxKz$K zmjD3*hl%770t9YVK;jV~K;TjWx0zN4u+_k`XVq{K=MqUj@k&EL%`Ob zL)CKq&{)|*e;Ism^{=wTp5v{2B!Sxyu=TewM_mxOE&<7N zUGq{cf#(a@`sW*Z1_A^gD=Lkri=ji!d0@o;D z>#uQYY9?^)0+Q$2C#Ze`j}@@>j}`Or1PDA|K=M4_&@&LYE&*GAUGq{cf!h#}Jhw4N zT@W~4z}6pcMb9*z@5rKyVZ2iMNewF}%a|lSDbEtYw0+R)7{p9JW zjliu6NS<4rtiA}`Ct&OElkqqK0_PKuJm<6Z%mii%*!r1sQ5AvP7LYu*Jzw1sI25q; zhbA5&K;Ya0lIPsQo}a)p0b4(9BI+T~ARu`frmRN-ZwuJ^w>A7b0RkBT$&+z*3V}HS zwtmhmR6?LfK=Sm=TBih-fUS2E2oT5%NS?g86A4^az}8>Z-{}N81td@B+;!b7VC$Qw zuXh5M5|BKXl6NkFO9|NeOUXNzK(m14X`a5`I|Xcg=iGHo;Iaae=d%7zCy*Dg^?7qA z5+ERX+yMe@0=B+w;`${pK|u0Mn1UJzBn51JQrlSs2rL1~<0cSj6R`Dd6W1?+2?CO5 z!W7g%ASqz$liJQAKwt?-9yftNn}Drvo49@nOc0Pf6Q-aB0!aZ|pVW310Rl@v^0)~E z+5~KU+r;%tV1j_;nJ@)45J(Ex`lPnA2oP8TlE+OT&?aE(+a|7G0uuxz&x9$cfk0Bg z)+e={MS#E(kUVYzfi?kK-!^gm5||($c_vIj4Fr+`wmzxtECK|UfaGx#2($^<`nHMd zm%s!8$unUJY9Nplu=Po8XAvN<1SF4}K%h;)*0)VuzXT=-NS+B(Py>OafUQqzJBt8; zB_Mg+1OjaWw!UrR`Xw+yK=MqOf*J@U1#Ep%+gSt%ECI>mCJ<;7u=Q;d*Drwy0+MIK z6x2W z1Z;iV#Pv&Hf`H_iFa?i|CQLyM1d;-_KB?_20tA+T1A(M~txsw@ivWQo zAbH#b0&N1ezHQ?AB``ri@=Tb58VDo>Y<*JOSp*0y0mkQA`>No{8lAg}}^kDEZCO~BT-OSyvXcMsYZ4=iofe8YVXTlWJ zKp-h#>yz5fB0yjXNFFzVK%0QAZ=1M&2}}@>JQJp%1_DU|Tc6Z+76AfFK=QZ=1lj~_ zecQzKOJIV4)R%-Ujh>ZB+rB?sDVIIz}6?V zokf7a5|BJ@0)aLGTi-Tu{SufUAbBQCK@9|w0=7P>?JNQWmVo4O69}{k*!s4K>zBX; z0m(CA3Thyb6tMM4ZD$c6ummKJn?RsVz}B}-T)zY+2uPj@Q&0neq=2nYYCDSnfh8b$ z+ynw`0=B+w;`${pK|u0Mn1UJzBn51JQrlSs2rL1~<0cSj6R`Dd6W1?+2?CO5!W7g% zASqz$liJQAKwt?-9yftNn}Drvo49@nOc0Pf6Q-aB0!aZ|pVW310Rl@v^0)~E+5~KU z+r;%tV1j_;nJ@)45J(Ex`lPnA2oP8TlE+OT&?aE(+a|7G0uuxz&x9$cfk0Bg)+e={ zMS#E(kUVYzfi?kK-!^gm5||($c_vIj4Fr+`wmzxtECK|UfaGx#2($^<`nHMdm%s!8 z$unUJY9Nplu=Po8XAvN<1SF4}K%h;)*0)VuzXT=-NS+B(Py>OafUQqzJBt8;B_Mg+ z1OjaWw!UrR`Xw+yK=MqOf*J@U1#Ep%+gSt%ECI>mCJ<;7u=Q;d*Drwy0+MIK6x2W< zDPZf9+Rh?CU1Z;iV z#Pv&Hf`H_iFa?i|CQLyM1d;-_KB?_20tA+T1A(M~txsw@ivWQoAbH#b z0&N1ezHQ?AB``ri@=Tb58VDo>Y<*JOSp*0y0mkQA`>No{8lAg}}^kDEZCO~BT-OSyvXcMsYZ4=iofe8YVXTlWJKp-h# z>yz5fB0yjXNFFzVK%0QAZ=1M&2}}@>JQJp%1_DU|Tc6Z+76AfFK=QZ=1lj~_ecQzK zOJIV4)R%-Ujh>ZB+rB?sDVIIz}6?Vokf7a z5|BJ@0)aLGTi-Tu{SufUAbBQCK@9|w0=7P>?JNQWmVo4O69}{k*!s4K>zBX;0m(CA z3Thyb6tMM4ZD$c6ummKJn?RsVz}B}-T)zY+2uPj@Q&0neq=2nYYCDSnfh8b$+ynw` z0=B+w;`${pK|u0Mn1UJzBn51JQrlSs2rL1~<0cSj6R`Dd6W1?+2?CO5!W7g%ASqz$ zliJQAKwt?-9yftNn}Drvo49@nOc0Pf6Q-aB0!aZ|pVW310Rl@v^0)~E+5~KU+r;%t zV1j_;nJ@)45J(Ex`lPnA2oP8TlE+OT&?aE(+a|7G0uuxz&x9$cfk0Bg)+e={MS#E( zkUVYzfi?kK-!^gm5||($c_vIj4Fr+`wmzxtECK|UfaGx#2($^<`nHMdm%s!8$unUJ zY9Nplu=Po8XAvN<1SF4}K%h;)*0)VuzXT=-NS+B(Py>OafUQqzJBt8;B_Mg+1OjaW zw!UrR`Xw+yK=MqOf*J@U1#Ep%+gSt%ECI>mCJ<;7u=Q;d*Drwy0+MIK6x2W1Z;iV#Pv&H zf`H_iFa?i|CQLyM1d;-_KB?_20tA+T1A(M~txsw@ivWQoAbH#b0&N1e zzHQ?AB``ri@=Tb58VDo>Y<*JOSp*0y0m zkQA`>No{8lAg}}^kDEZCO~BT-OSyvXcMsYZ4=iofe8YVXTlWJKp-h#>yz5f zB0yjXNFFzVK%0QAZ=1M&2}}@>JQJp%1_DU|Tc6Z+76AfFK=QZ=1lj~_ecQzKOJIV4 z)R%-Ujh>ZB+rB?sDVIIz}6?Vokf7a5|BJ@ z0)aLGTi-Tu{SufUAbBQCK@9|w0=7P>?JNQWmVo4O69}{k*!s4K>zBX;0m(CA3Thyb z6tMM4ZD$c6ummKJn?RsVz}B}-T)zY+2uPj@Q&0neq=2nYYCDSnfh8b$+ynw`0=B+w z;`${pK|u0Mn1UJzBn51JQrlSs2rL1~<0cSj6R`Dd6W1?+2?CO5!W7g%ASqz$liJQA zKwt?-9yftNn}Drvo49@nOc0Pf6Q-aB0!aZ|pVW310Rl@v^0)~E+5~KU+r;%tV1j_; znJ@)45J(Ex`lPnA2oP8TlE+OT&?aE(+a|7G0uuxz&x9$cfk0Bg)+e={MS#E(kUVYz zfi?kK-!^gm5||($c_vIj4Fr+`wmzxtECK|UfaGx#2($^<`nHMdm%s!8$unUJY9Npl zu=Po8XAvN<1SF4}K%h;)*0)VuzXT=-NS+B(Py>OafUQqzJBt8;B_Mg+1OjaWw!UrR z`Xw+yK=MqOf*J@U1#Ep%+gSt%ECI>mCJ<;7u=Q;d*Drwy0+MIK6x2W1Z;iV#Pv&Hf`H_i zFa?i|CQLyM1d;-_KB?_20tA+T1A(M~txsw@ivWQoAbH#b0&N1ezHQ?A zB``ri@=Tb58VDo>Y<*JOSp*0y0mkQA`> zNo{8lAg}}^kDEZCO~BT-OSyvXcMsYZ4=iofe8YVXTlWJKp-h#>yz5fB0yjX zNFFzVK%0QAZ=1M&2}}@>JQJp%1_DU|Tc6Z+76AfFK=QZ=1lj~_ecQzKOJIV4)R%-Ujh>ZB+rB?sDVIIz}6?Vokf7a5|BJ@0)aLG zTi-Tu{SufUAbBQCK@9|w0=7P>?JNQWmVo4O69}{k*!s4K>zBX;0m(CA3Thyb6tMM4 zZD$c6ummKJn?RsVz}B}-T)zY+2uPj@Q&0neq=2nYYCDSnfh8b$+ynw`0=B+w;`${p zK|u0Mn1UJzBn51JQrlSs2rL1~<0cSj6R`Dd6W1?+2?CO5!W7g%ASqz$liJQAKwt?- z9yftNn}Drvo49@nOc0Pf6Q-aB0!aZ|pVW310Rl@v^0)~E+5~KU+r;%tV1j_;nJ@)4 z5J(Ex`lPnA2oP8TlE+OT&?aE(+a|7G0uuxz&x9$cfk0Bg)+e={MS#E(kUVYzfi?kK z-!^gm5||($c_vIj4Fr+`wmzxtECK|UfaGx#2($^<`nHMdm%s!8$unUJY9Nplu=Po8 zXAvN<1SF4}K%h;)*0)VuzXT=-NS+B(Py>OafUQqzJBt8;B_Mg+1OjaWw!UrR`Xw+y zK=MqOf*J@U1#Ep%+gSt%ECI>mCJ<;7u=Q;d*Drwy0+MIK6x2W1Z;iV#Pv&Hf`H_iFa?i|CQLyM1d;-_KB?_20tA+T1A(M~txsw@ivWQoAbH#b0&N1ezHQ?AB``ri z@=Tb58VDo>Y<*JOSp*0y0mkQA`>No{8l zAg}}^kDEZCO~BT-OSyvXcMsYZ4=iofe8YVXTlWJKp-h#>yz5fB0yjXNFFzV zK%0QAZ=1M&2}}@>JQJp%1_DU|Tc6Z+76AfFK=QZ=1lj~_ecQzKOJIV4)R%-Ujh>ZB+rB?sDVIIz}6?Vokf7a5|BJ@0)aLGTi-Tu z{SufUAbBQCK@9|w0=7P>?JNQWmVo4O69}{k*!s4K>zBX;0m(CA3Thyb6tMM4ZD$c6 zummKJn?RsVz}B}-T)zY+2uPj@Q&0neq=2nYYCDSnfh8b$+ynw`0=B+w;`${pK|u0M zn1UJzBn51JQrlSs2rL1~<0cSj6R`Dd6W1?+2?CO5!W7g%ASqz$liJQAKwt?-9yftN zn}Drvo49@nOc0Pf6Q-aB0!aZ|pVW310Rl@v^0)~E+5~KU+r;%tV1j_;nJ@)45J(Ex z`lPnA2oP8TlE+OT&?aE(+a|7G0uuxz&x9$cfk0Bg)+e={MS#E(kUVYzfi?kK-!^gm z5||($c_vIj4Fr+`wmzxtECK|UfaGx#2($^<`nHMdm%s!8$unUJY9Nplu=Po8XAvN< z1SF4}K%h;)*0)VuzXT=-NS+B(Py>OafUQqzJBt8;B_Mg+1OjaWw!UrR`Xw+yK=MqO zf*J@U1#Ep%+gSt%ECI>mCJ<;7u=Q;d*Drwy0+MIK6x2W1Z;iV#Pv&Hf`H_iFa?i|CQLyM1d;-_KB?_20tA+T1A(M~txsw@ivWQoAbH#b0&N1ezHQ?AB``ri@=Tb5 z8VDo>Y<*JOSp*0y0mkQA`>No{8lAg}}^ zkDEZCO~BT-OSyvXcMsYZ4=iofe8YVXTlWJKp-h#>yz5fB0yjXNFFzVK%0QA zZ=1M&2}}@>JQJp%1_DU|Tc6Z+76AfFK=QZ=1lj~_ecQzKOJIV4)R%-Ujh>ZB+rB?sDVIIz}6?Vokf7a5|BJ@0)aLGTi-Tu{SufU zAbBQCK@9|w0=7P>?JNQWmVo4O69}{k*!s4K>zBX;0m(CA3Thyb6tMM4ZD$c6ummKJ zn?RsVz}B}-T)zY+2uPj@Q&0neq=2nYYCDSnfh8b$+ynw`0=B+w;`${pK|u0Mn1UJz zBn51JQrlSs2rL1~<0cSj6R`Dd6W1?+2?CO5!W7g%ASqz$liJQAKwt?-9yftNn}Drv zo49@nOc0Pf6Q-aB0!aZ|pVW310Rl@v^0)~E+5~KU+r;%tV1j_;nJ@)45J(Ex`lPnA z2oP8TlE+OT&?aE(+a|7G0uuxz&x9$cfk0Bg)+e={MS#E(kUVYzfi?kK-!^gm5||($ zc_vIj4Fr+`wmzxtECK|UfaGx#2($^<`nHMdm%s!8$unUJY9Nplu=Po8XAvN<1SF4} zK%h;)*0)VuzXT=-NS+B(Py>OafUQqzJBt8;B_Mg+1OjaWw!UrR`Xw+yK=MqOf*J@U z1#Ep%+gSt%ECI>mCJ<;7u=Q;d*Drwy0+MIK6x2W1Z;iV#Pv&Hf`H_iFa?i| zCQLyM1d;-_KB?_20tA+T1A(M~txsw@ivWQoAbH#b0&N1ezHQ?AB``ri@=Tb58VDo> zY<*JOSp*0y0mkQA`>No{8lAg}}^kDEZC zO~BT-OSyvXcMsYZ4=iofe8YVXTlWJKp-h#>yz5fB0yjXNFFzVK%0QAZ=1M& z2}}@>JQJp%1_DU|Tc6Z+76AfFK=QZ=1lj~_ecQzKOJIV4)R%-Ujh>ZB+rB?sDVIIz}6?Vokf7a5|BJ@0)aLGTi-Tu{SufUAbBQC zK@9|w0=7P>?JNQWmVo4O69}{k*!s4K>zBX;0m(CA3Thyb6tMM4ZD$c6ummKJn?RsV zz}B}-T)zY+2uPj@Q&0neq=2nYYCDSnfh8b$+ynw`0=B+w;`${pK|u0Mn1UJzBn51J zQrlSs2rL1~<0cSj6R`Dd6W1?+2?CO5!W7g%ASqz$liJQAKwt?-9yftNn}Drvo49@n zOc0Pf6Q-aB0!aZ|pVW310Rl@v^0)~E+5~KU+r;%tV1j_;nJ@)45J(Ex`lPnA2oP8T zlE+OT&?aE(+a|7G0uuxz&x9$cfk0Bg)+e={MS#E(kUVYzfi?kK-!^gm5||($c_vIj z4Fr+`wmzxtECK|UfaGx#2($^<`nHMdm%s!8$unUJY9Nplu=Po8XAvN<1SF4}K%h;) z*0)VuzXT=-NS+B(Py>OafUQqzJBt8;B_Mg+1OjaWw!UrR`Xw+yK=MqOf*J@U1#Ep% z+gSt%ECI>mCJ<;7u=Q;d*Drwy0+MIK6x2W1Z;iV#Pv&Hf`H_iFa?i|CQLyM z1d;-_KB?_20tA+T1A(M~txsw@ivWQoAbH#b0&N1ezHQ?AB``ri@=Tb58VDo>Y<*JO zSp*0y0mkQA`>No{8lAg}}^kDEZCO~BT- zOSyvXcMsYZ4=iofe8YVXTlWJKp-h#>yz5fB0yjXNFFzVK%0QAZ=1M&2}}@> zJQJp%1_DU|Tc6Z+76AfFK=QZ=1lj~_ecQzKOJIV4)R%-Ujh>ZB+rB?sDVIIz}6?Vokf7a5|BJ@0)aLGTi-Tu{SufUAbBQCK@9|w z0=7P>?JNQWmVo4O69}{k*!s4K>zBX;0m(CA3Thyb6tMM4ZD$c6ummKJn?RsVz}B}- zT)zY+2uPj@Q&0neq=2nYYCDSnfh8b$+ynw`0=B+w;`${pK|u0Mn1UJzBn51JQrlSs z2rL1~<0cSj6R`Dd6W1?+2?CO5!W7g%ASqz$liJQAKwt?-9yftNn}Drvo49@nOc0Pf z6Q-aB0!aZ|pVW310Rl@v^0)~E+5~KU+r;%tV1j_;nJ@)45J(Ex`lPnA2oP8TlE+OT z&?aE(+a|7G0uuxz&x9$cfk0Bg)+e={MS#E(kUVYzfi?kK-!^gm5||($c_vIj4Fr+` zwmzxtECK|UfaGx#2($^<`nHMdm%s!8$unUJY9Nplu=Po8XAvN<1SF4}K%h;)*0)Vu zzXT=-NS+B(Py>OafUQqzJBt8;B_Mg+1OjaWw!UrR`Xw+yK=MqOf*J@U1#Ep%+gSt% zECI>mCJ<;7u=Q;d*Drwy0+MIK6x2W1Z;iV#Pv&Hf`H_iFa?i|CQLyM1d;-_ zKB?_20tA+T1A(M~txsw@ivWQoAbH#b0&N1ezHQ?AB``ri@=Tb58VDo>Y<*JOSp*0y z0mQSvbaZb`t_U&}PT-?)}Zsq+{C$#aa7k0EeN0=E8Irs@60wMDYxQtCWLK=K@;VPxmjQ1SHR>aVUmBK)}`qkWX^No$oj9d&ypp z|Mzz9mstjdEevz@vh3BR`y-bONS@2jKm`P{0=7Qu z{q)lU?>GL-w*Ad*`=i_T{cZcvwtc*9|Lm=L?|Zp_;IsDcrhfR2;(u)0-`%!9zHPtv zr@xNzPk#D^qlX{%H{LpW{p%A7ICu^ZOc9VgQzoGf0x1DopOSv=Ip==AvH!7=?>t!J zoiFzfeAe&!>Fut%uKKQW57I5$c9vCDbc?JzbDFh+{wm!mq zf~d;d9nxqtYxe*NGr#Qtj?fBl|g{^?yG{B!Sq@M8;j_p|+I zmVo4$H4oJgIKP0cKfm#5PPp^^#?!vP=-~_ZKRlww$9~q|zw0f;;cup_lmFgbAN=Rv zt?ID_y!+XHG)qA8%$kR42%KNQ)}P<_G$)+({l@+k6z~1#@a6vD&kDTXc({P~cH{#t zC?I(*i0^0u7ZI@a7h!+Gp=W)+@#7;3I()zJ@Mrz{UB6^;+TTxkxPT*i@*x)!kUSTo zcQAnq3E27z!9V)gt9!rkt9QNM_>Ft|e%jZIdcScG=M_9Gd9GkcN+fVn0b74k&NDvQ z)xF=i@6W^j@Bry=-Sy7om_HBe{lz%z2DeH?)-jV z`*%Iv|3;PlTaSKw+xGV!``;LQ_&YUUZQC*5@5}p*vtPTj9UytmM(c?Q3>C2TLkDwE z)}8M+_SfZy|8M_mED+kMpE zNB`fp?XTTK^n_nvx#yWYe0c%MbNLylfIwEj)@Qw+e%kfE-`IQpaNGXF`+n?H% zw*CD5Lf&uOZ*zS=BYCcGW-2D|JONw(Jipv$U-kQq#k9Zc_{ZC}{}pe)wQc)f-1ghs z_CL4nH@9v7zUcekMf;2Iv-E!BeL~mt^OEP9rlnQ_rx399r%?191PDA%K=M4!%SRKq zegRv5{WH`7f$I~HJl8if6%%-#fUSR?pU);h;3)!<=P7DFhrl%p*!pXpp4tgqtAOOW z*2$@xz*7Zm{Zr+99svSR7mz$pxAU0A4`D1X#^zCX&gNZf$I^l z_17~il@hoe0m*Yav(yQJ;{u1kLbp&oxK=Rz?Ty;g@egRv5zm1g zlIL8qo|nK>0b4(HGU_65%L0<;mZz&X0(S}6`nyy-Mu5P11tiaTeLXvYc>=b6-b_?P z;PwS1&+X4xhXmdgu=VeH_z?jD2?5EIP<94^NdmTh(lpdUphZCPv`ku`1iluq^4xf2OoR>0O@*5By_ zIt3(8=iGJOEMV)Kr>}PcmlBXXmy&lbflCS4`b)_>mq4?CSyv zXcMsYZ4=iofe8YVXTlWJKp-h#>yz5fB0yjXNFFzVK%0QAZ=1M&2}}@>JQJp%1_DU| zTc6Z+76AfFK=QZ=1lj~_ecQzKOJIV4)R%- zUjh>ZB+rB?sDVIIz}6?Vokf7a5|BJ@0)aLGTi-Tu{SufUAbBQCK@9|w0=7P>?JNQW zmVo4O69}{k*!s4K>zBX;0m(CA3Thyb6tMM4ZD$c6ummKJn?RsVz}B}-T)zY+2uPj@ zQ&0neq=2nYYCDSnfh8b$+ynw`0=B+w;`${pK|u0Mn1UJzBn51JQrlSs2rL1~<0cSj z6R`Dd6W1?+2?CO5!W7g%ASqz$liJQAKwt?-9yftNn}Drvo49@nOc0Pf6Q-aB0!aZ| zpVW310Rl@v^0)~E+5~KU+r;%tV1j_;nJ@)45J(Ex`lPnA2oP8TlE+OT&?aE(+a|7G z0uuxz&x9$cfk0Bg)+e={MS#E(kUVYzfi?kK-!^gm5||($c_vIj4Fr+`wmzxtECK|U zfaGx#2($^<`nHMdm%s!8$unUJY9Nplu=Po8XAvN<1SF4}K%h;)*0)VuzXT=-NS+B( zPy>OafUQqzJBt8;B_Mg+1OjaWw!UrR`Xw+yK=MqOf*J@U1#Ep%+gSt%ECI>mCJ<;7 zu=Q;d*Drwy0+MIK6x2W1Z;iV#Pv&Hf`H_iFa?i|CQLyM1d;-_KB?_20tA+T zu0D-(fTi)uI zK(jzTVVp>S0D&dYoV|J{&?X@F2oNA}DS@`U)h~f&flK9#a|sY2(44(`C(tG!@dywg za4CVdywxv(W`RrPjB^PPAkdt>dMD5(An^zgAaE&xw!GCZfo6eA<&1L)5FpT;y?Q6m zCLr+$5Fl_VfwsKWFM(!(OXZAn2@oLAoV|J{&?fNZmtP7!0t5);1@`c1%Uk^tXcl<$ z=1o3loJfEGfjxYhvsdo~+62D%;tRP)fB=EKz#cwrd8=On%>u7py~^i|6A2I?u!m1` z_UfHLo4}`^ek%6}5Fn5j*u$qSZ}m%{S>WT3KhEcj6A2I?u!m1`_UfHLo4|_~FXSEp z0tE5`d-$~Ft$qoV3%q{)Iv+JoBtW29V2_>h;MG2XLIGdG(H#4FCvXt~U%XNHTBBtG zFJHdANZ>e>0D)S8J$7U-0Rn{rpMU;&ZSHBD0D-W;9yoU=NnJbH=|DAV6Rj@Eu31UI;Wx;M@Yfo2XY70tD_8 z@RsA;3GDd^ln8jUabL`OoB)9(;5SxEUJkTL;Cupp8^sF>0RqPe>|fvIPpq6Tiaj%d z8y483!xxAi6SF>s0D&d2|M@lFm*a+C6tqU*90Gf2_@l30LP?EA{^i@&e`9s>8}gU1OFAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 S2oNAZfB*pk1PI(I@c#g06?B3C literal 0 HcmV?d00001 diff --git a/splash/purism-librem5.ppm b/splash/purism-librem5.ppm new file mode 100644 index 0000000000000000000000000000000000000000..c0d8b702a7952573a85a2f11c88f27d406170d85 GIT binary patch literal 3110462 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

yfB*pk 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 z0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8< z2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|Drd zBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J- zkbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(T zKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU z0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb z1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ! z5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^ zNI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbndv zAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnw zfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz z0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8< z2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|Drd zBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J- zkbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(T zKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU z0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb z1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ! z5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^ mNI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SD`~1pW^Z$$~%t literal 0 HcmV?d00001 diff --git a/src/info-purism-librem5.sh b/src/info-purism-librem5.sh new file mode 100644 index 0000000..d59a7ba --- /dev/null +++ b/src/info-purism-librem5.sh @@ -0,0 +1,11 @@ +PLATFORM=purism-librem5 +MANUFACTURER=Purism +PRODUCT="Librem 5" +EMMC=/dev/mmcblk0 +SD=/dev/sda +LED=green:status +TRIGGER=mmc0 +ERRORLINES=80 +SERIAL_CON=ttymxc0 +SERIAL_BAUD=115200 +SLEEP=3 diff --git a/src/linux_config_librem5 b/src/linux_config_librem5 new file mode 100644 index 0000000..09dc0ed --- /dev/null +++ b/src/linux_config_librem5 @@ -0,0 +1,470 @@ +CONFIG_LOCALVERSION="jumpdrive" +CONFIG_SYSVIPC=y +CONFIG_POSIX_MQUEUE=y +CONFIG_GENERIC_IRQ_DEBUGFS=y +CONFIG_NO_HZ_IDLE=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_PREEMPT=y +CONFIG_BSD_PROCESS_ACCT=y +CONFIG_BSD_PROCESS_ACCT_V3=y +CONFIG_TASKSTATS=y +CONFIG_TASK_DELAY_ACCT=y +CONFIG_TASK_XACCT=y +CONFIG_TASK_IO_ACCOUNTING=y +CONFIG_PSI=y +CONFIG_PSI_DEFAULT_DISABLED=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_LOG_BUF_SHIFT=18 +CONFIG_MEMCG=y +CONFIG_BLK_CGROUP=y +CONFIG_CFS_BANDWIDTH=y +CONFIG_CGROUP_PIDS=y +CONFIG_CGROUP_FREEZER=y +CONFIG_CGROUP_HUGETLB=y +CONFIG_CPUSETS=y +CONFIG_CGROUP_DEVICE=y +CONFIG_CGROUP_CPUACCT=y +CONFIG_CGROUP_PERF=y +CONFIG_CGROUP_BPF=y +CONFIG_USER_NS=y +CONFIG_CHECKPOINT_RESTORE=y +CONFIG_SCHED_AUTOGROUP=y +CONFIG_RELAY=y +CONFIG_BLK_DEV_INITRD=y +CONFIG_KALLSYMS_ALL=y +CONFIG_BPF_SYSCALL=y +# CONFIG_COMPAT_BRK is not set +CONFIG_PROFILING=y +CONFIG_ARCH_MXC=y +# CONFIG_ARM64_ERRATUM_1165522 is not set +# CONFIG_ARM64_ERRATUM_1286807 is not set +CONFIG_ARM64_VA_BITS_48=y +CONFIG_SCHED_MC=y +CONFIG_SECCOMP=y +CONFIG_COMPAT=y +# CONFIG_ARM64_SVE is not set +CONFIG_RANDOMIZE_BASE=y +# CONFIG_EFI is not set +CONFIG_PM_DEBUG=y +CONFIG_WQ_POWER_EFFICIENT_DEFAULT=y +CONFIG_ENERGY_MODEL=y +CONFIG_CPU_IDLE=y +CONFIG_ARM_PSCI_CPUIDLE=y +CONFIG_CPU_FREQ=y +CONFIG_CPU_FREQ_STAT=y +CONFIG_CPU_FREQ_GOV_POWERSAVE=y +CONFIG_CPU_FREQ_GOV_USERSPACE=y +CONFIG_CPU_FREQ_GOV_ONDEMAND=y +CONFIG_CPUFREQ_DT=y +CONFIG_ARM_IMX_CPUFREQ_DT=y +CONFIG_ARM_SCPI_PROTOCOL=y +CONFIG_ARM64_CRYPTO=y +CONFIG_CRYPTO_SHA256_ARM64=y +CONFIG_CRYPTO_AES_ARM64_CE=y +CONFIG_JUMP_LABEL=y +CONFIG_BLK_DEV_THROTTLING=y +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +CONFIG_KSM=y +CONFIG_TRANSPARENT_HUGEPAGE=y +CONFIG_FRONTSWAP=y +CONFIG_ZSWAP=y +CONFIG_ZSMALLOC=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +CONFIG_IP_ADVANCED_ROUTER=y +CONFIG_IP_MULTIPLE_TABLES=y +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +CONFIG_IP_PNP_BOOTP=y +CONFIG_INET_DIAG_DESTROY=y +CONFIG_IPV6_ROUTER_PREF=y +CONFIG_IPV6_ROUTE_INFO=y +CONFIG_IPV6_OPTIMISTIC_DAD=y +CONFIG_IPV6_MULTIPLE_TABLES=y +CONFIG_NETFILTER=y +CONFIG_LLC2=y +CONFIG_NET_SCHED=y +CONFIG_NET_EMATCH=y +CONFIG_NET_CLS_ACT=y +CONFIG_MPLS=y +CONFIG_NET_L3_MASTER_DEV=y +CONFIG_CGROUP_NET_PRIO=y +CONFIG_CGROUP_NET_CLASSID=y +CONFIG_NET_9P=y +CONFIG_NET_9P_VIRTIO=y +CONFIG_FAILOVER=y +CONFIG_PCI=y +CONFIG_PCIEPORTBUS=y +CONFIG_PCIEAER=y +CONFIG_PCI_IOV=y +CONFIG_PCI_HOST_GENERIC=y +CONFIG_PCIE_XILINX=y +CONFIG_PCI_XGENE=y +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_IMX_WEIM=y +CONFIG_VEXPRESS_CONFIG=y +CONFIG_MTD=y +CONFIG_MTD_SPI_NOR=y +CONFIG_BLK_DEV_LOOP=y +CONFIG_SRAM=y +# CONFIG_SCSI_PROC_FS is not set +CONFIG_BLK_DEV_SD=y +CONFIG_SCSI_SAS_LIBSAS=y +CONFIG_SCSI_SAS_ATA=y +CONFIG_ATA=y +CONFIG_SATA_AHCI=y +CONFIG_SATA_AHCI_PLATFORM=y +# CONFIG_ATA_SFF is not set +CONFIG_MD=y +CONFIG_BLK_DEV_DM=y +CONFIG_DM_CRYPT=y +CONFIG_NETDEVICES=y +# CONFIG_NET_VENDOR_3COM is not set +# CONFIG_NET_VENDOR_ADAPTEC is not set +# CONFIG_NET_VENDOR_AGERE is not set +# CONFIG_NET_VENDOR_ALACRITECH is not set +# CONFIG_NET_VENDOR_ALTEON is not set +# CONFIG_NET_VENDOR_AMAZON is not set +# CONFIG_NET_VENDOR_AMD is not set +# CONFIG_NET_VENDOR_AQUANTIA is not set +# CONFIG_NET_VENDOR_ARC is not set +# CONFIG_NET_VENDOR_ATHEROS is not set +# CONFIG_NET_VENDOR_AURORA is not set +# CONFIG_NET_VENDOR_BROADCOM is not set +# CONFIG_NET_VENDOR_BROCADE is not set +# CONFIG_NET_VENDOR_CADENCE is not set +# CONFIG_NET_VENDOR_CAVIUM is not set +# CONFIG_NET_VENDOR_CHELSIO is not set +# CONFIG_NET_VENDOR_CISCO is not set +# CONFIG_NET_VENDOR_CORTINA is not set +# CONFIG_NET_VENDOR_DEC is not set +# CONFIG_NET_VENDOR_DLINK is not set +# CONFIG_NET_VENDOR_EMULEX is not set +# CONFIG_NET_VENDOR_EZCHIP is not set +CONFIG_FEC=y +# CONFIG_NET_VENDOR_HISILICON is not set +# CONFIG_NET_VENDOR_HUAWEI is not set +# CONFIG_NET_VENDOR_INTEL is not set +# CONFIG_NET_VENDOR_MARVELL is not set +# CONFIG_NET_VENDOR_MELLANOX is not set +# CONFIG_NET_VENDOR_MICREL is not set +# CONFIG_NET_VENDOR_MICROCHIP is not set +# CONFIG_NET_VENDOR_MICROSEMI is not set +# CONFIG_NET_VENDOR_MYRI is not set +# CONFIG_NET_VENDOR_NATSEMI is not set +# CONFIG_NET_VENDOR_NETERION is not set +# CONFIG_NET_VENDOR_NETRONOME is not set +# CONFIG_NET_VENDOR_NI is not set +# CONFIG_NET_VENDOR_NVIDIA is not set +# CONFIG_NET_VENDOR_OKI is not set +# CONFIG_NET_VENDOR_PACKET_ENGINES is not set +# CONFIG_NET_VENDOR_QLOGIC is not set +# CONFIG_NET_VENDOR_QUALCOMM is not set +# CONFIG_NET_VENDOR_RDC is not set +# CONFIG_NET_VENDOR_REALTEK is not set +# CONFIG_NET_VENDOR_RENESAS is not set +# CONFIG_NET_VENDOR_ROCKER is not set +# CONFIG_NET_VENDOR_SAMSUNG is not set +# CONFIG_NET_VENDOR_SEEQ is not set +# CONFIG_NET_VENDOR_SOLARFLARE is not set +# CONFIG_NET_VENDOR_SILAN is not set +# CONFIG_NET_VENDOR_SIS is not set +# CONFIG_NET_VENDOR_SMSC is not set +# CONFIG_NET_VENDOR_SOCIONEXT is not set +# CONFIG_NET_VENDOR_STMICRO is not set +# CONFIG_NET_VENDOR_SUN is not set +# CONFIG_NET_VENDOR_SYNOPSYS is not set +# CONFIG_NET_VENDOR_TEHUTI is not set +# CONFIG_NET_VENDOR_TI is not set +# CONFIG_NET_VENDOR_VIA is not set +# CONFIG_NET_VENDOR_WIZNET is not set +# CONFIG_WLAN_VENDOR_ADMTEK is not set +# CONFIG_WLAN_VENDOR_ATH is not set +# CONFIG_WLAN_VENDOR_ATMEL is not set +# CONFIG_WLAN_VENDOR_BROADCOM is not set +# CONFIG_WLAN_VENDOR_CISCO is not set +# CONFIG_WLAN_VENDOR_INTEL is not set +# CONFIG_WLAN_VENDOR_INTERSIL is not set +# CONFIG_WLAN_VENDOR_MARVELL is not set +# CONFIG_WLAN_VENDOR_MEDIATEK is not set +# CONFIG_WLAN_VENDOR_RALINK is not set +# CONFIG_WLAN_VENDOR_REALTEK is not set +# CONFIG_WLAN_VENDOR_RSI is not set +# CONFIG_WLAN_VENDOR_REDPINE is not set +# CONFIG_WLAN_VENDOR_ST is not set +# CONFIG_WLAN_VENDOR_TI is not set +# CONFIG_WLAN_VENDOR_ZYDAS is not set +# CONFIG_WLAN_VENDOR_QUANTENNA is not set +CONFIG_INPUT_POLLDEV=y +CONFIG_INPUT_MATRIXKMAP=y +CONFIG_INPUT_EVDEV=y +# CONFIG_KEYBOARD_ATKBD is not set +CONFIG_KEYBOARD_GPIO=y +CONFIG_KEYBOARD_SNVS_PWRKEY=y +CONFIG_KEYBOARD_IMX=y +# CONFIG_MOUSE_PS2 is not set +CONFIG_INPUT_JOYSTICK=y +CONFIG_INPUT_TABLET=y +CONFIG_INPUT_TOUCHSCREEN=y +CONFIG_INPUT_MISC=y +CONFIG_LEGACY_PTY_COUNT=16 +CONFIG_SERIAL_8250=y +# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set +CONFIG_SERIAL_8250_CONSOLE=y +# CONFIG_SERIAL_8250_EXAR is not set +CONFIG_SERIAL_8250_DW=y +CONFIG_SERIAL_OF_PLATFORM=y +CONFIG_SERIAL_AMBA_PL011=y +CONFIG_SERIAL_AMBA_PL011_CONSOLE=y +CONFIG_SERIAL_IMX=y +CONFIG_SERIAL_IMX_CONSOLE=y +CONFIG_SERIAL_FSL_LPUART=y +CONFIG_SERIAL_FSL_LPUART_CONSOLE=y +CONFIG_SERIAL_DEV_BUS=y +# CONFIG_HW_RANDOM_CAVIUM is not set +CONFIG_I2C_CHARDEV=y +CONFIG_I2C_MUX=y +CONFIG_I2C_MUX_PCA954x=y +CONFIG_I2C_DESIGNWARE_PLATFORM=y +CONFIG_I2C_IMX=y +CONFIG_I2C_IMX_LPI2C=y +CONFIG_I2C_SLAVE=y +CONFIG_SPI=y +CONFIG_SPI_MEM=y +CONFIG_SPI_FSL_LPSPI=y +CONFIG_SPI_IMX=y +CONFIG_SPI_SPIDEV=y +CONFIG_SPMI=y +CONFIG_PINCTRL=y +CONFIG_PINCTRL_SINGLE=y +CONFIG_PINCTRL_MAX77620=y +CONFIG_PINCTRL_IMX8MQ=y +CONFIG_GPIOLIB=y +CONFIG_GPIO_SYSFS=y +CONFIG_GPIO_DWAPB=y +CONFIG_GPIO_PL061=y +CONFIG_GPIO_XGENE=y +CONFIG_GPIO_PCA953X=y +CONFIG_GPIO_PCA953X_IRQ=y +CONFIG_GPIO_MAX77620=y +CONFIG_POWER_AVS=y +CONFIG_POWER_RESET_VEXPRESS=y +CONFIG_POWER_RESET_SYSCON=y +CONFIG_POWER_RESET_SYSCON_POWEROFF=y +CONFIG_SYSCON_REBOOT_MODE=y +CONFIG_SENSORS_ARM_SCPI=y +CONFIG_THERMAL_WRITABLE_TRIPS=y +CONFIG_THERMAL_GOV_POWER_ALLOCATOR=y +CONFIG_CPU_THERMAL=y +CONFIG_CPU_IDLE_THERMAL=y +CONFIG_DEVFREQ_THERMAL=y +CONFIG_THERMAL_EMULATION=y +CONFIG_IMX_THERMAL=y +CONFIG_QORIQ_THERMAL=y +CONFIG_WATCHDOG=y +CONFIG_MFD_MAX77620=y +CONFIG_MFD_ROHM_BD718XX=y +CONFIG_REGULATOR=y +CONFIG_REGULATOR_FIXED_VOLTAGE=y +CONFIG_REGULATOR_BD718XX=y +CONFIG_REGULATOR_GPIO=y +CONFIG_REGULATOR_MAX77620=y +CONFIG_REGULATOR_PFUZE100=y +CONFIG_REGULATOR_PWM=y +CONFIG_REGULATOR_QCOM_SPMI=y +CONFIG_REGULATOR_TPS51632=y +CONFIG_REGULATOR_TPS65132=y +CONFIG_DRM=y +CONFIG_DRM_DP_AUX_CHARDEV=y +CONFIG_DRM_LOAD_EDID_FIRMWARE=y +CONFIG_DRM_DP_CEC=y +CONFIG_DRM_PANEL_MANTIX_MLAF057WE51=y +CONFIG_DRM_PANEL_SITRONIX_ST7703=y +CONFIG_DRM_NWL_MIPI_DSI=y +CONFIG_DRM_I2C_ADV7511=y +CONFIG_DRM_ETNAVIV=y +CONFIG_DRM_MXSFB=y +CONFIG_FB_MODE_HELPERS=y +CONFIG_BACKLIGHT_CLASS_DEVICE=y +CONFIG_BACKLIGHT_PWM=y +CONFIG_BACKLIGHT_LED=y +CONFIG_LOGO=y +# CONFIG_LOGO_LINUX_MONO is not set +# CONFIG_LOGO_LINUX_VGA16 is not set +CONFIG_HID_BATTERY_STRENGTH=y +CONFIG_HIDRAW=y +CONFIG_USB=y +CONFIG_USB_OTG=y +CONFIG_USB_XHCI_HCD=y +CONFIG_USB_STORAGE=y +CONFIG_USB_DWC3=y +CONFIG_USB_ULPI=y +CONFIG_USB_GADGET=y +CONFIG_U_SERIAL_CONSOLE=y +CONFIG_USB_FSL_USB2=y +CONFIG_USB_CONFIGFS=y +CONFIG_USB_CONFIGFS_SERIAL=y +CONFIG_USB_CONFIGFS_ACM=y +CONFIG_USB_CONFIGFS_OBEX=y +CONFIG_USB_CONFIGFS_NCM=y +CONFIG_USB_CONFIGFS_ECM=y +CONFIG_USB_CONFIGFS_ECM_SUBSET=y +CONFIG_USB_CONFIGFS_RNDIS=y +CONFIG_USB_CONFIGFS_EEM=y +CONFIG_USB_CONFIGFS_MASS_STORAGE=y +CONFIG_USB_CONFIGFS_F_LB_SS=y +CONFIG_USB_CONFIGFS_F_FS=y +CONFIG_USB_CONFIGFS_F_HID=y +CONFIG_USB_CONFIGFS_F_PRINTER=y +CONFIG_TYPEC=y +CONFIG_TYPEC_TPS6598X=y +CONFIG_MMC=y +CONFIG_MMC_BLOCK_MINORS=32 +CONFIG_MMC_ARMMMCI=y +CONFIG_MMC_SDHCI=y +CONFIG_MMC_SDHCI_PLTFM=y +CONFIG_MMC_SDHCI_ESDHC_IMX=y +CONFIG_MMC_SPI=y +CONFIG_NEW_LEDS=y +CONFIG_LEDS_CLASS=y +CONFIG_LEDS_CLASS_FLASH=y +CONFIG_LEDS_LM3692X=y +CONFIG_LEDS_GPIO=y +CONFIG_LEDS_PWM=y +CONFIG_LEDS_SYSCON=y +CONFIG_LEDS_TRIGGERS=y +CONFIG_LEDS_TRIGGER_DISK=y +CONFIG_LEDS_TRIGGER_HEARTBEAT=y +CONFIG_LEDS_TRIGGER_BACKLIGHT=y +CONFIG_LEDS_TRIGGER_CPU=y +CONFIG_LEDS_TRIGGER_GPIO=y +CONFIG_LEDS_TRIGGER_PANIC=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_DRV_MAX77686=y +CONFIG_RTC_DRV_M41T80=y +CONFIG_RTC_DRV_DS3232=y +CONFIG_RTC_DRV_PL031=y +CONFIG_RTC_DRV_SNVS=y +CONFIG_DMADEVICES=y +# CONFIG_MX3_IPU is not set +# CONFIG_VIRTIO_MENU is not set +CONFIG_COMMON_CLK_FIXED_MMIO=y +CONFIG_CLK_IMX8MQ=y +# CONFIG_HISILICON_ERRATUM_161010101 is not set +# CONFIG_ARM64_ERRATUM_858921 is not set +CONFIG_MAILBOX=y +CONFIG_ARM_MHU=y +CONFIG_IMX_MBOX=y +CONFIG_ARM_SMMU=y +CONFIG_ARM_SMMU_V3=y +CONFIG_RPMSG_VIRTIO=y +CONFIG_PM_DEVFREQ=y +CONFIG_DEVFREQ_GOV_PERFORMANCE=y +CONFIG_DEVFREQ_GOV_POWERSAVE=y +CONFIG_ARM_IMX_BUS_DEVFREQ=y +CONFIG_ARM_IMX8M_DDRC_DEVFREQ=y +CONFIG_PM_DEVFREQ_EVENT=y +CONFIG_IIO=y +CONFIG_IIO_BUFFER=y +CONFIG_IIO_TRIGGER=y +CONFIG_PWM=y +CONFIG_PWM_IMX27=y +CONFIG_RESET_CONTROLLER=y +CONFIG_PHY_XGENE=y +CONFIG_PHY_MIXEL_MIPI_DPHY=y +CONFIG_POWERCAP=y +CONFIG_IDLE_INJECT=y +CONFIG_FSL_IMX8_DDR_PMU=y +CONFIG_ANDROID=y +CONFIG_ANDROID_BINDER_IPC=y +CONFIG_NVMEM_IMX_OCOTP=y +CONFIG_MUX_MMIO=y +CONFIG_INTERCONNECT=y +CONFIG_INTERCONNECT_IMX=y +CONFIG_INTERCONNECT_IMX8MQ=y +CONFIG_EXT2_FS=y +CONFIG_EXT3_FS=y +CONFIG_EXT4_FS_POSIX_ACL=y +CONFIG_EXT4_FS_SECURITY=y +CONFIG_F2FS_FS=y +CONFIG_F2FS_FS_SECURITY=y +CONFIG_F2FS_CHECK_FS=y +CONFIG_FS_ENCRYPTION=y +CONFIG_FS_VERITY=y +CONFIG_FS_VERITY_BUILTIN_SIGNATURES=y +CONFIG_FANOTIFY=y +CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y +CONFIG_QUOTA=y +CONFIG_AUTOFS4_FS=y +CONFIG_VFAT_FS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_HUGETLBFS=y +CONFIG_SQUASHFS=y +CONFIG_SQUASHFS_XATTR=y +CONFIG_SQUASHFS_LZ4=y +CONFIG_SQUASHFS_LZO=y +CONFIG_SQUASHFS_XZ=y +CONFIG_SQUASHFS_ZSTD=y +CONFIG_NFS_FS=y +# CONFIG_NFS_V2 is not set +CONFIG_NFS_V4=y +CONFIG_NFS_SWAP=y +CONFIG_NFS_V4_1=y +CONFIG_NFS_V4_2=y +CONFIG_ROOT_NFS=y +# CONFIG_RPCSEC_GSS_KRB5 is not set +CONFIG_SUNRPC_DEBUG=y +CONFIG_NLS_CODEPAGE_437=y +CONFIG_NLS_ISO8859_1=y +CONFIG_KEY_DH_OPERATIONS=y +CONFIG_SECURITY_DMESG_RESTRICT=y +CONFIG_SECURITY=y +CONFIG_HARDENED_USERCOPY=y +CONFIG_FORTIFY_SOURCE=y +CONFIG_SECURITY_SELINUX=y +CONFIG_SECURITY_SELINUX_BOOTPARAM=y +CONFIG_SECURITY_APPARMOR=y +# CONFIG_INTEGRITY is not set +CONFIG_DEFAULT_SECURITY_DAC=y +CONFIG_CRYPTO_CRYPTD=y +CONFIG_CRYPTO_ECDH=y +CONFIG_CRYPTO_CCM=y +CONFIG_CRYPTO_GCM=y +CONFIG_CRYPTO_CHACHA20POLY1305=y +CONFIG_CRYPTO_SEQIV=y +CONFIG_CRYPTO_ECHAINIV=y +CONFIG_CRYPTO_LRW=y +CONFIG_CRYPTO_CMAC=y +CONFIG_CRYPTO_MD4=y +CONFIG_CRYPTO_MD5=y +CONFIG_CRYPTO_ARC4=y +CONFIG_CRYPTO_BLOWFISH=y +CONFIG_CRYPTO_CAMELLIA=y +CONFIG_CRYPTO_CAST5=y +CONFIG_CRYPTO_CAST6=y +CONFIG_CRYPTO_DES=y +CONFIG_CRYPTO_SERPENT=y +CONFIG_CRYPTO_TWOFISH=y +CONFIG_CRYPTO_DEFLATE=y +CONFIG_CRYPTO_ANSI_CPRNG=y +CONFIG_CRC_T10DIF=y +CONFIG_CRC64=y +CONFIG_CMA_SIZE_MBYTES=320 +CONFIG_PRINTK_TIME=y +CONFIG_DYNAMIC_DEBUG=y +CONFIG_MAGIC_SYSRQ=y +CONFIG_DEBUG_KERNEL=y +CONFIG_DETECT_HUNG_TASK=y +# CONFIG_SCHED_DEBUG is not set +# CONFIG_DEBUG_PREEMPT is not set +CONFIG_FUNCTION_TRACER=y +CONFIG_FTRACE_SYSCALLS=y +CONFIG_TRACER_SNAPSHOT=y +# CONFIG_STRICT_DEVMEM is not set +# CONFIG_RUNTIME_TESTING_MENU is not set +CONFIG_MEMTEST=y diff --git a/src/purism-librem5.txt b/src/purism-librem5.txt new file mode 100644 index 0000000..db5c3c2 --- /dev/null +++ b/src/purism-librem5.txt @@ -0,0 +1,29 @@ +uuu_version 1.0.1 +CFG: FB: -vid 0x316d -pid 0x4c05 +CFG: SDP: -chip MX8MQ -compatible MX8MQ -vid 0x316d -pid 0x4c05 + +SDP: boot -f ../u-boot-librem5.bin +SDPU: delay 1000 +SDPU: write -f ../u-boot-librem5.bin -offset 0x57c00 +SDPU: jump + +SDPV: delay 1000 +SDPV: write -f ../u-boot-librem5.bin -skipspl +SDPV: jump + +SDPS: boot -f ../u-boot-librem5.bin +SDPS: delay 1000 + +FB: ucmd setenv bootargs console=tty0 quiet loglevel=0 vt.global_cursor_default=0 + +FB: ucmd setenv fastboot_buffer 0x40000000 +FB: download -f ../kernel-librem5.gz +FB: ucmd setenv fastboot_buffer 0x44000000 +FB: download -f ../dtbs/librem5/imx8mq-librem5-r4.dtb +FB: ucmd setenv fastboot_buffer 0x44800000 +FB: download -f ../initramfs-purism-librem5.gz + +FB: ucmd unzip 0x40000000 0x41000000 + +FB: acmd booti 0x41000000 0x44800000:${fastboot_bytes} 0x44000000 +FB: Done