Thread (1 message) 1 message, 1 author, 2014-09-29
DORMANTno replies

Revision v1 of 3 in this series.

Revisions (3)
  1. v1 [diff vs current]
  2. v1 [diff vs current]
  3. v1 current

[PATCH 0/9] ARM: vf610: Suspend/resume support

From: Bill Pringlemeir <hidden>
Date: 2014-09-29 15:39:11

quoted
On Wed, Sep 24, 2014 at 12:33:00PM -0400, Bill Pringlemeir wrote:
quoted
quoted
quoted
quoted
I think that Shawn Guo already did a patchset to remove stuff from
the vf610.dtsi to the machine/configuration DT files.
Am 2014-09-28 05:08, schrieb Shawn Guo:
quoted
Do you mean the pin configuration?  That's really more
board-specific.  But IP block/device is not really the case.
Ok.  But if a DT does not use a IP block/device, then it is extra stuff
in the DT.  I see you only meant the pin configuration which can be
quite large.  So it makes sense to only apply this for the pins.
quoted
On Wed, Sep 24, 2014 at 12:33:00PM -0400, Bill Pringlemeir wrote:
quoted
In this patchset, I suggested that we could include the notation in
the headers which are included in the 'DT' files.  So instead of
'dtsi', we could use,

#define VF610_GPC_SUPPORT \
gpc: gpc at 4006c000 {                \
compatible = "fsl,vf610-gpc"; \
reg = <0x4006c000 0x1000>;    \
};

Or even,

#define VF610_SUSPEND_DT_SUPPORT \ ...
Am 2014-09-28 05:08, schrieb Shawn Guo:
quoted
I don't think this will be accepted by DT maintainers.  We have
already got some objections when we define pin function ID as
multiple integers.  They expect the DT macro is used for single
integer case.
Supporting status="disabled" and/or requiring enabled is also good.  Is
that the 'DT' approved mechanism?

[snip]
quoted
On Wed, Sep 24, 2014 at 12:33:00PM -0400, Bill Pringlemeir wrote:
quoted
We have,

arch/arm/mach-imx/gpc.c

void __init vf610_gpc_init(void)
{
struct device_node *np;

np = of_find_compatible_node(NULL, NULL, "fsl,vf610-gpc");
gpc_base = of_iomap(np, 0);
gpc_imr_base = gpc_base + VF610_GPC_IMR1;
...

arch/arm/mach-imx/mach-vf610.c

static void __init vf610_init_irq(void)
{
vf610_gpc_init();
irqchip_init();
}
quoted
quoted
I don't think this will work.
Am 2014-09-28 05:08, schrieb Shawn Guo:
quoted
Yes, you're right.  But I guess this can be fixed by an additional
of_device_is_available() check after of_find_compatible_node() call.
quoted
On Wed, Sep 24, 2014 at 12:33:00PM -0400, Bill Pringlemeir wrote:
quoted
quoted
Not to mention that 'mach-vf610.c' will not build if HAVE_IMX_GPC is
not defined.
Am 2014-09-28 05:08, schrieb Shawn Guo:
quoted
HAVE_IMX_GPC cannot be configured out, because it's selected by 
SOC_VF610.
On 29 Sep 2014, stefan at agner.ch wrote:
Maybe we can make that optional when CONFIG_PM is on, e.g.
select HAVE_IMX_GPC if PM
The GPC module is all about power management, hence in case we want
the M4 taken care of that, we just have to configure a Linux kernel
without CONFIG_PM support.
Yes as per the paragraph below, I am concerned about adding too many
modules (or making inter-modules dependencies) in the drivers.  I guess
in a Quad-core iMx6, a system might want one CPU dedicated to some
feature (non-Linux).  For the Vybrid, VF6xx, this is pretty much a sure
thing.  There is an M4, and it does have I/D TCM, but to do anything
useful it has to have some AIPS modules.
quoted
quoted
Also, I don't really see a use of the GPC module unless
suspend/resume is active?  Even some wall powered designs may wish
to exclude this functionality?
quoted
quoted
I think that the SRC maybe needed for secure parts.  I think that
some designs might wish to restrict Linux's access to these
registers as well.  I don't actually see why we need this module?  I
think the imx6 needs it due to multi-CPU bring-up, but in the Vybrid
case, this does not exist.  Can you check to see why we need the
SRC?  I don't see where we actually use it?  In patch9/9, we record
it but do we actually access the registers?  Is it just for the
vf610_src_init() code?  Even that seems the whole 'src.c' file is
only needed for the 'src_base' reference, which we don't use?
quoted
+1.  I'm also wondering how SRC is used by suspend routine in this
series.
Well I tried to bring LPStop modes to work, which would need GPR0/GPR1
registers of SRC. If I have it working in the next series, I will need
that, but if not, I will drop those changes.
Most people would want to use at least some IRAM for the M4 code space
as the TCM is rather limited.  Carving off the whole thing for Linux is
not great either.  The imx series had an iram allocator by Sacha Hauer?
However, I don't see this in the mainline anymore.  Is the IRAM
statically allocated by 'DT'?  For the 'memory' node, we keep this in
the machine 'DT', so someone could carve off DDR3 for the M4.  I don't
think the initial series used the IRAM either?  But it is more clear to
me why you wanted that.

I think we might exclude the IRAM and SRC from the initial series?  At
least this patchset might hang around before the LPStop is accepted and
merged? Or you could roll them together so at least we could see what
was next?  I guess you might not have polished the LPSTOP as well and
aren't ready for review.  But I think the changes to remove the SRC and
IRAM aren't too big to get this applied and then later merge them?

Fwiw,
Bill Pringlemeir.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help