This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] M2-CC3351:cc33xx 驱动器启动

Guru**** 2812305 points

Other Parts Discussed in Thread: M2-CC3351

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1620485/m2-cc3351-cc33xx-driver-bringup

器件型号: M2-CC3351

您好、

我正在尝试使用 M2-CC3351 EVK 启动树外 cc33xx 驱动器。
我们的主人是 ROCK-5B SBC 上的 RK3588。 由于我们所需的功能在主线 Linux 中提供、因此我一直使用 6.12 内核进行启动。
修补程序完全相同
  https://github.com/TexasInstruments-Sandbox/cc33xx-linux-mpu-ports
几乎不适用于任何干净的应用、从驱动程序源中获取
  https://github.com/TexasInstruments/ti-linux-kernel.git
  分支:TI-Linux-6.12.y
  标签: cicd.scarthgap.202601300920

此驱动程序将在简单的 debugfs 修复后构建:
  diff --git a/drivers/net/wireless/ti/cc33xx/debugfs.c b/drivers/net/wireless/ti/cc33xx/debugfs.c
  索引 c9fb8c05148c..7615ca106fc3 100644
  --- a/drivers/net/wireless/ti/cc33xx/debugfs.c
  ++ b/drivers/net/wireless/ti/cc33xx/debugfs.c
  @@–221、8 +221 、8 @@ static ssize_t radar_debug_mode_write(结构文件*文件、
          转至外;

      cc33xx_for_each _ wlvif_ap (wl、wlvif){
  -        wlcore_cmd_generic_cfg (wl、wlvif、
  -                    WLCORE_CFG_FEATURE_RADAR_DEBUG、
  +        cc33xx_cmd_generic_cfg (wl、wlvif、
  +                    CC33XX_CFG_FEATURE_RADAR_DEBUG、
                      wl->radar_debug_mode、0);
      }

  @@–248、12 +248、14 @@ static const struct file_operations radar_debug_mode_ops ={
      .llseek = default_llseek、
   };

  static void cc33xx_debugfs_add_files_helper (struct dentry *moddir)
  +static void cc33xx_debugfs_add_files_helper (struct cc33xx *wl、
  +                      结构 dentry *moddir)
   {
      DebugFS_ADD (RADAR_DEBUG_MODE、moddir);
   }
   #else
  static void cc33xx_debugfs_add_files_helper (struct dentry *moddir){}
  +static void cc33xx_debugfs_add_files_helper (struct cc33xx *wl、
  +                      struct dentry *moddir){}
   #endif /* CFG80211_certification_onus */


  @@–1935,7 +1937,7 @@ static int cc33xx_debugfs_add_files(结构 cc33xx *wl、

      DebugFS_ADD (conf、moddir);
      DebugFS_ADD (radar_detection、moddir);
  -   cc33xx_debugfs_add_files_helper (moddir);
  +   cc33xx_debugfs_add_files_helper (wl、moddir);
      DebugFS_ADD (DYNAMIC_FW_TRACES、moddir);

      返回 0;
  --  

固件文件取自 ti-processor-sdk-linux-am335x-evm-09.01.00.001、即
  Root@rock-5b:~# ls –1 /lib/firmware/ti-connectivity
  cc33xx-conf.bin
  cc33xx_2nd_loader.bin
  cc33xx_fw.bin

我们的器件已被识别:
  时钟:      25000000Hz
  实际时钟: 25000000 Hz
  VDD:       21 (3.3 ~ 3.4V)
  总线模式:   2(推挽)
  芯片选择:  0(无关)
  电源模式:  2(开)
  总线宽度:   2(4 位)
  时序规格:  0(传统)
  信号电压:1 (1.80V)
  驱动器类型:  0(驱动器类型 B)

但是、我发现很有趣的是、尽管 modalias 匹配 (sdio:c*v0097d4077*)、但 cc33xx_SDIO 仅在主机控制器子节点中明确提供“ti,cc33xx"兼容“兼容性时才会自动加载。

然后... 沉默。
我已尝试通过 debug_level=0xffffffff 增加 cc33xx 的详细程度、但没有用处。

您能否确认仅 SDIO(无主机唤醒 GPIO)操作正常?
如果没有、是否可以提供此特定器件所需的可正常工作的 RK3588 DTS 片段?

M.2 Key E 插槽的主机控制器节点默认设置如下:
  &SDIO{
      最大频率=<200000000>;
      无 SD;
      非 MMC;
      不可拆卸;
      总线宽度=<4>;
      CAP-SDIO-IRQ;
      disable-WP;
      保持电源处于挂起状态;
      唤醒源;
      SD-UHS-sdr12;
      SD-UHS-sdr25;
      SD-UHS-sdr50;
      SD-UHS-sdr104;
      VMMC-SUPPLY =<&vcc3V3_pcie2x1l0>;
      vqmmc-supply =<&VCC_1v8_S3>;
      pinctrl-names =“default";“;
      pinctrl-0 =<&sdiom0_pin>;
      状态=“正常“;
  };

感谢您的帮助、非常感谢!

此致、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Tamas:

    感谢您提供的所有详细信息、但让我们从您的要求开始。

    您提到需要使用主线内核、这是正确的吗? 如果您的主机不来自 TI、请勿使用 ti-linux-kernel。

    在 Rockchip 案例中、我们的方法是首先应用 cc33xx SDK 中的补丁: https://www.ti.com/tool/download/CC33XX-LINUX-MPU 

    SDK 中的补丁适用于内核 6.1。 应用该补丁后(干净与否)、请按照您在 GitHub 中的链接那样为相应内核应用补丁:    https://github.com/TexasInstruments-Sandbox/cc33xx-linux-mpu-ports

    我们要求从 SDK 开始的原因是、驱动程序需要匹配并附带 cc33xx 固件二进制文件。

    关于修复、感谢您分享这些修复。 我会在我这边实施它们。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您能否确认仅 SDIO(无主机唤醒 GPIO)操作正常工作?
    如果没有、是否可以提供此特定器件所需的可正常工作的 RK3588 DTS 片段?

    我没有专门针对 RK3588 的 DTS 示例。  我不确定 host-wake GPIO 是什么意思。 您能否提供一个 dmesg 日志来记录您所描述的内容?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Sabeeh:

    感谢您的答复!

    在 cc33xx_Linux_package_1_0_2_10 中、build_kernel 和 patch_kernel 选项都将失败。 但是、编译通常会转到 ti-linux-kernel-6.1.46+gitAUTOINC+1d4b5da681-g1d4b5da681。 在 SDK 中、我们使用的密钥补丁是 cc33xx_kernel.patch、它确实适用于 ti-linux-kernel 1d4b5da681ea4d617c01a72ad18b228d7438db7a。 这一点很明显。

    您提到要应用 cc33xx-linux-mpu-ports 中的相应补丁。 我假设是 6.12.y/0001-drivers-cc33xx-forward-port-cc33xx-1.0.2.10-SDK-to-6.patch、但此补丁并不完全适用。 您能否说明从 cc33xx-linux-mpu-ports 中的 cc33xx 需要哪些补丁文件才能移动驱动程序并使其能与 Linux 6.12 配合使用?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Tamas:

    很抱歉、延迟的回复。

    您需要从 CC33xx SDK 中获取“cc33xx_kernel.patch",“,并、并将其应用于 linux-6.12.y 然后从此处获取补丁并应用。

    如果应用这些修补程序时出现错误、请提供两者的日志。