You can clone with
Cannot retrieve contributors at this time
SM501 Driver ============Copyright 2006, 2007 Simtec ElectronicsThe Silicon Motion SM501 multimedia companion chip is a multifunction devicewhich may provide numerous interfaces including USB host controller USB gadget,asynchronous serial ports, audio functions, and a dual display video interface.The device may be connected by PCI or local bus with varying functions enabled.Core----The core driver in drivers/mfd provides common services for thedrivers which manage the specific hardware blocks. These servicesinclude locking for common registers, clock control and resourcemanagement.The core registers drivers for both PCI and generic bus basedchips via the platform device and driver system.On detection of a device, the core initialises the chip (which maybe specified by the platform data) and then exports the selectedperipheral set as platform devices for the specific drivers.The core re-uses the platform device system as the platform devicesystem provides enough features to support the drivers without theneed to create a new bus-type and the associated code to go with it.Resources---------Each peripheral has a view of the device which is implicitly narrowed tothe specific set of resources that peripheral requires in order tofunction correctly.The centralised memory allocation allows the driver to ensure that themaximum possible resource allocation can be made to the video subsystemas this is by-far the most resource-sensitive of the on-chip functions.The primary issue with memory allocation is that of moving the videobuffers once a display mode is chosen. Indeed when a video mode changeoccurs the memory footprint of the video subsystem changes.Since video memory is difficult to move without changing the display(unless sufficient contiguous memory can be provided for the old and newmodes simultaneously) the video driver fully utilises the memory areagiven to it by aligning fb0 to the start of the area and fb1 to the endof it. Any memory left over in the middle is used for the accelerationfunctions, which are transient and thus their location is less criticalas it can be moved.Configuration-------------The platform device driver uses a set of platform data to passconfigurations through to the core and the subsidiary driversso that there can be support for more than one system carryingan SM501 built into a single kernel image.The PCI driver assumes that the PCI card behaves as per the SiliconMotion reference design.There is an errata (AB-5) affecting the selection of theof the M1XCLK and M1CLK frequencies. These two clocksmust be sourced from the same PLL, although they can thenbe divided down individually. If this is not set, then SM501 maylock and hang the whole system. The driver will refuse toattach if the PLL selection is different.