RE: AM335x: Beaglebone stops to boot with current git kernel

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Nov 22, 2012 at 22:10:07, Igor Mazanov wrote:
> On Thu, Nov 22, 2012 at 6:49 PM, Hiremath, Vaibhav <hvaibhav@xxxxxx> wrote:
> > On Thu, Nov 22, 2012 at 20:17:26, Hiremath, Vaibhav wrote:
> >> On Thu, Nov 22, 2012 at 17:46:50, Igor Mazanov wrote:
> >> > On Thu, Nov 22, 2012 at 9:42 AM, Vaibhav Hiremath <hvaibhav@xxxxxx> wrote:
> >> > >
> >> > >
> >> > > On 11/22/2012 1:30 AM, Igor Mazanov wrote:
> >> > >> On Wed, Nov 21, 2012 at 9:38 PM, Tony Lindgren <tony@xxxxxxxxxxx> wrote:
> >> > >>> * Jean Pihet <jean.pihet@xxxxxxxxxxxxxx> [121114 08:43]:
> >> > >>>> On Wed, Nov 14, 2012 at 4:28 PM, Igor Mazanov <i.mazanov@xxxxxxxxx> wrote:
> >> > >>>>>
> >> > >>>>> Beaglebone boot process is broken with the current git kernel. I use
> >> > >>>>> omap2plus_defconfig for tests.
> >> > >>>>>
> >> > >>>>> It looks like the boot process stops due to the last changes in the AM33xx
> >> > >>>>> clock sysbsystem. A following patch resolves this issue:
> >> > >>> ...
> >> > >>>
> >> > >>>> The patch should change the name of the hwmod entry as well, can you
> >> > >>>> fold this change in the current patch?
> >> > >>>
> >> > >>> Any news on updating this?
> >> > >>
> >> > >> The current kernel boots, but after a switching to CCF doesn't work
> >> > >> the debugss - it's just disabled in the current hwmod code. So, it
> >> > >> looks like we can't  use JTAG to connect to the running kernel.
> >> > >>
> >> > >
> >> > > just resumed from vacation...
> >> > >
> >> > > JTAG clock will get disabled because, CONFIG_OMAP_RESET_CLOCKS will
> >> > > disable unused clocks, so as debugss clock.
> >> > >
> >> > > There is another thread started by Joel on the similar issue,
> >> > >
> >> > > http://www.mail-archive.com/linux-omap@xxxxxxxxxxxxxxx/msg80863.html
> >> > >
> >> > > Something below should be done for debugss on AM33xx,
> >> > >
> >> > > diff --git a/arch/arm/mach-omap2/clock33xx_data.c
> >> > > b/arch/arm/mach-omap2/clock33xx_data.c
> >> > > index 17e3de5..60e0b53 100644
> >> > > --- a/arch/arm/mach-omap2/clock33xx_data.c
> >> > > +++ b/arch/arm/mach-omap2/clock33xx_data.c
> >> > > @@ -584,6 +584,9 @@ static struct clk debugss_ick = {
> >> > >         .clkdm_name     = "l3_aon_clkdm",
> >> > >         .parent         = &dpll_core_m4_ck,
> >> > >         .ops            = &clkops_omap2_dflt,
> >> > > +#ifdef CONFIG_DEBUG_KERNEL
> >> > > +       .flags          = ENABLE_ON_INIT,
> >> > > +#endif
> >> > >         .enable_reg     = AM33XX_CM_WKUP_DEBUGSS_CLKCTRL,
> >> > >         .enable_bit     = AM33XX_MODULEMODE_SWCTRL,
> >> > >         .recalc         = &followparent_recalc,
> >> >
> >> > Yes, I noticed this thread. But now a clock subsystem in the current
> >> > kernel is switched to Common Clock Framework and debugss (and several
> >> > another modules) is disabled
> >>
> >> Still this can be handled and enabled during init.
> >>
> >>
> >> > (#if 0 .... #endif) in
> >> > omap_hwmod_33xx_data.c.
> >> >
> >> > From omap_hwmod_33xx_data.c:
> >> >
> >> > /*
> >> >  * Modules omap_hwmod structures
> >> >  *
> >> >  * The following IPs are excluded for the moment because:
> >> >  * - They do not need an explicit SW control using omap_hwmod API.
> >> >  * - They still need to be validated with the driver
> >> >  *   properly adapted to omap_hwmod / omap_device
> >> >  *
> >> >  *    - cEFUSE (doesn't fall under any ocp_if)
> >> >  *    - clkdiv32k
> >> >  *    - debugss
> >> >  *    - ocmc ram
> >> >  *    - ocp watch point
> >> >  *    - aes0
> >> >  *    - sha0
> >> >  */
> >> >
> >> > I uncommented the debugss entry in the omap_hwmod settings, but only
> >> > got a warning like:
> >> >
> >> >  CC      arch/arm/mach-omap2/omap_hwmod_33xx_data.o
> >> > arch/arm/mach-omap2/omap_hwmod_33xx_data.c:472:26: warning:
> >> > 'am33xx_debugss_hwmod' defined but not used [-Wunused-variable]
> >> >
> >> > By the way, I need to use JTAG to trace a problem described in this thread:
> >> >
> >> > http://marc.info/?l=linux-omap&m=135307646415429&w=2
> >> >
> >> > May be, it's the clocks related issue too...
> >> >
> >>
> >>
> >> I have quickly created patch for you, can you try below patch and let me
> >> know?
> >>
> >>
> >>
> >> diff --git a/arch/arm/mach-omap2/cclock33xx_data.c b/arch/arm/mach-omap2/cclock33xx_data.c
> >> index ea64ad6..c9af78c 100644
> >> --- a/arch/arm/mach-omap2/cclock33xx_data.c
> >> +++ b/arch/arm/mach-omap2/cclock33xx_data.c
> >> @@ -920,6 +920,7 @@ static const char *enable_init_clks[] = {
> >>         "l4hs_gclk",
> >>         "l4fw_gclk",
> >>         "l4ls_gclk",
> >> +       "debugss_ick",
> >>  };
> >>
> >>  int __init am33xx_clk_init(void)
> >> diff --git a/arch/arm/mach-omap2/omap_hwmod_33xx_data.c b/arch/arm/mach-omap2/omap_hwmod_33xx_data.c
> >> index ad8d43b..750b897 100644
> >> --- a/arch/arm/mach-omap2/omap_hwmod_33xx_data.c
> >> +++ b/arch/arm/mach-omap2/omap_hwmod_33xx_data.c
> >> @@ -460,27 +460,6 @@ static struct omap_hwmod am33xx_clkdiv32k_hwmod = {
> >>         },
> >>  };
> >>
> >> -/*
> >> - * 'debugss' class
> >> - * debug sub system
> >> - */
> >> -static struct omap_hwmod_class am33xx_debugss_hwmod_class = {
> >> -       .name           = "debugss",
> >> -};
> >> -
> >> -static struct omap_hwmod am33xx_debugss_hwmod = {
> >> -       .name           = "debugss",
> >> -       .class          = &am33xx_debugss_hwmod_class,
> >> -       .clkdm_name     = "l3_aon_clkdm",
> >> -       .main_clk       = "debugss_ick",
> >> -       .prcm           = {
> >> -               .omap4  = {
> >> -                       .clkctrl_offs   = AM33XX_CM_WKUP_DEBUGSS_CLKCTRL_OFFSET,
> >> -                       .modulemode     = MODULEMODE_SWCTRL,
> >> -               },
> >> -       },
> >> -};
> >> -
> >> /* ocmcram */
> >>  static struct omap_hwmod_class am33xx_ocmcram_hwmod_class = {
> >>         .name = "ocmcram",
> >> @@ -570,6 +549,28 @@ static struct omap_hwmod am33xx_sha0_hwmod = {
> >>
> >>  #endif
> >>
> >> +/*
> >> + * 'debugss' class
> >> + * debug sub system
> >> + */
> >> +static struct omap_hwmod_class am33xx_debugss_hwmod_class = {
> >> +       .name           = "debugss",
> >> +};
> >> +
> >> +static struct omap_hwmod am33xx_debugss_hwmod = {
> >> +       .name           = "debugss",
> >> +       .class          = &am33xx_debugss_hwmod_class,
> >> +       .clkdm_name     = "l3_aon_clkdm",
> >> +       .main_clk       = "debugss_ick",
> >> +       .flags          =  (HWMOD_INIT_NO_IDLE | HWMOD_INIT_NO_RESET),
> >> +       .prcm           = {
> >> +               .omap4  = {
> >> +                       .clkctrl_offs   = AM33XX_CM_WKUP_DEBUGSS_CLKCTRL_OFFSET,
> >> +                       .modulemode     = MODULEMODE_SWCTRL,
> >> +               },
> >> +       },
> >> +};
> >> +
> >>  /* 'smartreflex' class */
> >>  static struct omap_hwmod_class am33xx_smartreflex_hwmod_class = {
> >>         .name           = "smartreflex",
> >> @@ -2261,6 +2262,24 @@ static struct omap_hwmod_ocp_if am33xx_l3_main__gfx = {
> >>         .user           = OCP_USER_MPU | OCP_USER_SDMA,
> >>  };
> >>
> >> +/* l3_main -> debugss */
> >> +static struct omap_hwmod_addr_space am33xx_debugss_addrs[] = {
> >> +       {
> >> +               .pa_start       = 0x4b000000,
> >> +               .pa_end         = 0x4b000000 + SZ_16M - 1,
> >> +               .flags          = ADDR_TYPE_RT
> >> +       },
> >> +       { }
> >> +};
> >> +
> >> +static struct omap_hwmod_ocp_if am33xx_l3_main__debugss = {
> >> +       .master         = &am33xx_l3_main_hwmod,
> >> +       .slave          = &am33xx_debugss_hwmod,
> >> +       .clk            = "debugss_ick",
> >> +       .addr           = am33xx_debugss_addrs,
> >> +       .user           = OCP_USER_MPU,
> >> +};
> >> +
> >>  /* l4 wkup -> smartreflex0 */
> >>  static struct omap_hwmod_addr_space am33xx_smartreflex0_addrs[] = {
> >>         {
> >> @@ -3315,6 +3334,7 @@ static struct omap_hwmod_ocp_if *am33xx_hwmod_ocp_ifs[] __initdata = {
> >>         &am33xx_pruss__l3_main,
> >>         &am33xx_wkup_m3__l4_wkup,
> >>         &am33xx_gfx__l3_main,
> >> +       &am33xx_l3_main__debugss,
> >>         &am33xx_l4_wkup__wkup_m3,
> >>         &am33xx_l4_wkup__control,
> >>         &am33xx_l4_wkup__smartreflex0,
> >>
> >>
> >
> >
> >
> > Missed to mention that,
> >
> > I have boot tested it on Bone platform and made sure that debugs module
> > stays enabled after boot (after applying this patch).
> >
> 
> I applied your patch and it works for me too. JTAG interface is
> working now. Thanks!
> 

Thanks Igor,

I will submit formal patch shortly, care to test and review/ack it.

Thanks,
Vaibhav 

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


[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux