[PATCH 0/9] ARM: vf610: Suspend/resume support
Stefan Agner
stefan at agner.ch
Mon Sep 29 05:47:13 PDT 2014
Hi Bill, Hi Shawn,
Am 2014-09-28 05:08, schrieb Shawn Guo:
> On Wed, Sep 24, 2014 at 12:33:00PM -0400, Bill Pringlemeir wrote:
>> >> I think that Shawn Guo already did a patchset to remove stuff from
>> >> the vf610.dtsi to the machine/configuration DT files.
>
> Do you mean the pin configuration? That's really more board-specific.
> But IP block/device is not really the case.
>
>>
>> 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 \ ...
>
> 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.
>
>>
>> Anyways, the DT issue doesn't matter so much. People will have to make
>> custom versions for their own boards. Although, I don't think it is not
>> that hard to support it at the machine level.
>>
>> I agree that so far there are some peripherals that make it difficult to
>> run the mainline Linux with an MQX. However, I think this patch set
>> seems to bring it closer to making it impossible. I am only suggesting
>> that we make it a configuration option and not include it for all Vybrid
>> devices.
>>
>> Is it clear that the desired way is to use,
>>
>> &gpc { status = "disabled"; };
>> &src { status = "disabled"; };
>>
>> 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();
>> }
>>
>> ...
>>
>> + .init_irq = vf610_init_irq,
>>
>> I don't think this will work.
>
> 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.
>
>> Not to mention that 'mach-vf610.c' will
>> not build if HAVE_IMX_GPC is not defined.
>
> HAVE_IMX_GPC cannot be configured out, because it's selected by
> SOC_VF610.
>
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.
>> 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?
>>
>> 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?
>
> +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.
--
Stefan
More information about the linux-arm-kernel
mailing list