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