全志科技
直播中

corkia

4年用户 657经验值
擅长:嵌入式技术
私信 关注
[资料]

【全志网络专题/Tips】Tina Linux 网络如何修改SDIO的频率?

大家好,我是三颗芋圆,始于LWIP,陷于TCP/IP,忠于80211。

本次tips聊聊如何修改SDIO的频率。

前面我们提到了Wi-Fi的传输接口有SDIO/USB/PCI等多种接口,常用的还是SDIO,那么这些接口的速率直接就会影响到Wi-Fi的性能,而速率的最关键的一个指标就是频率。

Tina上有多种方式可以修改和查看SDIO的频率。

一.查看SDIO的频率
1)启动log查看:
  1. sunxi-mmc sdc1: sdc set ios:clk 0Hz bm PP pm UP vdd 21 width 1 timing LEGACY(SDR12) dt B
  2. sunxi-mmc sdc1: no vqmmc,Check if there is regulator
  3. sunxi-mmc sdc1: sdc set ios:clk 400000Hz bm PP pm ON vdd 21 width 1 timing LEGACY(SDR12) dt B
  4. sunxi-mmc sdc1: sdc set ios:clk 400000Hz bm PP pm ON vdd 21 width 1 timing LEGACY(SDR12) dt B
  5. sunxi-mmc sdc1: sdc set ios:clk 400000Hz bm PP pm ON vdd 21 width 1 timing LEGACY(SDR12) dt B
  6. sunxi-mmc sdc1: sdc set ios:clk 400000Hz bm PP pm ON vdd 21 width 1 timing SD-HS(SDR25) dt B
  7. sunxi-mmc sdc1: sdc set ios:clk 50000000Hz bm PP pm ON vdd 21 width 1 timing SD-HS(SDR25) dt B
  8. sunxi-mmc sdc1: sdc set ios:clk 50000000Hz bm PP pm ON vdd 21 width 4 timing SD-HS(SDR25) dt B
  9. [SBUS] XRadio Device:sdio clk=50000000
如上是扫卡的打印,一开始是400kHZ,后面是50MHZ。

2)系统节点操作:
  1. root@TinaLinux:/sys/kernel/debug/xradio_host_dbg# ls
  2. dbg_ap          dbg_logfile     dbg_sta         hwinfo
  3. dbg_bh          dbg_pm          dbg_tpa_node    set_sdio_clk
  4. dbg_common      dbg_***us        dbg_txrx        tx_burst_limit
  5. dbg_etf         dbg_scan        dbg_wsm
3)uboot阶段查看
利用uboot的 fdt工具修改sdc1
  1. fdt print /soc/sdmmc@04021000
二.修改SDIO频率
1)在dts或者sys_config.fex中修改:
1.1)sys_config.fex
  1. 402 [sdc1]
  2. 403 sdc1_used               = 1
  3. 404 bus-width               = 4
  4. 405 sdc1_clk                = port:PG00<2><1><3><default>
  5. 406 sdc1_cmd                = port:PG01<2><1><3><default>
  6. 407 sdc1_d0                 = port:PG02<2><1><3><default>
  7. 408 sdc1_d1                 = port:PG03<2><1><3><default>
  8. 409 sdc1_d2                 = port:PG04<2><1><3><default>
  9. 410 sdc1_d3                 = port:PG05<2><1><3><default>
  10. 411 cap-sdio-irq            =
  11. 412 max-frequency           = 25000000  //从150M改为25M.

1.2)board.dts
  1. 565 &sdc1 {
  2. 566         bus-width = <4>;
  3. 567         no-mmc;
  4. 568         no-sd;
  5. 569         cap-sd-highspeed;
  6. 570         /*sd-uhs-sdr12*/
  7. 571         /*sd-uhs-sdr25;*/
  8. 572         /*sd-uhs-sdr50;*/
  9. 573         /*sd-uhs-ddr50;*/
  10. 574         /*sd-uhs-sdr104;*/
  11. 575         /*sunxi-power-save-mode;*/
  12. 576         /*sunxi-dis-signal-vol-sw;*/
  13. 577         cap-sdio-irq;
  14. 578         keep-power-in-suspend;
  15. 579         ignore-pm-notify;
  16. 580         max-frequency = <150000000>;  //调整这个最大频率参数
  17. 581         ctl-spec-caps = <0x8>;
  18. 582         status = "okay";
  19. 583 };
2)节点操作
  1. /sys/kernel/debug/xradio_host_dbg/set_sdio_clk
默认是0表示即扫卡的频率
操作:echo 50000000 > set_sdio_clk

3)uboot阶段操作:
同样也可以在uboot阶段利用fdt工具操作
  1. fdt set /soc/sdmmc@04021000 max-frequency  <150000000>

PS:注意uboot的修改只是单次有效,重启后就无效了。


更多回帖

发帖
×
20
完善资料,
赚取积分