[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