On Fri, 2015-07-31 at 20:53 +0800, Chenhui Zhao wrote: > In the last stage of deep sleep, software will trigger a Finite > State Machine (FSM) to control the hardware precedure, such as > board isolation, killing PLLs, removing power, and so on. > > When the system is waked up by an interrupt, the FSM controls the > hardware to complete the early resume precedure. > > This patch configure the EPU FSM preparing for deep sleep. > > Signed-off-by: Chenhui Zhao <chenhui.z...@freescale.com> > --- > arch/powerpc/platforms/85xx/Makefile | 2 +- > arch/powerpc/platforms/85xx/sleep_fsm.c | 256 > ++++++++++++++++++++++++++++++++ > arch/powerpc/platforms/85xx/sleep_fsm.h | 104 +++++++++++++ > 3 files changed, 361 insertions(+), 1 deletion(-) > create mode 100644 arch/powerpc/platforms/85xx/sleep_fsm.c > create mode 100644 arch/powerpc/platforms/85xx/sleep_fsm.h
When I asked why this was in drivers/platform[1], you said it was to share with LS1, and that the values used were the same -- so why did you move it to arch/powerpc? [1] Note that other proposed patches create a drivers/soc/fsl instead of drivers/platform/fsl... We need one of them, not both. > +void fsl_fsm_setup(void __iomem *base, struct fsm_reg_vals *val) > +{ > + struct fsm_reg_vals *data = val; > + > + BUG_ON(!base || !data); This BUG_ON is useless. If one of those is NULL you'll get an oops anyway. > diff --git a/arch/powerpc/platforms/85xx/sleep_fsm.h > b/arch/powerpc/platforms/85xx/sleep_fsm.h > new file mode 100644 > index 0000000..2c60b40 > --- /dev/null > +++ b/arch/powerpc/platforms/85xx/sleep_fsm.h > @@ -0,0 +1,104 @@ > +/* > + * Freescale deep sleep FSM (finite-state machine) configuration > + * > + * Copyright 2015 Freescale Semiconductor Inc. > + * > + * This program is free software; you can redistribute it and/or modify it > + * under the terms of the GNU General Public License as published by the > + * Free Software Foundation; either version 2 of the License, or (at your > + * option) any later version. > + */ > +#ifndef _FSL_SLEEP_FSM_H > +#define _FSL_SLEEP_FSM_H > + > +#define FSL_STRIDE_4B 4 > +#define FSL_STRIDE_8B 8 Why not just use 4/8 directly? > > +/* Block offsets */ > +#define RCPM_BLOCK_OFFSET 0x00022000 > +#define EPU_BLOCK_OFFSET 0x00000000 > +#define NPC_BLOCK_OFFSET 0x00001000 I thought you said OK to not putting these offsets in the kernel source... -Scott _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev