RK3588 kernel-6.1:drivers/usb/atm 功能与实现要点

RK3588 kernel-6.1:drivers/usb/atm 功能与实现要点

源码基准:rk3588/kernel-6.1/drivers/usb/atm/

1. 目录定位

该目录实现 通过 USB 连接的 xDSL(ADSL 等)调制解调器 与 Linux ATM 子系统CONFIG_ATM)之间的桥梁:硬件把 ATM 信元流(常以 AAL5 封装)放在 USB bulk(少数 isoc)管道上,内核侧完成 URB 收发、SAR(分段与重组)、atm_dev 注册,供 pppoatm/br2684 等栈拨号或桥接。

典型用户:上世纪末至本世纪初 SpeedTouch / Conexant AccessRunner / ADI EagleUSB“宽带猫”(固件多由用户空间工具解压加载)。

与 RK3588:嵌入式 RK 平台几乎不用此类 USB DSL;目录属于 遗留宽带接入,默认内核常 CONFIG_USB_ATM=n


2. Kconfig / Makefile 结构

选项 对象 说明
USB_ATM usbatm.o 核心框架,依赖 ATMselect CRC32
USB_SPEEDTOUCH speedtch.o Alcatel SpeedTouch(需 FW_LOADER
USB_CXACRU cxacru.o Conexant AccessRunner
USB_UEAGLEATM ueagle-atm.o ADI 930 / Eagle
USB_XUSBATM xusbatm.o 通用占位:模块参数指定 VID/PID/端点

mini-driver 调用 usbatm_usb_probe() / usbatm_usb_disconnect()(导出符号),填入 struct usbatm_driver


3. 核心:usbatm.c / usbatm.h

3.1 struct usbatm_driver(mini-driver 契约)

生命周期(注释约定顺序):bindheavy_initatm_start → … → atm_stopunbind

  • bind:探测阶段初始化(可 sleep),通常 找 bulk IN/OUT(或 isoc)端点、申请资源。
  • heavy_init较慢 的步骤(如等待固件就绪),可在 probe 延后工作队列 里跑。
  • atm_start/atm_stop:对接 struct atm_dev(速率、类型等)。
  • bulk_in/bulk_out/isoc_in:端点地址编号;rx_padding/tx_padding:部分 Modem 在信元外加填充。

标志:UDSL_SKIP_HEAVY_INITUDSL_USE_ISOCUDSL_IGNORE_EILSEQ

3.2 数据通路

  • struct usbatm_channelRX/TXURB(模块参数 num_rcv_urbs/num_snd_urbs、缓冲大小)、tasklet 处理完成队列。
  • 接收:从 USB 缓冲中解析 ATM 信元AAL5 SARatm_skb_data、CRC32、分片重组 usbatm_vcc_data)。
  • 发送:将 atm_vcc 下发的 sk_buff 编码进 bulk 缓冲提交 URB
  • atm_dev_register:注册 atm_dev,与 atm_ioctl/proc 等 ATM 核心交互。

3.3 usbatm_usb_probe

统一 usb_driver 入口:引用计数、heavy_init 工作项、绑定通道、最终 atm_start;断开路径对称释放 URBatm_dev


4. 各 mini-driver 要点

  • speedtch.c厂商控制消息轮询、request_firmware 加载 两段固件(与 linux-usb.org/SpeedTouch 文档一致),再落到标准 usbatm RX/TX。
  • cxacru.c / ueagle-atm.c:类似模式——Vendor 控制传输 + 固件/CMV,细节各异。
  • xusbatm.c:无专用协议;通过 module_param_array 绑定最多 8VID/PID/端点/altsetting,适合 用户态已初始化 的冷门机型。

5. 小结

层次 职责
ATM 核心 atm_devVCCAAL5 统计与 ioctl
usbatm 核心 URB 环信元 SARtasklet/线程协作
mini-driver USB 描述符/固件/控制面

整体上这是 「USB 大块传输 + ATM SAR」 的经典分层;现代宽带多为 以太网 WAN / PCI-E / SoC 内置 PHY,该类驱动维护热度已很低。

文章互动

阅读 --

留言

0 条留言

正在加载留言…