介绍

SPI 闪存控制器驱动程序旨在供用户访问 SPI NOR/NAND 闪存,目前仅支持用户模式。

架构

SPI 闪存控制器驱动程序的 SPI NOR 闪存和 NAND 闪存的软件架构分别在下面的两个图中显示。

../../rst_linux/8_spic/figures/spi_flash_controller_for_nor_flash_software_arch.svg

SPI Flash controller for NOR Flash software architecture

../../rst_linux/8_spic/figures/spi_flash_controller_for_nand_flash_software_arch.svg

SPI Flash controller for NAND Flash software architecture

实现

SPI 闪存控制器驱动程序实现为以下文件:

文件

描述

<linux>/drivers/rtkdrivers/spic/Kconfig

SPIC 驱动程序 Kconfig

<linux>/drivers/rtkdrivers/spic/Makefile

SPIC 驱动程序 Makefile

<linux>/drivers/rtkdrivers/spic/spi-rxi312-nand.c

SPIC 驱动程序有关 NAND 闪存的具体实现

<linux>/drivers/rtkdrivers/spic/spi-rxi312-nor.c

SPIC 驱动程序有关 NOR 闪存的具体实现

<linux>/drivers/rtkdrivers/spic/spi-rxi312-nor.h

SPIC 驱动程序有关 NOR 闪存定义的头文件

配置

设备树配置

对于用于 NOR 闪存的 SPI 闪存控制器驱动程序,设备树节点在文件 <dts>/rtl8730e-spi-nor.dtsi

spic: spi@44000000 {
   compatible = "realtek,rxi312-nor";
   #address-cells = <1>;
   #size-cells = <0>;
   bus_num = <2>;
   reg = <0x44000000 0x200>;
   interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
   spi-max-frequency = <100000000>;
   flash0: flash@0 {
      /* NOR Flash configurations */
   };
};

对于用于 NAND 闪存的 SPI 闪存控制器驱动程序,设备树节点定义在文件 <dts>/rtl8730e-spi-nand-128m.dtsi<dts>/rtl8730e-spi-nand-256m.dtsi 中。

spic: spi@44000000 {
   compatible = "realtek,rxi312-nand";
   #address-cells = <1>;
   #size-cells = <0>;
   bus_num = <2>;
   reg = <0x44000000 0x200>;
   interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
   spi-max-frequency = <100000000>;
   flash0: flash@0 {
      /* NAND Flash configurations */
   };
};

配置如下表所列。

属性

描述

可配置?

compatible

用于将SPIC驱动程序与SPI闪存控制器设备匹配的ID

#address-cells

Flash节点的地址单元数量

#size-cells

Flash节点的大小单元数量

bus_num

SPI 总线编号

reg

注册资源

interrupts

SPI中断:用于NOR闪存的SPI闪存控制器驱动程序的中断模式,保留给NAND闪存的SPI

闪存控制器驱动程序

spi-max-frequency

SPI最大频率(赫兹,预留)

备注

选择芯片后,上述设备树文件将自动选择。若非必要,请勿更改设备树配置。

编译配置

选择 Device Drivers > Drivers for Realtek > RXI312 SPI controller driver

../../rst_linux/8_spic/figures/spic_rxi312_spic.png

对于 NOR 闪存,选择 Device Drivers > Drivers for Realtek > RXI312 SPI controller driver > RXI mode as required

../../rst_linux/8_spic/figures/spic_rxi312_spic_mode.png

备注

RXI312 模式仅适用于 NOR 闪存的 SPI Flash 控制器驱动程序,对于 NAND 闪存的 SPI Flash 控制器驱动程序将被忽略。

APIs

用户空间 API

无。

内核空间 API

用于 NOR 闪存的 SPI Flash 控制器驱动程序为 SPI NOR Flash 驱动程序提供了 spi_nor 钩子,这些钩子的原型定义在文件 <linux>/include/linux/mtd/spi-nor.h 中。

API

描述

read_reg

从SPI NOR闪存寄存器读取数据

write_reg

将数据写入SPI NOR闪存寄存器

read

从SPI NOR闪存读取数据

write

将数据写入SPI NOR闪存

erase

擦除SPI NOR闪存的一个扇区

用于 NAND 闪存的 SPI 闪存控制器驱动程序在 MTD 框架中为 SPI NAND 闪存核心提供了 spi-mem 接口,该接口在文件 <linux>/include/linux/spi/spi-mem.h 中定义。

API

描述

spi_mem_exec_op

执行内存操作