2019-08-17 16:42:22 +00:00
{ stdenv , lib , buildPackages , fetchFromGitHub , perl , buildLinux , rpiVersion , . . . } @ args :
2012-12-27 21:29:56 +00:00
2013-08-27 10:05:13 +00:00
let
2020-12-10 13:36:14 +00:00
# NOTE: raspberrypifw & raspberryPiWirelessFirmware should be updated with this
2022-04-06 04:39:44 +00:00
modDirVersion = " 5 . 1 5 . 3 2 " ;
tag = " 1 . 2 0 2 2 0 3 3 1 " ;
2016-07-03 22:50:37 +00:00
in
2019-08-13 21:52:01 +00:00
lib . overrideDerivation ( buildLinux ( args // {
2016-07-03 22:50:37 +00:00
version = " ${ modDirVersion } - ${ tag } " ;
inherit modDirVersion ;
2013-01-28 23:42:36 +00:00
2016-07-03 22:50:37 +00:00
src = fetchFromGitHub {
owner = " r a s p b e r r y p i " ;
repo = " l i n u x " ;
2022-04-06 04:39:44 +00:00
rev = tag ;
hash = " s h a 2 5 6 - d J t O X e 4 y v Z z / i u 0 L y 5 F 9 / E / 2 G b p T J F / 9 Z M U 3 r C 1 n K M w = " ;
2013-07-31 21:56:48 +00:00
} ;
2012-12-27 21:29:56 +00:00
2017-11-03 13:50:19 +00:00
defconfig = {
2019-08-17 16:42:22 +00: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 17:45:35 +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 " ;
2019-08-17 16:42:22 +00:00
" 4 " = " b c m 2 7 1 1 _ d e f c o n f i g " ;
} . ${ toString rpiVersion } ;
2017-11-03 13:50:19 +00:00
2017-09-15 21:07:14 +00:00
features = {
efiBootStub = false ;
} // ( args . features or { } ) ;
2012-12-27 21:29:56 +00:00
2021-02-17 03:42:51 +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-03 00:38:39 +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-02-17 03:42:51 +00:00
'' ;
2019-08-17 16:42:22 +00: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 01:45:20 +00:00
} // ( args . argsOverride or { } ) ) ) ( oldAttrs : {
2016-07-03 22:50:37 +00: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 16:42:22 +00:00
sed - i $ buildRoot/include/config/auto.conf - e ' s / ^ CONFIG_LOCALVERSION = . * /CONFIG_LOCALVERSION = " " / '
2016-07-03 22:50:37 +00:00
'' ;
2018-09-10 04:15:51 +00: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 13:41:04 +00: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 04:15:51 +00:00
copyDTB ( ) {
2018-09-20 13:41:04 +00:00
cp - v " $ d t b D i r / $ 1 " " $ d t b D i r / $ 2 "
2018-09-10 04:15:51 +00:00
}
2018-09-20 13:41:04 +00: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 21:52:58 +00:00
copyDTB bcm2708-rpi-zero-w . dtb bcm2835-rpi-zero . dtb
copyDTB bcm2708-rpi-zero-w . dtb bcm2835-rpi-zero-w . dtb
2016-07-03 22:50:37 +00: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 13:41:04 +00: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-03 22:50:37 +00:00
copyDTB bcm2709-rpi-2-b . dtb bcm2836-rpi-2-b . dtb
2018-09-20 13:41:04 +00: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 " ] ) ''
2021-11-04 19:01:01 +00:00
copyDTB bcm2710-rpi-zero-2 . dtb bcm2837-rpi-zero-2 . dtb
2016-07-03 22:50:37 +00:00
copyDTB bcm2710-rpi-3-b . dtb bcm2837-rpi-3-b . dtb
2019-09-21 23:51:04 +00:00
copyDTB bcm2710-rpi-3-b-plus . dtb bcm2837-rpi-3-a-plus . dtb
2018-05-07 18:59:15 +00: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 16:42:22 +00:00
copyDTB bcm2711-rpi-4-b . dtb bcm2838-rpi-4-b . dtb
2016-07-03 22:50:37 +00:00
'' ;
2013-07-31 21:56:48 +00:00
} )