2020-04-24 23:36:52 +00:00
{ stdenv , lib , buildPackages , fetchFromGitHub , perl , buildLinux , rpiVersion , . . . } @ args :
let
2020-12-29 15:07:52 +00:00
# NOTE: raspberrypifw & raspberryPiWirelessFirmware should be updated with this
2023-01-20 10:41:00 +00:00
modDirVersion = " 5 . 1 5 . 8 4 " ;
tag = " 1 . 2 0 2 3 0 1 0 6 " ;
2020-04-24 23:36:52 +00:00
in
lib . overrideDerivation ( buildLinux ( args // {
version = " ${ modDirVersion } - ${ tag } " ;
inherit modDirVersion ;
src = fetchFromGitHub {
owner = " r a s p b e r r y p i " ;
repo = " l i n u x " ;
2022-04-27 09:35:20 +00:00
rev = tag ;
2023-01-20 10:41:00 +00:00
hash = " s h a 5 1 2 - 6 D c p o 8 1 J B v c 8 N O v 1 n v O 8 J w j U g O O v i R g H m X L L c G p E / p I 2 l E O c S e D R l B / F Z t f l z X T G i l a p v m w O S x 5 N x Q f A m y s H q Q = = " ;
2020-04-24 23:36:52 +00:00
} ;
defconfig = {
" 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-15 21:57:56 +00: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 " ;
2020-04-24 23:36:52 +00:00
" 4 " = " b c m 2 7 1 1 _ d e f c o n f i g " ;
} . ${ toString rpiVersion } ;
features = {
efiBootStub = false ;
} // ( args . features or { } ) ;
2021-04-05 15:23:46 +00: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-06 21:57:35 +00: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-04-05 15:23:46 +00:00
'' ;
2020-04-24 23:36:52 +00:00
extraMeta = if ( rpiVersion < 3 ) then {
2023-01-11 07:51:40 +00:00
platforms = with lib . platforms ; arm ;
2020-04-24 23:36:52 +00:00
hydraPlatforms = [ ] ;
} else {
2023-01-11 07:51:40 +00:00
platforms = with lib . platforms ; arm ++ aarch64 ;
2020-04-24 23:36:52 +00:00
hydraPlatforms = [ " a a r c h 6 4 - l i n u x " ] ;
} ;
} // ( args . argsOverride or { } ) ) ) ( oldAttrs : {
postConfigure = ''
# The v7 defconfig has this set to '-v7' which screws up our modDirVersion.
sed - i $ buildRoot/.config - e ' s / ^ CONFIG_LOCALVERSION = . * /CONFIG_LOCALVERSION = " " / '
sed - i $ buildRoot/include/config/auto.conf - e ' s / ^ CONFIG_LOCALVERSION = . * /CONFIG_LOCALVERSION = " " / '
'' ;
# 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.
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
copyDTB ( ) {
cp - v " $ d t b D i r / $ 1 " " $ d t b D i r / $ 2 "
}
'' + 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 " ] ) ''
copyDTB bcm2708-rpi-zero-w . dtb bcm2835-rpi-zero . dtb
copyDTB bcm2708-rpi-zero-w . dtb bcm2835-rpi-zero-w . dtb
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
'' + 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 " ] ) ''
copyDTB bcm2709-rpi-2-b . dtb bcm2836-rpi-2-b . dtb
'' + 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 " ] ) ''
2022-03-05 16:20:37 +00:00
copyDTB bcm2710-rpi-zero-2 . dtb bcm2837-rpi-zero-2 . dtb
2020-04-24 23:36:52 +00:00
copyDTB bcm2710-rpi-3-b . dtb bcm2837-rpi-3-b . dtb
copyDTB bcm2710-rpi-3-b-plus . dtb bcm2837-rpi-3-a-plus . dtb
copyDTB bcm2710-rpi-3-b-plus . dtb bcm2837-rpi-3-b-plus . dtb
copyDTB bcm2710-rpi-cm3 . dtb bcm2837-rpi-cm3 . dtb
copyDTB bcm2711-rpi-4-b . dtb bcm2838-rpi-4-b . dtb
'' ;
} )