2019-08-17 18:42:22 +02:00
{ stdenv , lib , buildPackages , fetchFromGitHub , perl , buildLinux , rpiVersion , . . . } @ args :
2012-12-27 22:29:56 +01:00
2013-08-27 12:05:13 +02:00
let
2020-12-10 14:36:14 +01:00
# NOTE: raspberrypifw & raspberryPiWirelessFirmware should be updated with this
2021-08-03 02:38:39 +02:00
modDirVersion = " 5 . 1 0 . 5 2 " ;
2021-08-06 19:41:10 +02:00
tag = " 1 . 2 0 2 1 0 8 0 5 " ;
2016-07-04 00:50:37 +02:00
in
2019-08-13 23:52:01 +02:00
lib . overrideDerivation ( buildLinux ( args // {
2016-07-04 00:50:37 +02:00
version = " ${ modDirVersion } - ${ tag } " ;
inherit modDirVersion ;
2013-01-29 00:42:36 +01:00
2016-07-04 00:50:37 +02:00
src = fetchFromGitHub {
owner = " r a s p b e r r y p i " ;
repo = " l i n u x " ;
2021-08-03 02:38:39 +02:00
rev = tag ;
2021-08-06 19:41:10 +02:00
sha256 = " 1 j 7 1 x b l f l s l f i 4 c 3 z x 2 s r w 6 f a h n h p 3 b j x 4 y j f q r p 3 9 k z a a 4 1 i j 0 b " ;
2013-07-31 23:56:48 +02:00
} ;
2012-12-27 22:29:56 +01:00
2017-11-03 14:50:19 +01:00
defconfig = {
2019-08-17 18:42:22 +02:00
" 1 " = " b c m r p i _ d e f c o n f i g " ;
" 2 " = " b c m 2 7 0 9 _ d e f c o n f i g " ;
2020-05-12 19:45:35 +02:00
" 3 " = if stdenv . hostPlatform . isAarch64 then " b c m r p i 3 _ d e f c o n f i g " else " b c m 2 7 0 9 _ d e f c o n f i g " ;
2019-08-17 18:42:22 +02:00
" 4 " = " b c m 2 7 1 1 _ d e f c o n f i g " ;
} . ${ toString rpiVersion } ;
2017-11-03 14:50:19 +01:00
2017-09-15 23:07:14 +02:00
features = {
efiBootStub = false ;
} // ( args . features or { } ) ;
2012-12-27 22:29:56 +01:00
2021-02-17 04:42:51 +01:00
extraConfig = ''
# ../drivers/gpu/drm/ast/ast_mode.c:851:18: error: initialization of 'void (*)(struct drm_crtc *, struct drm_atomic_state *)' from incompatible pointer type 'void (*)(struct drm_crtc *, struct drm_crtc_state *)' [-Werror=incompatible-pointer-types]
# 851 | .atomic_flush = ast_crtc_helper_atomic_flush,
# | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
# ../drivers/gpu/drm/ast/ast_mode.c:851:18: note: (near initialization for 'ast_crtc_helper_funcs.atomic_flush')
DRM_AST n
2021-08-03 02:38:39 +02:00
# ../drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c: In function 'amdgpu_dm_atomic_commit_tail':
# ../drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c:7757:4: error: implicit declaration of function 'is_hdr_metadata_different' [-Werror=implicit-function-declaration]
# 7757 | is_hdr_metadata_different(old_con_state, new_con_state);
# | ^~~~~~~~~~~~~~~~~~~~~~~~~
DRM_AMDGPU n
2021-02-17 04:42:51 +01:00
'' ;
2019-08-17 18:42:22 +02:00
extraMeta = if ( rpiVersion < 3 ) then {
platforms = with lib . platforms ; [ arm ] ;
hydraPlatforms = [ ] ;
} else {
platforms = with lib . platforms ; [ arm aarch64 ] ;
hydraPlatforms = [ " a a r c h 6 4 - l i n u x " ] ;
} ;
2019-09-28 03:45:20 +02:00
} // ( args . argsOverride or { } ) ) ) ( oldAttrs : {
2016-07-04 00:50:37 +02:00
postConfigure = ''
# The v7 defconfig has this set to '-v7' which screws up our modDirVersion.
sed - i $ buildRoot/.config - e ' s / ^ CONFIG_LOCALVERSION = . * /CONFIG_LOCALVERSION = " " / '
2019-08-17 18:42:22 +02:00
sed - i $ buildRoot/include/config/auto.conf - e ' s / ^ CONFIG_LOCALVERSION = . * /CONFIG_LOCALVERSION = " " / '
2016-07-04 00:50:37 +02:00
'' ;
2018-09-10 06:15:51 +02:00
# Make copies of the DTBs named after the upstream names so that U-Boot finds them.
# This is ugly as heck, but I don't know a better solution so far.
2018-09-20 15:41:04 +02:00
postFixup = ''
dtbDir = $ { if stdenv . isAarch64 then " $ o u t / d t b s / b r o a d c o m " else " $ o u t / d t b s " }
rm $ dtbDir/bcm283 * . dtb
2018-09-10 06:15:51 +02:00
copyDTB ( ) {
2018-09-20 15:41:04 +02:00
cp - v " $ d t b D i r / $ 1 " " $ d t b D i r / $ 2 "
2018-09-10 06:15:51 +02:00
}
2018-09-20 15:41:04 +02:00
'' + l i b . o p t i o n a l S t r i n g ( l i b . e l e m s t d e n v . h o s t P l a t f o r m . s y s t e m [ " a r m v 6 l - l i n u x " ] ) ''
2019-09-28 23:52:58 +02:00
copyDTB bcm2708-rpi-zero-w . dtb bcm2835-rpi-zero . dtb
copyDTB bcm2708-rpi-zero-w . dtb bcm2835-rpi-zero-w . dtb
2016-07-04 00:50:37 +02:00
copyDTB bcm2708-rpi-b . dtb bcm2835-rpi-a . dtb
copyDTB bcm2708-rpi-b . dtb bcm2835-rpi-b . dtb
copyDTB bcm2708-rpi-b . dtb bcm2835-rpi-b-rev2 . dtb
copyDTB bcm2708-rpi-b-plus . dtb bcm2835-rpi-a-plus . dtb
copyDTB bcm2708-rpi-b-plus . dtb bcm2835-rpi-b-plus . dtb
copyDTB bcm2708-rpi-b-plus . dtb bcm2835-rpi-zero . dtb
copyDTB bcm2708-rpi-cm . dtb bcm2835-rpi-cm . dtb
2018-09-20 15:41:04 +02:00
'' + l i b . o p t i o n a l S t r i n g ( l i b . e l e m s t d e n v . h o s t P l a t f o r m . s y s t e m [ " a r m v 7 l - l i n u x " ] ) ''
2016-07-04 00:50:37 +02:00
copyDTB bcm2709-rpi-2-b . dtb bcm2836-rpi-2-b . dtb
2018-09-20 15:41:04 +02:00
'' + l i b . o p t i o n a l S t r i n g ( l i b . e l e m s t d e n v . h o s t P l a t f o r m . s y s t e m [ " a r m v 7 l - l i n u x " " a a r c h 6 4 - l i n u x " ] ) ''
2016-07-04 00:50:37 +02:00
copyDTB bcm2710-rpi-3-b . dtb bcm2837-rpi-3-b . dtb
2019-09-22 01:51:04 +02:00
copyDTB bcm2710-rpi-3-b-plus . dtb bcm2837-rpi-3-a-plus . dtb
2018-05-07 20:59:15 +02:00
copyDTB bcm2710-rpi-3-b-plus . dtb bcm2837-rpi-3-b-plus . dtb
copyDTB bcm2710-rpi-cm3 . dtb bcm2837-rpi-cm3 . dtb
2019-08-17 18:42:22 +02:00
copyDTB bcm2711-rpi-4-b . dtb bcm2838-rpi-4-b . dtb
2016-07-04 00:50:37 +02:00
'' ;
2013-07-31 23:56:48 +02:00
} )