MT7628AN 使用SPI的CS1接SD卡问题

fensnote 2017-12-09 01:55:03
大家好,最近项目准备用mt7628的方案,发现一个比较纠结的问题,SD卡与网口有复用,正好还需要用到多个网口;
SD卡只能用spi连接了,spi的cs0连接了spi flash,所以只能用spi的cs1,
现在的问题是sd卡一直识别不了,连不上;
麻烦大家帮看下:

cs1也是复用引脚,这个已经配置了,还有就是dts里的配置,接下来贴给大家看下,帮看看问题:
pinctrl {
compatible = "ralink,rt2880-pinmux";
pinctrl-names = "default";
pinctrl-0 = <&state_default>;
state_default: pinctrl0 {
};
spi_pins: spi {
spi {
ralink,group = "spi";
ralink,function = "spi";
};
};
//复用配置在此
spi_cs1_pins: spi_cs1 {
spi_cs1 {
ralink,group = "spi cs1";
ralink,function = "spi cs1";
};
};
spi@b00 {
compatible = "ralink,mt7621-spi","ralink,rt5350-spi";
reg = <0xb00 0x100>;

resets = <&rstctrl 18>;
reset-names = "spi";

#address-cells = <1>;
#size-cells = <1>;

pinctrl-names = "default";
pinctrl-0 = <&spi_pins>;

status = "disabled";
};



配置cs1连接sd卡,m25p80是flash,后面是我添加的mmc_spi:
palmbus@10000000 {
spi@b00 {
status = "okay";

pinctrl-names = "default";
pinctrl-0 = <&spi_pins>, <&spi_cs1_pins>;

m25p80@0 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "mx25l25635e";
reg = <0 0>;
linux,modalias = "m25p80", "mx25l25635e";
spi-max-frequency = <40000000>;
m25p,chunked-io = <31>;

partition@0 {
label = "u-boot";
reg = <0x0 0x30000>;
read-only;
};

partition@30000 {
label = "u-boot-env";
reg = <0x30000 0x10000>;
};

factory: partition@40000 {
label = "factory";
reg = <0x40000 0x10000>;
read-only;
};

partition@50000 {
label = "firmware";
reg = <0x50000 0x1fb0000>;
};
};

mmc_spi@1 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "mmc-spi-slot";
reg = <1 0>;
linux,modalias = "mmc_spi", "mmc-spi-slot";
spi-max-frequency = <25000000>;

spi-cpol = <0>;
spi-cpha = <0>;

status = "okay";
};
};
内核配置也都选上了,


启动时,会打印:
[ 0.760000] mmc_spi spi32766.1: OF: voltage-ranges unspecified
[ 0.770000] mmc_spi spi32766.1: ASSUMING 3.2-3.4 V slot power
[ 0.820000] mmc_spi spi32766.1: SD/MMC host mmc0, no WP, no poweroff
但是dev下面没有节点,

查看调试信息
cat /sys/kernel/debug/mmc0/ios
clock: 0 Hz
vdd: 0 (invalid)
bus mode: 2 (push-pull)
chip select: 1 (active high)
power mode: 0 (off)
bus width: 0 (1 bits)

麻烦大家帮看下!!感激不尽!
timing spec: 0 (legacy)
signal voltage: 1 (3.30 V)
...全文
2894 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
wanglan4585 2021-06-18
  • 打赏
  • 举报
回复

建议你看下这个文章,希望对你由帮助。https://blog.csdn.net/cyberkit3/article/details/79215113?utm_source=blogxgwz4

EVAN氧气吧 2018-05-10
  • 打赏
  • 举报
回复
引用 9 楼 wuquan_1230 的回复:
[quote=引用 8 楼 u013276653 的回复:] 我已经在7688上成功了
请问怎么实现的? [/quote] 使用4个GPIO来模拟SPI 参考https://wiki.openwrt.org/doc/howto/mmc_over_gpio Make menuconfig 选上kmod-mmc-over-gpio 再选上文件系统kmod-fs-ext4 kmod-fs-vfat 再选上native language里面的 kmod-nls-cp437 kmod-nls-iso8859-1 kmod-nls-utf8 修改/package/kernel/mmc_over_gpio/files/mmc_over_gpio.config 里面option 'enabled' '0' 把0改成1。然后修改/package/kernel/mmc_over_gpio/Makefile里面的 DI DO CLK CS 引脚的默认值 即可。 手动挂载mount -t vfat /dev/mmcblk0p1 /mnt/ 挂不上可能kernel没有选文件系统,或者需要格式化一下SD卡
fensnote 2018-04-13
  • 打赏
  • 举报
回复
引用 8 楼 u013276653 的回复:
我已经在7688上成功了
请问怎么实现的?
EVAN氧气吧 2018-04-03
  • 打赏
  • 举报
回复
我已经在7688上成功了
EVAN氧气吧 2018-03-31
  • 打赏
  • 举报
回复
在吗楼主,我现在也在用mt7688 openwrt接spi口SD,能加好友交流下吗 Q2148505937
zhxianbin 2017-12-26
  • 打赏
  • 举报
回复
引用 4 楼 wuquan_1230 的回复:
[quote=引用 2 楼 zhxianbin 的回复:] 没做过,看看这篇文章有没有用 http://blog.csdn.net/manfeel/article/details/43635529
谢谢回复 这个文章我看过了,这文章的开头说的,片选问题,我不太清楚要修改哪里?[/quote] 文章中讲了 在pinmux驱动中
fensnote 2017-12-26
  • 打赏
  • 举报
回复
引用 3 楼 jklinux 的回复:
我觉得首先得确认所用的spi控制器是否已驱动好; 第二确认使用spi接口的mmc驱动是否已编进内核镜像或加载,并且是否有与设备发生匹配.
可能是片选问题
fensnote 2017-12-26
  • 打赏
  • 举报
回复
引用 2 楼 zhxianbin 的回复:
没做过,看看这篇文章有没有用 http://blog.csdn.net/manfeel/article/details/43635529
谢谢回复 这个文章我看过了,这文章的开头说的,片选问题,我不太清楚要修改哪里?
jklinux 2017-12-16
  • 打赏
  • 举报
回复
我觉得首先得确认所用的spi控制器是否已驱动好; 第二确认使用spi接口的mmc驱动是否已编进内核镜像或加载,并且是否有与设备发生匹配.
zhxianbin 2017-12-13
  • 打赏
  • 举报
回复
没做过,看看这篇文章有没有用 http://blog.csdn.net/manfeel/article/details/43635529
zhxianbin 2017-12-13
  • 打赏
  • 举报
回复
voltage-ranges unspecified 这个应该是一个错误

4,436

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧