gnu: raspberry-pi: Add helpers for config.txt file generation.

* gnu/packages/raspberry-pi.scm (raspi-config-file, raspi-custom-txt):
New functions.
(%raspi-config-txt, %raspi-bcm27-dtb-txt, %raspi-bcm28-dtb-txt
%raspi-u-boot-bootloader-txt): New variables.

Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
This commit is contained in:
Stefan 2022-12-01 13:18:14 -05:00 committed by Maxim Cournoyer
parent 13f9110e5f
commit 4e2e4b222f
No known key found for this signature in database
GPG key ID: 1260E46482E63562

View file

@ -42,7 +42,9 @@ (define-module (gnu packages raspberry-pi)
#:use-module (srfi srfi-1) #:use-module (srfi srfi-1)
#:use-module (srfi srfi-2) #:use-module (srfi srfi-2)
#:use-module (srfi srfi-26) #:use-module (srfi srfi-26)
#:use-module (ice-9 match)) #:use-module (ice-9 match)
#:export (raspi-config-file
raspi-custom-txt))
(define-public bcm2835 (define-public bcm2835
(package (package
@ -238,6 +240,59 @@ (define-public raspi-arm64-chainloader
#t)))))))) #t))))))))
(supported-systems '("aarch64-linux")))) (supported-systems '("aarch64-linux"))))
(define (raspi-config-file name content)
"Make a configuration file like config.txt for the Raspberry Pi firmware.
CONTENT can be a list of strings, which are concatenated with a newline
character. Alternatively CONTENT can be a string with the full file content."
(plain-file
name
(if (list? content)
(string-join content "\n" 'suffix)
content)))
(define-public %raspi-config-txt
;; A config.txt file to start the ARM cores up in 64-bit mode if necessary
;; and to include a dtb.txt, bootloader.txt, and a custom.txt, each with
;; separated configurations for the Raspberry Pi firmware.
(raspi-config-file
"config.txt"
`("# See https://www.raspberrypi.org/documentation/configuration/config-txt/README.md for details."
""
,(string-append "arm_64bit=" (if (target-aarch64?) "1" "0"))
"include dtb.txt"
"include bootloader.txt"
"include custom.txt")))
(define-public %raspi-bcm27-dtb-txt
;; A dtb.txt file to be included by the config.txt to ensure that the
;; downstream device tree files bcm27*.dtb will be used.
(raspi-config-file
"dtb.txt"
"upstream_kernel=0"))
(define-public %raspi-bcm28-dtb-txt
;; A dtb.txt file to be included by the config.txt to ensure that the
;; upstream device tree files bcm28*.dtb will be used.
;; This also implies the use of the dtoverlay=upstream.
(raspi-config-file
"dtb.txt"
"upstream_kernel=1"))
(define-public %raspi-u-boot-bootloader-txt
;; A bootloader.txt file to be included by the config.txt to load the
;; U-Boot bootloader.
(raspi-config-file
"bootloader.txt"
'("dtoverlay=upstream"
"enable_uart=1"
"kernel=u-boot.bin")))
(define (raspi-custom-txt content)
"Make a custom.txt file for the Raspberry Pi firmware.
CONTENT can be a list of strings, which are concatenated with a newline
character. Alternatively CONTENT can be a string with the full file content."
(raspi-config-file "custom.txt" content))
(define (make-raspi-defconfig arch defconfig sha256-as-base32) (define (make-raspi-defconfig arch defconfig sha256-as-base32)
"Make for the architecture ARCH a file-like object from the DEFCONFIG file "Make for the architecture ARCH a file-like object from the DEFCONFIG file
with the hash SHA256-AS-BASE32. This object can be used as the #:defconfig with the hash SHA256-AS-BASE32. This object can be used as the #:defconfig