Re: [PATCH] mtd: spi-nor: Add support for BoHong bh25q128as

Michael Walle
2021-05-10T08:01:24Z

Hi David,

Am 2021-05-09 16:47, schrieb David Bauer:
> Add MTD support for the BoHong bh25q128as SPI NOR chip.
> The chip has 16MB of total capacity, divided into a total of 256
> sectors, each 64KB sized. The chip also supports 4KB sectors.
> Additionally, it supports dual and quad read modes.
>
> Functionality was verified on an Tenbay WR1800K / MTK MT7621 board.
>
> Signed-off-by: David Bauer <mail@david-bauer.net>
> ---
> drivers/mtd/spi-nor/Makefile | 1 +
> drivers/mtd/spi-nor/bohong.c | 21 +++++++++++++++++++++
> drivers/mtd/spi-nor/core.c | 1 +
> drivers/mtd/spi-nor/core.h | 1 +
> 4 files changed, 24 insertions(+)
> create mode 100644 drivers/mtd/spi-nor/bohong.c
>
> diff --git a/drivers/mtd/spi-nor/Makefile
> b/drivers/mtd/spi-nor/Makefile
> index 653923896205..de0b2d3bcb1c 100644
> --- a/drivers/mtd/spi-nor/Makefile
> +++ b/drivers/mtd/spi-nor/Makefile
> @@ -2,6 +2,7 @@
>
> spi-nor-objs := core.o sfdp.o
> spi-nor-objs += atmel.o
> +spi-nor-objs += bohong.o
> spi-nor-objs += catalyst.o
> spi-nor-objs += eon.o
> spi-nor-objs += esmt.o
> diff --git a/drivers/mtd/spi-nor/bohong.c
> b/drivers/mtd/spi-nor/bohong.c
> new file mode 100644
> index 000000000000..20aeceb1b2d1
> --- /dev/null
> +++ b/drivers/mtd/spi-nor/bohong.c
> @@ -0,0 +1,21 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/*
> + * Copyright (C) 2005, Intec Automation Inc.
> + * Copyright (C) 2014, Freescale Semiconductor, Inc.

I guess this could be dropped. There is no much left from these in this
file.

> + */
> +
> +#include <linux/mtd/spi-nor.h>
> +
> +#include "core.h"
> +
> +static const struct flash_info bohong_parts[] = {
> + /* BoHong Microelectronics */
> + { "bh25q128as", INFO(0x684018, 0, 64 * 1024, 256,

I couldn't find "BoHong" in JEP106BC. 0x68 (without continuation codes)
is "Convex Computer". So this is wrong. OTOH I'm not sure, how many
SPI flashes "convex computer" have, if any ;) This company was brought
by HP in the end.

In any case, this patch depends on how we handle continuation codes or
if we can handle them at all. Or if this flash just lie about its
manufacturer id and don't and CC.

See also:
https://lkml.org/lkml/2021/2/7/223
https://www.spinics.net/lists/kernel/msg3808260.html

> + SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },
> +};
> +
> +const struct spi_nor_manufacturer spi_nor_bohong = {
> + .name = "bohong",
> + .parts = bohong_parts,
> + .nparts = ARRAY_SIZE(bohong_parts),
> +};
> diff --git a/drivers/mtd/spi-nor/core.c b/drivers/mtd/spi-nor/core.c
> index 0522304f52fa..03a05bce6231 100644
> --- a/drivers/mtd/spi-nor/core.c
> +++ b/drivers/mtd/spi-nor/core.c
> @@ -2199,6 +2199,7 @@ int spi_nor_sr2_bit7_quad_enable(struct spi_nor
> *nor)
>
> static const struct spi_nor_manufacturer *manufacturers[] = {
> &spi_nor_atmel,
> + &spi_nor_bohong,
> &spi_nor_catalyst,
> &spi_nor_eon,
> &spi_nor_esmt,
> diff --git a/drivers/mtd/spi-nor/core.h b/drivers/mtd/spi-nor/core.h
> index 4a3f7f150b5d..b71323317235 100644
> --- a/drivers/mtd/spi-nor/core.h
> +++ b/drivers/mtd/spi-nor/core.h
> @@ -409,6 +409,7 @@ struct spi_nor_manufacturer {
>
> /* Manufacturer drivers. */
> extern const struct spi_nor_manufacturer spi_nor_atmel;
> +extern const struct spi_nor_manufacturer spi_nor_bohong;
> extern const struct spi_nor_manufacturer spi_nor_catalyst;
> extern const struct spi_nor_manufacturer spi_nor_eon;
> extern const struct spi_nor_manufacturer spi_nor_esmt;

--
-michael