[U-Boot] [PATCH v2 04/11] mtd: spi: Port SPI NOR framework from Linux
Vignesh R
vigneshr at ti.com
Mon Jan 28 11:43:41 UTC 2019
On 28/01/19 12:18 AM, Jagan Teki wrote:
> Do you have this whole series in some branch in github? I'm unable to
> apply it on master.
>
Here is my tentative v3 branch[1] based on top of today's master. I
haven't got to splitting up this patch yet. But have addressed all other
comments by you and Simon on this version.
[1] https://github.com/r-vignesh/u-boot.git branch: spi-nor-mig-patch-v3
Let me know if there are any additional comments. Thanks for the review!
> On Fri, Dec 21, 2018 at 12:15 PM Vignesh R <vigneshr at ti.com> wrote:
>>
>> Current U-Boot SPI NOR support (sf layer) is quite outdated as it does not
>> support 4 byte addressing opcodes, SFDP table parsing and different types of
>> quad mode enable sequences. Many newer flashes no longer support BANK
>> registers used by sf layer to a access >16MB space.
>> Also, many SPI controllers have special MMIO interfaces which provide
>> accelerated read/write access but require knowledge of flash parameters
>> to make use of it. Recent spi-mem layer provides a way to support such
>> flashes but sf layer isn't using that.
>> So sync SPI NOR framework from Linux v4.19 and add spi-mem support on top.
>> in order to gain 4 byte addressing support, SFDP support and a way to
>> support SPI controllers with MMIO flash interface.
>
> Understand the usage if direct complete sync, however it's difficult
> for me to review whole stuff. Can you please break into few patches
> like Basic sync, SFDP and other.
>
Ok, Let me see how that can be done.
>>
>> Signed-off-by: Vignesh R <vigneshr at ti.com>
>> ---
>> drivers/mtd/spi/spi-nor-core.c | 2590 ++++++++++++++++++++++++++++++++
>> include/linux/mtd/cfi.h | 32 +
>> include/linux/mtd/spi-nor.h | 410 +++++
>> 3 files changed, 3032 insertions(+)
>> create mode 100644 drivers/mtd/spi/spi-nor-core.c
>> create mode 100644 include/linux/mtd/cfi.h
>> create mode 100644 include/linux/mtd/spi-nor.h
>>
[...]
>> +static int spi_nor_sr_ready(struct spi_nor *nor)
>> +{
>> + int sr = read_sr(nor);
>> +
>> + if (sr < 0)
>> + return sr;
>> +
>> +#ifndef CONFIG_SPL_BUILD
>> + if (nor->flags & SNOR_F_USE_CLSR && sr & (SR_E_ERR | SR_P_ERR)) {
>> + if (sr & SR_E_ERR)
>> + dev_dbg(nor->dev, "Erase Error occurred\n");
>> + else
>> + dev_dbg(nor->dev, "Programming Error occurred\n");
>> +
>> + nor->write_reg(nor, SPINOR_OP_CLSR, NULL, 0);
>> + return -EIO;
>> + }
>> +#endif
>
> Does it increase SPL size? or do we always assume SPL can't access
> flash that would require CLSR?
>
Code size increase.. But now that we have SPI_FLASH_TINY, will drop this...
>> +
>> + return !(sr & SR_WIP);
>> +}
>> +
[...]
>> +enum spi_nor_read_command_index {
>> + SNOR_CMD_READ,
>> + SNOR_CMD_READ_FAST,
>> + SNOR_CMD_READ_1_1_1_DTR,
>> +
>> + /* Dual SPI */
>> + SNOR_CMD_READ_1_1_2,
>> + SNOR_CMD_READ_1_2_2,
>> + SNOR_CMD_READ_2_2_2,
>> + SNOR_CMD_READ_1_2_2_DTR,
>> +
>> + /* Quad SPI */
>> + SNOR_CMD_READ_1_1_4,
>> + SNOR_CMD_READ_1_4_4,
>> + SNOR_CMD_READ_4_4_4,
>> + SNOR_CMD_READ_1_4_4_DTR,
>> +
>> + /* Octo SPI */
>> + SNOR_CMD_READ_1_1_8,
>> + SNOR_CMD_READ_1_8_8,
>> + SNOR_CMD_READ_8_8_8,
>> + SNOR_CMD_READ_1_8_8_DTR,
>> +
>> + SNOR_CMD_READ_MAX
>> +};
>> +
>> +enum spi_nor_pp_command_index {
>> + SNOR_CMD_PP,
>> +
>> + /* Quad SPI */
>> + SNOR_CMD_PP_1_1_4,
>> + SNOR_CMD_PP_1_4_4,
>> + SNOR_CMD_PP_4_4_4,
>> +
>> + /* Octo SPI */
>> + SNOR_CMD_PP_1_1_8,
>> + SNOR_CMD_PP_1_8_8,
>> + SNOR_CMD_PP_8_8_8,
>> +
>> + SNOR_CMD_PP_MAX
>> +};
>
> I'm afraid whether we teatsed all thse combinations? or we doing for
> the sake of Linux sync?
>
Code exists for 1_1_1, 1_1_2, 1_1_4 and 4_4_4 modes and has been tested
(on par with current U-Boot SF stack). 1-2-2 and 1-4-4 should work with
SFDP(haven't tested it on a real hw though). Other modes are not
implemented (but exists as a result of sync up with Linux) and enums are
dummy definitions with no effect on code (are there for future use). I
can drop unused once if you prefer.
--
Regards
Vignesh
More information about the U-Boot
mailing list