diff mbox

[v2] ARM: AM43xx: hwmod: add VPFE hwmod entries

Message ID 1422217915-24231-1-git-send-email-prabhakar.csengg@gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Lad, Prabhakar Jan. 25, 2015, 8:31 p.m. UTC
From: Benoit Parrot <bparrot@ti.com>

this patch adds VPFE HWMOD data for AM43xx.

Signed-off-by: Benoit Parrot <bparrot@ti.com>
Signed-off-by: Darren Etheridge <detheridge@ti.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
Signed-off-by: Lad, Prabhakar <prabhakar.csengg@gmail.com>
---
 Hi Paul,
 
 You were right, the hardware team has confirmed that, the VPFE master port is
 connected to L3 and the VPFE slave port is connected to L4. The L3 port cannot
 serve as a register target because it is initiator only.
 
 I have created links referring to dss l3/l4 hwmod and tested it, lemme know
 if I have missed something.
 
 arch/arm/mach-omap2/omap_hwmod_43xx_data.c | 72 ++++++++++++++++++++++++++++++
 arch/arm/mach-omap2/prcm43xx.h             |  3 +-
 2 files changed, 74 insertions(+), 1 deletion(-)

Comments

Paul Walmsley Jan. 26, 2015, 2:15 a.m. UTC | #1
Hi

On Sun, 25 Jan 2015, Lad, Prabhakar wrote:

> From: Benoit Parrot <bparrot@ti.com>
> 
> this patch adds VPFE HWMOD data for AM43xx.
> 
> Signed-off-by: Benoit Parrot <bparrot@ti.com>
> Signed-off-by: Darren Etheridge <detheridge@ti.com>
> Signed-off-by: Felipe Balbi <balbi@ti.com>
> Signed-off-by: Lad, Prabhakar <prabhakar.csengg@gmail.com>
> ---
>  Hi Paul,
>  
>  You were right, the hardware team has confirmed that, the VPFE master port is
>  connected to L3 and the VPFE slave port is connected to L4. The L3 port cannot
>  serve as a register target because it is initiator only.

OK makes sense to me.,

>  
>  I have created links referring to dss l3/l4 hwmod and tested it, lemme know
>  if I have missed something.

A few minor comments below

>  
>  arch/arm/mach-omap2/omap_hwmod_43xx_data.c | 72 ++++++++++++++++++++++++++++++
>  arch/arm/mach-omap2/prcm43xx.h             |  3 +-
>  2 files changed, 74 insertions(+), 1 deletion(-)
> 
> diff --git a/arch/arm/mach-omap2/omap_hwmod_43xx_data.c b/arch/arm/mach-omap2/omap_hwmod_43xx_data.c
> index 5c6c841..3787824 100644
> --- a/arch/arm/mach-omap2/omap_hwmod_43xx_data.c
> +++ b/arch/arm/mach-omap2/omap_hwmod_43xx_data.c
> @@ -514,6 +514,44 @@ static struct omap_hwmod am43xx_dss_rfbi_hwmod = {
>  	},
>  };
>  
> +static struct omap_hwmod_class_sysconfig am43xx_vpfe_sysc = {
> +	.rev_offs       = 0x0,
> +	.sysc_offs      = 0x104,
> +	.sysc_flags     = SYSC_HAS_MIDLEMODE | SYSC_HAS_SIDLEMODE,
> +	.idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
> +				MSTANDBY_FORCE | MSTANDBY_SMART | MSTANDBY_NO),
> +	.sysc_fields    = &omap_hwmod_sysc_type2,
> +};
> +
> +static struct omap_hwmod_class am43xx_vpfe_hwmod_class = {
> +	.name           = "vpfe",
> +	.sysc           = &am43xx_vpfe_sysc,
> +};
> +
> +static struct omap_hwmod am43xx_vpfe0_hwmod = {
> +	.name           = "vpfe0",
> +	.class          = &am43xx_vpfe_hwmod_class,
> +	.clkdm_name     = "l3s_clkdm",
> +	.prcm           = {
> +		.omap4  = {
> +			.modulemode     = MODULEMODE_SWCTRL,
> +			.clkctrl_offs   = AM43XX_CM_PER_VPFE0_CLKCTRL_OFFSET,
> +		},
> +	},
> +};
> +
> +static struct omap_hwmod am43xx_vpfe1_hwmod = {
> +	.name           = "vpfe1",
> +	.class          = &am43xx_vpfe_hwmod_class,
> +	.clkdm_name     = "l3s_clkdm",
> +	.prcm           = {
> +		.omap4  = {
> +			.modulemode     = MODULEMODE_SWCTRL,
> +			.clkctrl_offs   = AM43XX_CM_PER_VPFE1_CLKCTRL_OFFSET,
> +		},
> +	},
> +};
> +
>  /* Interfaces */
>  static struct omap_hwmod_ocp_if am43xx_l3_main__l4_hs = {
>  	.master		= &am33xx_l3_main_hwmod,
> @@ -788,6 +826,36 @@ static struct omap_hwmod_ocp_if am43xx_l4_ls__dss_rfbi = {
>  	.user		= OCP_USER_MPU | OCP_USER_SDMA,
>  };
>  
> +static struct omap_hwmod_ocp_if am43xx_l3__vpfe0 = {
> +	.master         = &am43xx_vpfe0_hwmod,
> +	.slave          = &am33xx_l3_main_hwmod,
> +	.clk            = "l3_gclk",
> +	.flags          = OCPIF_SWSUP_IDLE,

OCPIF_SWSUP_IDLE probably isn't needed here.  Could you please try without 
it?

> +	.user           = OCP_USER_MPU | OCP_USER_SDMA,
> +};
> +
> +static struct omap_hwmod_ocp_if am43xx_l3__vpfe1 = {
> +	.master         = &am43xx_vpfe1_hwmod,
> +	.slave          = &am33xx_l3_main_hwmod,
> +	.clk            = "l3_gclk",
> +	.flags          = OCPIF_SWSUP_IDLE,

Same point as the above.

> +	.user           = OCP_USER_MPU | OCP_USER_SDMA,
> +};
> +
> +static struct omap_hwmod_ocp_if am43xx_l4_ls__vpfe0 = {
> +	.master         = &am33xx_l4_ls_hwmod,
> +	.slave          = &am43xx_vpfe0_hwmod,
> +	.clk            = "l4ls_gclk",
> +	.user           = OCP_USER_MPU | OCP_USER_SDMA,
> +};
> +
> +static struct omap_hwmod_ocp_if am43xx_l4_ls__vpfe1 = {
> +	.master         = &am33xx_l4_ls_hwmod,
> +	.slave          = &am43xx_vpfe1_hwmod,
> +	.clk            = "l4ls_gclk",
> +	.user           = OCP_USER_MPU | OCP_USER_SDMA,
> +};
> +
>  static struct omap_hwmod_ocp_if *am43xx_hwmod_ocp_ifs[] __initdata = {
>  	&am33xx_l4_wkup__synctimer,
>  	&am43xx_l4_ls__timer8,
> @@ -887,6 +955,10 @@ static struct omap_hwmod_ocp_if *am43xx_hwmod_ocp_ifs[] __initdata = {
>  	&am43xx_l4_ls__dss,
>  	&am43xx_l4_ls__dss_dispc,
>  	&am43xx_l4_ls__dss_rfbi,
> +	&am43xx_l3__vpfe0,
> +	&am43xx_l3__vpfe1,
> +	&am43xx_l4_ls__vpfe0,
> +	&am43xx_l4_ls__vpfe1,
>  	NULL,
>  };
>  
> diff --git a/arch/arm/mach-omap2/prcm43xx.h b/arch/arm/mach-omap2/prcm43xx.h
> index ad7b3e9..8aa4c2c 100644
> --- a/arch/arm/mach-omap2/prcm43xx.h
> +++ b/arch/arm/mach-omap2/prcm43xx.h
> @@ -143,5 +143,6 @@
>  #define AM43XX_CM_PER_USB_OTG_SS1_CLKCTRL_OFFSET        0x0268
>  #define AM43XX_CM_PER_USBPHYOCP2SCP1_CLKCTRL_OFFSET	0x05C0
>  #define AM43XX_CM_PER_DSS_CLKCTRL_OFFSET		0x0a20
> -
> +#define AM43XX_CM_PER_VPFE0_CLKCTRL_OFFSET		0x0068
> +#define AM43XX_CM_PER_VPFE1_CLKCTRL_OFFSET		0x0070
>  #endif
> -- 
> 2.1.0
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-omap" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 


- Paul
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Lad, Prabhakar Jan. 26, 2015, 8:13 a.m. UTC | #2
Hi Paul,

Thanks for the review.

On Mon, Jan 26, 2015 at 2:15 AM, Paul Walmsley <paul@pwsan.com> wrote:
> Hi
>
> On Sun, 25 Jan 2015, Lad, Prabhakar wrote:
>
>> From: Benoit Parrot <bparrot@ti.com>
>>
>> this patch adds VPFE HWMOD data for AM43xx.
>>
>> Signed-off-by: Benoit Parrot <bparrot@ti.com>
>> Signed-off-by: Darren Etheridge <detheridge@ti.com>
>> Signed-off-by: Felipe Balbi <balbi@ti.com>
>> Signed-off-by: Lad, Prabhakar <prabhakar.csengg@gmail.com>
>> ---
>>  Hi Paul,
>>
>>  You were right, the hardware team has confirmed that, the VPFE master port is
>>  connected to L3 and the VPFE slave port is connected to L4. The L3 port cannot
>>  serve as a register target because it is initiator only.
>
> OK makes sense to me.,
>
>>
>>  I have created links referring to dss l3/l4 hwmod and tested it, lemme know
>>  if I have missed something.
>
> A few minor comments below
>
>>
[Snip]
>>  /* Interfaces */
>>  static struct omap_hwmod_ocp_if am43xx_l3_main__l4_hs = {
>>       .master         = &am33xx_l3_main_hwmod,
>> @@ -788,6 +826,36 @@ static struct omap_hwmod_ocp_if am43xx_l4_ls__dss_rfbi = {
>>       .user           = OCP_USER_MPU | OCP_USER_SDMA,
>>  };
>>
>> +static struct omap_hwmod_ocp_if am43xx_l3__vpfe0 = {
>> +     .master         = &am43xx_vpfe0_hwmod,
>> +     .slave          = &am33xx_l3_main_hwmod,
>> +     .clk            = "l3_gclk",
>> +     .flags          = OCPIF_SWSUP_IDLE,
>
> OCPIF_SWSUP_IDLE probably isn't needed here.  Could you please try without
> it?
>
>> +     .user           = OCP_USER_MPU | OCP_USER_SDMA,
>> +};
>> +
>> +static struct omap_hwmod_ocp_if am43xx_l3__vpfe1 = {
>> +     .master         = &am43xx_vpfe1_hwmod,
>> +     .slave          = &am33xx_l3_main_hwmod,
>> +     .clk            = "l3_gclk",
>> +     .flags          = OCPIF_SWSUP_IDLE,
>
> Same point as the above.
>
Dropped and tested works! posting a v3.

Cheers,
--Prabhakar Lad
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Benoit Parrot Jan. 26, 2015, 3:50 p.m. UTC | #3
Lad, Prabhakar <prabhakar.csengg@gmail.com> wrote on Mon [2015-Jan-26 08:13:01 +0000]:
> Hi Paul,
> 
> Thanks for the review.
> 
> On Mon, Jan 26, 2015 at 2:15 AM, Paul Walmsley <paul@pwsan.com> wrote:
> > Hi
> >
> > On Sun, 25 Jan 2015, Lad, Prabhakar wrote:
> >
> >> From: Benoit Parrot <bparrot@ti.com>
> >>
> >> this patch adds VPFE HWMOD data for AM43xx.
> >>
> >> Signed-off-by: Benoit Parrot <bparrot@ti.com>
> >> Signed-off-by: Darren Etheridge <detheridge@ti.com>
> >> Signed-off-by: Felipe Balbi <balbi@ti.com>
> >> Signed-off-by: Lad, Prabhakar <prabhakar.csengg@gmail.com>
> >> ---
> >>  Hi Paul,
> >>
> >>  You were right, the hardware team has confirmed that, the VPFE master port is
> >>  connected to L3 and the VPFE slave port is connected to L4. The L3 port cannot
> >>  serve as a register target because it is initiator only.
> >
> > OK makes sense to me.,
> >
> >>
> >>  I have created links referring to dss l3/l4 hwmod and tested it, lemme know
> >>  if I have missed something.
> >
> > A few minor comments below
> >
> >>
> [Snip]
> >>  /* Interfaces */
> >>  static struct omap_hwmod_ocp_if am43xx_l3_main__l4_hs = {
> >>       .master         = &am33xx_l3_main_hwmod,
> >> @@ -788,6 +826,36 @@ static struct omap_hwmod_ocp_if am43xx_l4_ls__dss_rfbi = {
> >>       .user           = OCP_USER_MPU | OCP_USER_SDMA,
> >>  };
> >>
> >> +static struct omap_hwmod_ocp_if am43xx_l3__vpfe0 = {
> >> +     .master         = &am43xx_vpfe0_hwmod,
> >> +     .slave          = &am33xx_l3_main_hwmod,
> >> +     .clk            = "l3_gclk",
> >> +     .flags          = OCPIF_SWSUP_IDLE,
> >
> > OCPIF_SWSUP_IDLE probably isn't needed here.  Could you please try without
> > it?
> >
> >> +     .user           = OCP_USER_MPU | OCP_USER_SDMA,
> >> +};
> >> +
> >> +static struct omap_hwmod_ocp_if am43xx_l3__vpfe1 = {
> >> +     .master         = &am43xx_vpfe1_hwmod,
> >> +     .slave          = &am33xx_l3_main_hwmod,
> >> +     .clk            = "l3_gclk",
> >> +     .flags          = OCPIF_SWSUP_IDLE,
> >
> > Same point as the above.
> >
> Dropped and tested works! posting a v3.

When you tested it without the OCPIF_SWSUP_IDLE, did you go trhough a complete suspend/resume cycle?
This flag was added early on because otherwise the susbsytem would not go idle without it...

Can you post the console output during a suspend/resume cycle?

Benoit

> 
> Cheers,
> --Prabhakar Lad
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Lad, Prabhakar Jan. 26, 2015, 3:56 p.m. UTC | #4
Hi Benoit,

On Mon, Jan 26, 2015 at 3:50 PM, Benoit Parrot <bparrot@ti.com> wrote:
> Lad, Prabhakar <prabhakar.csengg@gmail.com> wrote on Mon [2015-Jan-26 08:13:01 +0000]:
>> Hi Paul,
>>
>> Thanks for the review.
>>
>> On Mon, Jan 26, 2015 at 2:15 AM, Paul Walmsley <paul@pwsan.com> wrote:
>> > Hi
>> >
>> > On Sun, 25 Jan 2015, Lad, Prabhakar wrote:
>> >
>> >> From: Benoit Parrot <bparrot@ti.com>
>> >>
>> >> this patch adds VPFE HWMOD data for AM43xx.
>> >>
>> >> Signed-off-by: Benoit Parrot <bparrot@ti.com>
>> >> Signed-off-by: Darren Etheridge <detheridge@ti.com>
>> >> Signed-off-by: Felipe Balbi <balbi@ti.com>
>> >> Signed-off-by: Lad, Prabhakar <prabhakar.csengg@gmail.com>
>> >> ---
>> >>  Hi Paul,
>> >>
>> >>  You were right, the hardware team has confirmed that, the VPFE master port is
>> >>  connected to L3 and the VPFE slave port is connected to L4. The L3 port cannot
>> >>  serve as a register target because it is initiator only.
>> >
>> > OK makes sense to me.,
>> >
>> >>
>> >>  I have created links referring to dss l3/l4 hwmod and tested it, lemme know
>> >>  if I have missed something.
>> >
>> > A few minor comments below
>> >
>> >>
>> [Snip]
>> >>  /* Interfaces */
>> >>  static struct omap_hwmod_ocp_if am43xx_l3_main__l4_hs = {
>> >>       .master         = &am33xx_l3_main_hwmod,
>> >> @@ -788,6 +826,36 @@ static struct omap_hwmod_ocp_if am43xx_l4_ls__dss_rfbi = {
>> >>       .user           = OCP_USER_MPU | OCP_USER_SDMA,
>> >>  };
>> >>
>> >> +static struct omap_hwmod_ocp_if am43xx_l3__vpfe0 = {
>> >> +     .master         = &am43xx_vpfe0_hwmod,
>> >> +     .slave          = &am33xx_l3_main_hwmod,
>> >> +     .clk            = "l3_gclk",
>> >> +     .flags          = OCPIF_SWSUP_IDLE,
>> >
>> > OCPIF_SWSUP_IDLE probably isn't needed here.  Could you please try without
>> > it?
>> >
>> >> +     .user           = OCP_USER_MPU | OCP_USER_SDMA,
>> >> +};
>> >> +
>> >> +static struct omap_hwmod_ocp_if am43xx_l3__vpfe1 = {
>> >> +     .master         = &am43xx_vpfe1_hwmod,
>> >> +     .slave          = &am33xx_l3_main_hwmod,
>> >> +     .clk            = "l3_gclk",
>> >> +     .flags          = OCPIF_SWSUP_IDLE,
>> >
>> > Same point as the above.
>> >
>> Dropped and tested works! posting a v3.
>
> When you tested it without the OCPIF_SWSUP_IDLE, did you go trhough a complete suspend/resume cycle?
> This flag was added early on because otherwise the susbsytem would not go idle without it...
>
> Can you post the console output during a suspend/resume cycle?
>
Ah I didn’t test the suspend/resume will do and post the console log.

Cheers,
--Prabhakar Lad
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Paul Walmsley Jan. 26, 2015, 6:47 p.m. UTC | #5
Hi Prabhakar,

On Mon, 26 Jan 2015, Lad, Prabhakar wrote:

> Hi Benoit,
> 
> On Mon, Jan 26, 2015 at 3:50 PM, Benoit Parrot <bparrot@ti.com> wrote:
> > Lad, Prabhakar <prabhakar.csengg@gmail.com> wrote on Mon [2015-Jan-26 08:13:01 +0000]:
> >> Hi Paul,
> >>
> >> Thanks for the review.
> >>
> >> On Mon, Jan 26, 2015 at 2:15 AM, Paul Walmsley <paul@pwsan.com> wrote:
> >> > Hi
> >> >
> >> > On Sun, 25 Jan 2015, Lad, Prabhakar wrote:
> >> >
> >> >> From: Benoit Parrot <bparrot@ti.com>
> >> >>
> >> >> this patch adds VPFE HWMOD data for AM43xx.
> >> >>
> >> >> Signed-off-by: Benoit Parrot <bparrot@ti.com>
> >> >> Signed-off-by: Darren Etheridge <detheridge@ti.com>
> >> >> Signed-off-by: Felipe Balbi <balbi@ti.com>
> >> >> Signed-off-by: Lad, Prabhakar <prabhakar.csengg@gmail.com>
> >> >> ---
> >> >>  Hi Paul,
> >> >>
> >> >>  You were right, the hardware team has confirmed that, the VPFE master port is
> >> >>  connected to L3 and the VPFE slave port is connected to L4. The L3 port cannot
> >> >>  serve as a register target because it is initiator only.
> >> >
> >> > OK makes sense to me.,
> >> >
> >> >>
> >> >>  I have created links referring to dss l3/l4 hwmod and tested it, lemme know
> >> >>  if I have missed something.
> >> >
> >> > A few minor comments below
> >> >
> >> >>
> >> [Snip]
> >> >>  /* Interfaces */
> >> >>  static struct omap_hwmod_ocp_if am43xx_l3_main__l4_hs = {
> >> >>       .master         = &am33xx_l3_main_hwmod,
> >> >> @@ -788,6 +826,36 @@ static struct omap_hwmod_ocp_if am43xx_l4_ls__dss_rfbi = {
> >> >>       .user           = OCP_USER_MPU | OCP_USER_SDMA,
> >> >>  };
> >> >>
> >> >> +static struct omap_hwmod_ocp_if am43xx_l3__vpfe0 = {
> >> >> +     .master         = &am43xx_vpfe0_hwmod,
> >> >> +     .slave          = &am33xx_l3_main_hwmod,
> >> >> +     .clk            = "l3_gclk",
> >> >> +     .flags          = OCPIF_SWSUP_IDLE,
> >> >
> >> > OCPIF_SWSUP_IDLE probably isn't needed here.  Could you please try without
> >> > it?
> >> >
> >> >> +     .user           = OCP_USER_MPU | OCP_USER_SDMA,
> >> >> +};
> >> >> +
> >> >> +static struct omap_hwmod_ocp_if am43xx_l3__vpfe1 = {
> >> >> +     .master         = &am43xx_vpfe1_hwmod,
> >> >> +     .slave          = &am33xx_l3_main_hwmod,
> >> >> +     .clk            = "l3_gclk",
> >> >> +     .flags          = OCPIF_SWSUP_IDLE,
> >> >
> >> > Same point as the above.
> >> >
> >> Dropped and tested works! posting a v3.
> >
> > When you tested it without the OCPIF_SWSUP_IDLE, did you go trhough a complete suspend/resume cycle?
> > This flag was added early on because otherwise the susbsytem would not go idle without it...
> >
> > Can you post the console output during a suspend/resume cycle?
> >
> Ah I didn’t test the suspend/resume will do and post the console log.

Could you also do a suspend/resume test on v2?
 
thanks

- Paul
Benoit Parrot Jan. 28, 2015, 7:30 p.m. UTC | #6
Paul Walmsley <paul@pwsan.com> wrote on Mon [2015-Jan-26 18:47:11 +0000]:
> Hi Prabhakar,
> 
> On Mon, 26 Jan 2015, Lad, Prabhakar wrote:
> 
> > Hi Benoit,
> > 
> > On Mon, Jan 26, 2015 at 3:50 PM, Benoit Parrot <bparrot@ti.com> wrote:
> > > Lad, Prabhakar <prabhakar.csengg@gmail.com> wrote on Mon [2015-Jan-26 08:13:01 +0000]:
> > >> Hi Paul,
> > >>
> > >> Thanks for the review.
> > >>
> > >> On Mon, Jan 26, 2015 at 2:15 AM, Paul Walmsley <paul@pwsan.com> wrote:
> > >> > Hi
> > >> >
> > >> > On Sun, 25 Jan 2015, Lad, Prabhakar wrote:
> > >> >
> > >> >> From: Benoit Parrot <bparrot@ti.com>
> > >> >>
> > >> >> this patch adds VPFE HWMOD data for AM43xx.
> > >> >>
> > >> >> Signed-off-by: Benoit Parrot <bparrot@ti.com>
> > >> >> Signed-off-by: Darren Etheridge <detheridge@ti.com>
> > >> >> Signed-off-by: Felipe Balbi <balbi@ti.com>
> > >> >> Signed-off-by: Lad, Prabhakar <prabhakar.csengg@gmail.com>
> > >> >> ---
> > >> >>  Hi Paul,
> > >> >>
> > >> >>  You were right, the hardware team has confirmed that, the VPFE master port is
> > >> >>  connected to L3 and the VPFE slave port is connected to L4. The L3 port cannot
> > >> >>  serve as a register target because it is initiator only.
> > >> >
> > >> > OK makes sense to me.,
> > >> >
> > >> >>
> > >> >>  I have created links referring to dss l3/l4 hwmod and tested it, lemme know
> > >> >>  if I have missed something.
> > >> >
> > >> > A few minor comments below
> > >> >
> > >> >>
> > >> [Snip]
> > >> >>  /* Interfaces */
> > >> >>  static struct omap_hwmod_ocp_if am43xx_l3_main__l4_hs = {
> > >> >>       .master         = &am33xx_l3_main_hwmod,
> > >> >> @@ -788,6 +826,36 @@ static struct omap_hwmod_ocp_if am43xx_l4_ls__dss_rfbi = {
> > >> >>       .user           = OCP_USER_MPU | OCP_USER_SDMA,
> > >> >>  };
> > >> >>
> > >> >> +static struct omap_hwmod_ocp_if am43xx_l3__vpfe0 = {
> > >> >> +     .master         = &am43xx_vpfe0_hwmod,
> > >> >> +     .slave          = &am33xx_l3_main_hwmod,
> > >> >> +     .clk            = "l3_gclk",
> > >> >> +     .flags          = OCPIF_SWSUP_IDLE,
> > >> >
> > >> > OCPIF_SWSUP_IDLE probably isn't needed here.  Could you please try without
> > >> > it?
> > >> >
> > >> >> +     .user           = OCP_USER_MPU | OCP_USER_SDMA,
> > >> >> +};
> > >> >> +
> > >> >> +static struct omap_hwmod_ocp_if am43xx_l3__vpfe1 = {
> > >> >> +     .master         = &am43xx_vpfe1_hwmod,
> > >> >> +     .slave          = &am33xx_l3_main_hwmod,
> > >> >> +     .clk            = "l3_gclk",
> > >> >> +     .flags          = OCPIF_SWSUP_IDLE,
> > >> >
> > >> > Same point as the above.
> > >> >
> > >> Dropped and tested works! posting a v3.
> > >
> > > When you tested it without the OCPIF_SWSUP_IDLE, did you go trhough a complete suspend/resume cycle?
> > > This flag was added early on because otherwise the susbsytem would not go idle without it...
> > >
> > > Can you post the console output during a suspend/resume cycle?
> > >
> > Ah I didn’t test the suspend/resume will do and post the console log.
> 
> Could you also do a suspend/resume test on v2?

Prabbhakar,

I tested both v2 and v3 and both successfully went through a suspend/resume cycle.
So I guess v3 is fine, sorry for the noise.

I'll add a tested-by on V3.

Benoit

>  
> thanks
> 
> - Paul

--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/arch/arm/mach-omap2/omap_hwmod_43xx_data.c b/arch/arm/mach-omap2/omap_hwmod_43xx_data.c
index 5c6c841..3787824 100644
--- a/arch/arm/mach-omap2/omap_hwmod_43xx_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_43xx_data.c
@@ -514,6 +514,44 @@  static struct omap_hwmod am43xx_dss_rfbi_hwmod = {
 	},
 };
 
+static struct omap_hwmod_class_sysconfig am43xx_vpfe_sysc = {
+	.rev_offs       = 0x0,
+	.sysc_offs      = 0x104,
+	.sysc_flags     = SYSC_HAS_MIDLEMODE | SYSC_HAS_SIDLEMODE,
+	.idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
+				MSTANDBY_FORCE | MSTANDBY_SMART | MSTANDBY_NO),
+	.sysc_fields    = &omap_hwmod_sysc_type2,
+};
+
+static struct omap_hwmod_class am43xx_vpfe_hwmod_class = {
+	.name           = "vpfe",
+	.sysc           = &am43xx_vpfe_sysc,
+};
+
+static struct omap_hwmod am43xx_vpfe0_hwmod = {
+	.name           = "vpfe0",
+	.class          = &am43xx_vpfe_hwmod_class,
+	.clkdm_name     = "l3s_clkdm",
+	.prcm           = {
+		.omap4  = {
+			.modulemode     = MODULEMODE_SWCTRL,
+			.clkctrl_offs   = AM43XX_CM_PER_VPFE0_CLKCTRL_OFFSET,
+		},
+	},
+};
+
+static struct omap_hwmod am43xx_vpfe1_hwmod = {
+	.name           = "vpfe1",
+	.class          = &am43xx_vpfe_hwmod_class,
+	.clkdm_name     = "l3s_clkdm",
+	.prcm           = {
+		.omap4  = {
+			.modulemode     = MODULEMODE_SWCTRL,
+			.clkctrl_offs   = AM43XX_CM_PER_VPFE1_CLKCTRL_OFFSET,
+		},
+	},
+};
+
 /* Interfaces */
 static struct omap_hwmod_ocp_if am43xx_l3_main__l4_hs = {
 	.master		= &am33xx_l3_main_hwmod,
@@ -788,6 +826,36 @@  static struct omap_hwmod_ocp_if am43xx_l4_ls__dss_rfbi = {
 	.user		= OCP_USER_MPU | OCP_USER_SDMA,
 };
 
+static struct omap_hwmod_ocp_if am43xx_l3__vpfe0 = {
+	.master         = &am43xx_vpfe0_hwmod,
+	.slave          = &am33xx_l3_main_hwmod,
+	.clk            = "l3_gclk",
+	.flags          = OCPIF_SWSUP_IDLE,
+	.user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+static struct omap_hwmod_ocp_if am43xx_l3__vpfe1 = {
+	.master         = &am43xx_vpfe1_hwmod,
+	.slave          = &am33xx_l3_main_hwmod,
+	.clk            = "l3_gclk",
+	.flags          = OCPIF_SWSUP_IDLE,
+	.user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+static struct omap_hwmod_ocp_if am43xx_l4_ls__vpfe0 = {
+	.master         = &am33xx_l4_ls_hwmod,
+	.slave          = &am43xx_vpfe0_hwmod,
+	.clk            = "l4ls_gclk",
+	.user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+static struct omap_hwmod_ocp_if am43xx_l4_ls__vpfe1 = {
+	.master         = &am33xx_l4_ls_hwmod,
+	.slave          = &am43xx_vpfe1_hwmod,
+	.clk            = "l4ls_gclk",
+	.user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
 static struct omap_hwmod_ocp_if *am43xx_hwmod_ocp_ifs[] __initdata = {
 	&am33xx_l4_wkup__synctimer,
 	&am43xx_l4_ls__timer8,
@@ -887,6 +955,10 @@  static struct omap_hwmod_ocp_if *am43xx_hwmod_ocp_ifs[] __initdata = {
 	&am43xx_l4_ls__dss,
 	&am43xx_l4_ls__dss_dispc,
 	&am43xx_l4_ls__dss_rfbi,
+	&am43xx_l3__vpfe0,
+	&am43xx_l3__vpfe1,
+	&am43xx_l4_ls__vpfe0,
+	&am43xx_l4_ls__vpfe1,
 	NULL,
 };
 
diff --git a/arch/arm/mach-omap2/prcm43xx.h b/arch/arm/mach-omap2/prcm43xx.h
index ad7b3e9..8aa4c2c 100644
--- a/arch/arm/mach-omap2/prcm43xx.h
+++ b/arch/arm/mach-omap2/prcm43xx.h
@@ -143,5 +143,6 @@ 
 #define AM43XX_CM_PER_USB_OTG_SS1_CLKCTRL_OFFSET        0x0268
 #define AM43XX_CM_PER_USBPHYOCP2SCP1_CLKCTRL_OFFSET	0x05C0
 #define AM43XX_CM_PER_DSS_CLKCTRL_OFFSET		0x0a20
-
+#define AM43XX_CM_PER_VPFE0_CLKCTRL_OFFSET		0x0068
+#define AM43XX_CM_PER_VPFE1_CLKCTRL_OFFSET		0x0070
 #endif