SM501 驱动程序¶
- 版权:
© 2006, 2007 Simtec Electronics
Silicon Motion SM501 多媒体配套芯片是一种多功能设备,可提供多种接口,包括 USB 主机控制器 USB 设备、异步串行端口、音频功能和双显示视频接口。该设备可以通过 PCI 或本地总线连接,启用不同的功能。
核心¶
drivers/mfd 中的核心驱动程序为管理特定硬件块的驱动程序提供通用服务。这些服务包括公共寄存器的锁定、时钟控制和资源管理。
核心驱动程序通过平台设备和驱动程序系统为基于 PCI 和通用总线的芯片注册驱动程序。
在检测到设备时,核心初始化芯片(可以由平台数据指定),然后将选定的外围设备集作为特定驱动程序的平台设备导出。
核心重用平台设备系统,因为平台设备系统提供了足够的功能来支持驱动程序,而无需创建新的总线类型和相关的代码。
资源¶
每个外围设备都有一个设备视图,该视图隐式地缩小到外围设备正常运行所需的一组特定资源。
集中式内存分配允许驱动程序确保可以为视频子系统进行最大可能的资源分配,因为这是片上功能中最资源敏感的。
内存分配的主要问题是,一旦选择了显示模式,就移动视频缓冲区。实际上,当发生视频模式更改时,视频子系统的内存占用会发生变化。
由于视频内存难以在不更改显示的情况下移动(除非可以为旧模式和新模式同时提供足够的连续内存),因此视频驱动程序通过将 fb0 与区域的开头对齐,将 fb1 与区域的结尾对齐,从而充分利用分配给它的内存区域。中间剩下的任何内存都用于加速功能,这些功能是瞬态的,因此它们的位置不太关键,因为可以移动它。
配置¶
平台设备驱动程序使用一组平台数据将配置传递给核心和辅助驱动程序,以便可以支持在单个内核映像中内置 SM501 的多个系统。
PCI 驱动程序假定 PCI 卡的行为符合 Silicon Motion 参考设计。
存在一个影响 M1XCLK 和 M1CLK 频率选择的勘误(AB-5)。这两个时钟必须来自同一个 PLL,尽管它们可以单独分频。如果未设置此项,则 SM501 可能会锁定并挂起整个系统。如果 PLL 选择不同,驱动程序将拒绝连接。