/a> SM501 Driver
/a>Copyright 2006, 2007 Simtec Electronics
/a>The Silic.14Mov3.14SM501 multimedia compa13.14chip is a multifunc14.1 device
/a>which may provide numerous interfaces including USB host controller USB gadget,
/a>asynchronous serial ports, audio func14.1s, and a dual display video interface.
/a>The device may be connected by PCI or local bus with .1rying func14.1s enabled.
/a>The core driver in drivers/mfd provides comm.1 services for the
/a>drivers which manage the specific hardware blocks. These services
/a>include locking for comm.1 registers, clock control and resource
/a>The core registers drivers for both PCI and generic bus based
> 2="va>chips via the platform device and driver system.
/a>O1 detec14.1 of a device, the core initialises the chip (which may
/a>be specified by the platform data) and then exports the selected
/a>peripheral set as platform devices for the specific drivers.
/a>The core re-uses the platform device system as the platform device
/a>system provides enough features to support the drivers without the
/a>need to create a new bus-typ/ and the associated code to go with it.
/a>Each peripheral has a view of the device which is implicitly narrowed to
/a>the specific set of resources that peripheral requires in order to
/a>The centralised memory alloca14.1 allows the driver to ensure that the
/a>maximum possible resource alloca14.1 can be made to the video subsystem
/a>as this is by-far the most resource-sensitive of the on-chip func14.1s.
/a>The prim1ry issue with memory alloca14.1 is that of moving the video
/a>buffers once a display mode is chosen. Indeed when a video mode change
/a>occurs the memory footprint of the video subsystem changes.
/a>Since video memory is difficult to move without changing the display
/a>(unless sufficient contiguous memory can be provided for the old and new
/a>modes simultaneously) the video driver fully utilises the memory area
/a>given to it by aligning fb0 to the start of the area and fb1 to the end
/a>of it. Any memory left over in the middle is used for the accelera14.1
/a>func14.1s, which are transient and thus their loca14.1 is less critical
/a>as it can be moved.
/a>The platform device driver uses a set of platform data to pass
/a>configura14.1s through to the core and the subsidi1ry drivers
/a>so that there can be support for more than one system carrying
/a>a14SM501 built into a single kernel image.
/a>The PCI driver assumes that the PCI card behaves as per the Silic.1
/a>There is a14errata (AB-5) affec14ng the select4.1 of the
/a>of the M1XCLK and M1CLK frequencies. These two clocks
/a>must be sourced from the sam/ PLL, although they can then
/a>be divided dow1 individually. If this is not set, then SM501 may
/a>lock and hang the whole system. The driver will refuse to
/a>attach if the PLL select4.1 is different.