Subject: [PATCH 2/2] remoteproc: add support to handle internal memories

From: [email-masked] (Suman Anna)
Date: Mon, 15 Sep 2014 14:39:46 -0500

Hi Ohad,

> On Tue, Jul 29, 2014 at 10:33 PM, Suman Anna <[email-masked]> wrote:
>> We currently have two usecases. The primary usecase is the WkupM3
>> processor on TI Sitara AM335x/AM437x SoCs used for suspend/resume
>> management. This series is a dependency for the WkupM3 remoteproc driver
>> that Dave posted [1]. More details are in section 8.1.4.6 of the AM335x
>> TRM [2]. The program/data sections for this processor all _needs_ to be
>> in the two internal memory RAMS (16K Unified RAM and 8K Data RAM), and
>> there is no MMU for this processor. The current RSC_CARVEOUT and
>> RSC_DEVMEM do not fit to describe this type of memory (we neither
>> allocate memory through dma api nor do we need to map these into an MMU).
> 
> Thanks for the details.
> 
> Can we define a CMA block for these regions, and then just use
> carveout resource entries instead of the ioremap approach?

I am looking at refreshing these patches, and found that I missed
responding to this message.

These processors need to use their internal RAM for loading, which is
not for generic usage by the kernel, so defining a CMA block for this
memory doesn't make sense.

> This may require some changes in remoteproc which we'll need to think
> about, but it sounds like it may fit the problem better instead of
> forcing ioremap to provide a regular pointer (we're supposed to use
> ioremaped memory only with memory primitives such as readl/writel/..).

Will it suffice to replace the memcpy() with memcpy_toio()?

regards
Suman