The functions BSPClockSetpointRequest() and BSPClockSetpointRelease() are used to allow other drivers or applications to control some aspects of the DVFS operation, in this case, we prohibited the low work point to be set from application or other drivers. (The reason: when LCD, USB, ENET is working, set to low work point has chance to hang up the system).
But we haven’t prohibited the low work point, as I mentioned in old mail, the OAL cpu loading checking code OALTimerNotifyReschedule() will check the run time CPU loading and notify DVFC driver to switch the work point, in this mode, the low point will also be used. To show such information, you can do the followed testing:
- Enable the DVFC driver debug messages: in file “wince600\platform\imx28-evk-pdk1_9\src\drivers\dvfc\dvfc.c”, change “#define DVFC_VERBOSE” from FALSE to TRUE.
- Built in the DVFC driver, in WinCE catalog, select it.
- Remove the ENET driver from WinCR catalog.
- Built out WinCE image and downloaded it to board.
- Set WinCE timeout setting as followed for both AC and Battery power mode:
- Disconnected the USB cable and wait. (After removed the USB cable, USB clock will be turned off by freescale USB driver; after WinCE timeout to system IDLE mode, display will be turned off and ELCDIF clock will be turned off, the CPU will run into low work point from interrupt of OALTimerNotifyReschedule().)
- From debug serial port, you can see debug messages as “Setpoint HIGH”, “Setpoint MED”, “Setpoint LOW”.
For another words, the two functions BSPClockSetpointRequest() and BSPClockSetpointRelease() are not the must functions for DVFC function, the DVFC driver can run only based on CPU loading checking. Those two functions gave the interface for other drivers and applications wo switch the DVFC mode directly. They are the two way for CPU work point switching.