[PATCH] ARM i.MX6SL: Add Kindle generation 6/7 support
Sascha Hauer
s.hauer at pengutronix.de
Mon Nov 10 00:54:49 PST 2025
Hi Alexander,
On Sun, Nov 09, 2025 at 06:03:37PM +0000, Alexander Kurz wrote:
> Four Amazon Kindle 6th and 7th generation e-book readers were considered
> for this patch, referred by their models
> * DP75SDI "PINOT_WFO" (256MB) "Kindle Paperwhite 2" 6th gen
> * DP75SDI "Muscat WFO" (512MB) "Kindle Paperwhite 3" 7th gen
> * WP63GW "Kindle" 7th gen (512MB)
> * NM460GZ "Voyage" 7th gen (512MB)
> Kindle e-book readers from generation 6 and 7 use the i.MX6SL and an
> are shipped with a factory-adapted u-boot image. Vendor software image
> updates for these models stopped around 2021 to 2023.
>
> Add experimental support for the kindle gen 6/7 models and make barebox
> an optional drop-in replacement for the original bootloader.
> Required PMIC settings are implemented as script.
>
> Notable features tested on all models:
> - Support for eMMC, USB, UART, I2C and SPI.
> - LPDDR2 setup is done via DCD, the same imximage may be used
> for USB-startup and for installation.
> - Support for vendor specific ATAGs that are required by the Kindle-System.
> - usbserial barebox console access for 10 seconds after startup.
>
> Known issues:
> - Reset on models kindle6-dp75sdi and nm460gz does not work and triggers
> microcode USB download boot.
> - No recovery (without soldering) like USB boot known after e.g. a failed
> flashing attempt.
>
> Signed-off-by: Alexander Kurz <akurz at blala.de>
> ---
> .../boards/imx/amazon-kindle-6-7.rst | 94 ++++++++
> arch/arm/boards/Makefile | 1 +
> arch/arm/boards/kindle-mx6sl/Makefile | 5 +
> diff --git a/Documentation/boards/imx/amazon-kindle-6-7.rst b/Documentation/boards/imx/amazon-kindle-6-7.rst
Thanks for the good documentation, very appreciated :)
> new file mode 100644
> index 0000000000..c7a5ef9424
> +ENTRY_FUNCTION(start_imx6sl_kindle6_dp75sdi, r0, r1, r2)
> +{
> + void *fdt;
> +
> + imx6_cpu_lowlevel_init();
> +
> + arm_setup_stack(0x00920000);
> +
> + if (IS_ENABLED(CONFIG_DEBUG_LL)) {
> + writel(0x4, 0x020e016c);
> + imx6_uart_setup_ll();
> + }
> +
> + fdt = __dtb_imx6sl_kindle6_dp75sdi_start + get_runtime_offset();
> + barebox_arm_entry(0x80000000, SZ_256M, fdt);
Does imx6ul_barebox_entry() work here instead? In that case you could
drop the memory nodes from the device trees.
> +++ b/arch/arm/dts/imx6sl-kindle-nm460gz.dts
> @@ -0,0 +1,69 @@
> +// SPDX-License-Identifier: GPL-2.0-or-later
> +/*
> + * Copyright (C) 2025 Alexander Kurz <akurz at blala.de>
> + */
> +
> +/dts-v1/;
> +#include "imx6sl-kindle-common.dtsi"
> +#include <dt-bindings/interrupt-controller/irq.h>
> +#include <dt-bindings/gpio/gpio.h>
> +#include <dt-bindings/input/input.h>
> +
> +/ {
> + model = "kindle-nm460gz";
> + compatible = "amazon,imx6sl-kindle-nm460gz", "fsl,imx6sl";
> + barebox,disable-deep-probe;
Is this intentional? What doesn't work with deep probe enabled?
Sascha
--
Pengutronix e.K. | |
Steuerwalder Str. 21 | http://www.pengutronix.de/ |
31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
More information about the barebox
mailing list