diff --git a/gnu/local.mk b/gnu/local.mk
index 73370dcc78..80b99c5986 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1131,7 +1131,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/firebird-riscv64-support-pt1.patch	\
   %D%/packages/patches/firebird-riscv64-support-pt2.patch	\
   %D%/packages/patches/flann-cmake-3.11.patch			\
-  %D%/packages/patches/flashrom-fix-building-on-aarch64.patch	\
   %D%/packages/patches/flatpak-fix-path.patch			\
   %D%/packages/patches/flatpak-unset-gdk-pixbuf-for-sandbox.patch	\
   %D%/packages/patches/fluxbox-1.3.7-no-dynamic-cursor.patch	\
diff --git a/gnu/packages/flashing-tools.scm b/gnu/packages/flashing-tools.scm
index 028631cbd2..a1631b2940 100644
--- a/gnu/packages/flashing-tools.scm
+++ b/gnu/packages/flashing-tools.scm
@@ -29,20 +29,24 @@
 (define-module (gnu packages flashing-tools)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix download)
+  #:use-module (guix gexp)
   #:use-module (guix git-download)
   #:use-module (guix packages)
   #:use-module (guix utils)
   #:use-module (gnu packages)
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system meson)
   #:use-module (guix build-system python)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages admin)
   #:use-module (gnu packages base)
   #:use-module (gnu packages bison)
   #:use-module (gnu packages boost)
+  #:use-module (gnu packages check)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages elf)
+  #:use-module (gnu packages embedded)
   #:use-module (gnu packages flex)
   #:use-module (gnu packages ghostscript)
   #:use-module (gnu packages gnupg)
@@ -58,7 +62,7 @@ (define-module (gnu packages flashing-tools)
 (define-public flashrom
   (package
     (name "flashrom")
-    (version "1.2")
+    (version "1.3.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -66,35 +70,13 @@ (define-public flashrom
                     version ".tar.bz2"))
               (sha256
                (base32
-                "0ax4kqnh7kd3z120ypgp73qy1knz47l6qxsqzrfkd97mh5cdky71"))
-              (patches
-               (search-patches "flashrom-fix-building-on-aarch64.patch"))))
-    (build-system gnu-build-system)
-    (inputs (list dmidecode pciutils libusb libftdi))
-    (native-inputs (list pkg-config))
+                "08wn2j5vxzzvigflrjypgxxzjp32c76bshrlkzki5l6cad226lx0"))))
+    (build-system meson-build-system)
+    (inputs (list dmidecode pciutils libusb libftdi libjaylink))
+    (native-inputs (list cmocka pkg-config))
     (arguments
-     '(#:make-flags
-       (list "CC=gcc"
-             (string-append "PREFIX=" %output)
-             "CONFIG_ENABLE_LIBUSB0_PROGRAMMERS=no")
-       #:tests? #f                      ; no 'check' target
-       #:phases
-       (modify-phases %standard-phases
-         (delete 'configure)            ; no configure script
-         (add-before 'build 'patch-exec-paths
-           (lambda* (#:key inputs #:allow-other-keys)
-             (substitute* "dmi.c"
-               (("\"dmidecode\"")
-                (format #f "~S"
-                        (search-input-file inputs "/sbin/dmidecode"))))))
-         (add-before 'build 'patch-type-error
-           (lambda _
-             ;; See https://github.com/flashrom/flashrom/pull/133
-             (substitute* "libflashrom.c"
-               (("supported_boards\\[i\\].working = binfo\\[i\\].working")
-                "supported_boards[i].working = (enum flashrom_test_state)binfo[i].working")
-               (("supported_chipsets\\[i\\].status = chipset\\[i\\].status")
-                "supported_chipsets[i].status = (enum flashrom_test_state)chipset[i].status")))))))
+     (list #:configure-flags
+           #~'("-Dprogrammer=all")))
     (home-page "https://flashrom.org/")
     (synopsis "Identify, read, write, erase, and verify ROM/flash chips")
     (description
diff --git a/gnu/packages/patches/flashrom-fix-building-on-aarch64.patch b/gnu/packages/patches/flashrom-fix-building-on-aarch64.patch
deleted file mode 100644
index 9f54305b47..0000000000
--- a/gnu/packages/patches/flashrom-fix-building-on-aarch64.patch
+++ /dev/null
@@ -1,89 +0,0 @@
-commit da6b3b70cb852dd8e9f9e21aef95fa83e7f7ab0d
-Author: Pyry Kontio <pyry.kontio@drasa.eu>
-Date:   Mon Jul 6 12:57:35 2020 +0900
-
-    Makefile: Fix building on AArch64 NixOS
-
-    The parsing of the output of archtest.c produced an unexpected
-    value on AArch64 NixOS. For example, the make variable ARCH was set to:
-
-    ```
-    bit outside of fd_set selected
-    arm
-    ```
-
-    This made the arch and OS checks fail.
-
-    This commit simplifies the parsing, making it more robust.
-
-    The C files archtest.c, endiantest.c and os.h used to set the
-    TARGET_OS, ARCH and ENDIAN variables, respectively, output
-    the result of the test as the final line, so just extracting
-    the final line and removing double quoting is enough.
-
-    This commit also fixes a bug with debug_shell lacking escaping
-    single quotes, which prevented using the single quote in the
-    debug_shell calls. It used to work by accident before this fix;
-    the line in the call happened to contain a balanced pair of double
-    quotes and lacked other characters that needed escaping, which
-    didn't break the debug_shell, but this was accidental and very
-    brittle.
-
-    Signed-off-by: Pyry Kontio <pyry.kontio@drasa.eu>
-    Change-Id: Iaa4477a71e758cf9ecad2c22f3b77bc6508a3510
-    Reviewed-on: https://review.coreboot.org/c/flashrom/+/43140
-    Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
-    Reviewed-by: Angel Pons <th3fanbus@gmail.com>
-
-diff --git a/Makefile b/Makefile
-index f3f7717e..e475cbdb 100644
---- a/Makefile
-+++ b/Makefile
-@@ -83,7 +83,8 @@ dummy_for_make_3_80:=$(shell printf "Build started on %s\n\n" "$$(date)" >$(BUIL
-
- # Provide an easy way to execute a command, print its output to stdout and capture any error message on stderr
- # in the build details file together with the original stdout output.
--debug_shell = $(shell export LC_ALL=C ; { echo 'exec: export LC_ALL=C ; { $(1) ; }' >&2;  { $(1) ; } | tee -a $(BUILD_DETAILS_FILE) ; echo >&2 ; } 2>>$(BUILD_DETAILS_FILE))
-+debug_shell = $(shell export LC_ALL=C ; { echo 'exec: export LC_ALL=C ; { $(subst ','\'',$(1)) ; }' >&2; \
-+    { $(1) ; } | tee -a $(BUILD_DETAILS_FILE) ; echo >&2 ; } 2>>$(BUILD_DETAILS_FILE))
-
- ###############################################################################
- # General OS-specific settings.
-@@ -106,7 +107,8 @@ endif
- # IMPORTANT: The following line must be placed before TARGET_OS is ever used
- # (of course), but should come after any lines setting CC because the line
- # below uses CC itself.
--override TARGET_OS := $(strip $(call debug_shell,$(CC) $(CPPFLAGS) -E os.h 2>/dev/null | grep -v '^\#' | grep '"' | cut -f 2 -d'"'))
-+override TARGET_OS := $(strip $(call debug_shell,$(CC) $(CPPFLAGS) -E os.h 2>/dev/null \
-+    | tail -1 | cut -f 2 -d'"'))
-
- ifeq ($(TARGET_OS), Darwin)
- override CPPFLAGS += -I/opt/local/include -I/usr/local/include
-@@ -490,8 +492,10 @@ endif
- # IMPORTANT: The following line must be placed before ARCH is ever used
- # (of course), but should come after any lines setting CC because the line
- # below uses CC itself.
--override ARCH := $(strip $(call debug_shell,$(CC) $(CPPFLAGS) -E archtest.c 2>/dev/null | grep -v '^\#' | grep '"' | cut -f 2 -d'"'))
--override ENDIAN := $(strip $(call debug_shell,$(CC) $(CPPFLAGS) -E endiantest.c 2>/dev/null | grep -v '^\#'))
-+override ARCH := $(strip $(call debug_shell,$(CC) $(CPPFLAGS) -E archtest.c 2>/dev/null \
-+    | tail -1 | cut -f 2 -d'"'))
-+override ENDIAN := $(strip $(call debug_shell,$(CC) $(CPPFLAGS) -E endiantest.c 2>/dev/null \
-+    | tail -1))
-
- # Disable the internal programmer on unsupported architectures (everything but x86 and mipsel)
- ifneq ($(ARCH)-little, $(filter $(ARCH),x86 mips)-$(ENDIAN))
-@@ -1299,12 +1303,12 @@ compiler: featuresavailable
-	@printf "Target arch is "
-	@# FreeBSD wc will output extraneous whitespace.
-	@echo $(ARCH)|wc -w|grep -q '^[[:blank:]]*1[[:blank:]]*$$' ||	\
--		( echo "unknown. Aborting."; exit 1)
-+		( echo "unknown (\"$(ARCH)\"). Aborting."; exit 1)
-	@printf "%s\n" '$(ARCH)'
-	@printf "Target OS is "
-	@# FreeBSD wc will output extraneous whitespace.
-	@echo $(TARGET_OS)|wc -w|grep -q '^[[:blank:]]*1[[:blank:]]*$$' ||	\
--		( echo "unknown. Aborting."; exit 1)
-+		( echo "unknown (\"$(TARGET_OS)\"). Aborting."; exit 1)
-	@printf "%s\n" '$(TARGET_OS)'
- ifeq ($(TARGET_OS), libpayload)
-	@$(CC) --version 2>&1 | grep -q coreboot || \
