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

PS
自己写了个字节读写的:
https://gitee.com/qaq-cmd/Drivers-outside-the-kernel/blob/master/spi/spi-fram.c
本文来自博客园,作者:杨旭0324,转载请注明原文链接:https://www.cnblogs.com/allalonewithyou/p/20108688,个人邮箱:yaonie4444@foxmail.com

浙公网安备 33010602011771号