RK3568+铁电存储器 FRAM cy15b108qn

说明

铁电存储器型号:cy15b108qn

主控:RK3568

linux kernel:6.1

步骤

直接加patch:

+&spi3 {
+       pinctrl-names = "default", "high_speed";
+       pinctrl-0 = <&spi3m1_cs0 &spi3m1_pins>;
+       pinctrl-1 = <&spi3m1_cs0 &spi3m1_pins_hs>;
+       status = "okay";
+
+       cy15b108qn: cy15b108qn@0 {
+               compatible = "jedec,spi-nor";
+               reg = <0>;
+               //pinctrl-names = "default";
+               //pinctrl-0 = <&pinctrl_cy15b108qn>;
+               //interrupts-extended = <&gpio4 RK_PC4 IRQ_TYPE_LEVEL_LOW>;
+               //cy,wp-gpio = <&gpio4 RK_PD2 GPIO_ACTIVE_LOW>;
+               status = "okay";
+       };
+};
+
 &wireless_wlan {
        pinctrl-names = "default";
        pinctrl-0 = <&wifi_host_wake_irq>;
diff --git a/drivers/mtd/spi-nor/spansion.c b/drivers/mtd/spi-nor/spansion.c
index 8429b4af999a..baa462f7a65c 100644
--- a/drivers/mtd/spi-nor/spansion.c
+++ b/drivers/mtd/spi-nor/spansion.c
@@ -104,6 +104,8 @@ static const struct flash_info spansion_parts[] = {
                             SPI_NOR_4B_OPCODES) },
        { "cy15x104q",  INFO6(0x042cc2, 0x7f7f7f, 512 * 1024, 1,
                              SPI_NOR_NO_ERASE) },
+       { "cy15x108q",  INFO6(0x032ec2, 0x7f7f7f, 1024 * 1024, 1,
+                             SPI_NOR_NO_ERASE) },
 };

 static void spansion_post_sfdp_fixups(struct spi_nor *nor)

内核对应的选项开启即可。

测试

FRAM 系统接口: /dev/mtd0

按照块读写测试:

mkfs.ext4 /dev/mtdblock0
# 会自动挂载到/media/mtdblock文件夹

按照U盘测试即可

按照字节读写测试:

echo -n "Hello, MTD!" > /dev/mtd0
dd if=/dev/mtd0 bs=1 count=12 of=dd_read_back.bin
cat dd_read_back.bin

alt text

PS

自己写了个字节读写的:

https://gitee.com/qaq-cmd/Drivers-outside-the-kernel/blob/master/spi/spi-fram.c

posted @ 2026-05-21 15:55  杨旭0324  阅读(14)  评论(0)    收藏  举报