Hi!
I go forward with my personal project, where I try to move from a working 3.0 kernel to 3.4 kernel.
I have a custom board, archos g9 series with omap 4460 chip and 1Gbyte of RAM.
Due the fact that I want to use the camera driver and the OMX components, I have to use the ducati-m3.bin firmware binary from the vendor,
I can't use the remoteproc/rpmsg implementation of the 3.4 series (and up).
So I forward-ported this components into this 3.4 tree. (Mainly the iommu access needs to modified). I have some success:
-
HD video working
-
Camera drivers working
Currently an issue is the suspend mode. It seems that the processor doesn't enters the power saving mode.
In file omap_remoteproc.c there is the function _suspend which is called, in case the remoteproc should be switched the power mode.
static int _suspend(struct omap_rproc_priv *rpp, bool force)
{
unsigned long timeout = msecs_to_jiffies(PM_SUSPEND_TIMEOUT) + jiffies;
if (force)
omap_mbox_msg_send(rpp->mbox, PM_SUSPEND_MBOX_FORCE);
else
omap_mbox_msg_send(rpp->mbox, PM_SUSPEND_MBOX);
while (time_after(timeout, jiffies)) {
if ((readl(rpp->suspend) & rpp->suspend_mask) &&
(readl(rpp->idle) & rpp->idle_mask))
return 0;
schedule();
}
return -EAGAIN;
}
|
Within the while loop, there are checked continuously the suspend and idle adress.
Both seems to not match the idle/suspend mask. (More detail: suspend value is always 0, where idle value contains some value, I'm not sure If they match the mask, since the suspend value has first priority).
I don't have any glue, how to solve the problem :-(.
Maybe someone can give some hints how I can be sure, that the mailbox delivers the PM_SUSPEND_MBOX/PM_SUSPEND_MBOX_FORCE request.
Is there an way to identify that the remoteproc received this event and has processed it?
Another case is, that the remoteproc is busy all the time, but how can I see what they is doing?
Thanks :-)