Re: [PATCH] ARM: AM33xx: add support for reboot

2012-10-29 Thread Afzal Mohammed

Hi Daniel,

On Monday 29 October 2012 12:49 AM, Daniel Mack wrote:


Afzal, are you planning to resubmit this for mainline? My version can of
course be disposed then.


I am not planning to submit it as of now, and Vaibhav H has
a better suggestion on this, you may co-ordinate with him.

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


Re: [PATCH] ARM: AM33xx: add support for reboot

2012-10-29 Thread Daniel Mack
On 29.10.2012 05:31, Hiremath, Vaibhav wrote:
 On Sun, Oct 28, 2012 at 23:47:55, Daniel Mack wrote:
 This patch adds the ability to reboot am33xx-based systems.

 Signed-off-by: Daniel Mack zon...@gmail.com
 ---
  arch/arm/mach-omap2/board-generic.c | 1 +
  arch/arm/mach-omap2/prcm.c  | 6 ++
  2 files changed, 7 insertions(+)

 diff --git a/arch/arm/mach-omap2/board-generic.c 
 b/arch/arm/mach-omap2/board-generic.c
 index 601ecdf..6a69ceb 100644
 --- a/arch/arm/mach-omap2/board-generic.c
 +++ b/arch/arm/mach-omap2/board-generic.c
 @@ -114,6 +114,7 @@ DT_MACHINE_START(AM33XX_DT, Generic AM33XX (Flattened 
 Device Tree))
  .init_machine   = omap_generic_init,
  .timer  = omap3_am33xx_timer,
  .dt_compat  = am33xx_boards_compat,
 +.restart= omap_prcm_restart,
  MACHINE_END
  #endif
  
 diff --git a/arch/arm/mach-omap2/prcm.c b/arch/arm/mach-omap2/prcm.c
 index 0f51e03..8a3068a 100644
 --- a/arch/arm/mach-omap2/prcm.c
 +++ b/arch/arm/mach-omap2/prcm.c
 @@ -32,6 +32,7 @@
  #include clock2xxx.h
  #include cm2xxx_3xxx.h
  #include prm2xxx_3xxx.h
 +#include prm33xx.h
  #include prm44xx.h
  #include prminst44xx.h
  #include cminst44xx.h
 @@ -72,6 +73,11 @@ void omap_prcm_restart(char mode, const char *cmd)
  omap3_ctrl_write_boot_mode((cmd ? (u8)*cmd : 0));
  } else if (cpu_is_omap44xx()) {
  omap4_prminst_global_warm_sw_reset(); /* never returns */
 +} else if (soc_is_am33xx()) {
 +prcm_offs = AM33XX_PRM_DEVICE_MOD;
 +omap2_prm_set_mod_reg_bits(OMAP4430_RST_GLOBAL_COLD_SW_MASK,
 +   prcm_offs,
 +   AM33XX_PRM_RSTCTRL_OFFSET);
 
 This is not clean way of handling it, we should have something similar to 
 omap4. Also we should use warm-reset here instead of cold.
 
 I have quickly created patch, can you please review and test is?
 I have tested it on AM335x EVM and Bone platform.

Works for me as well, thanks!

You can take my

  Tested-by: Daniel Mack zon...@gmail.com

if you wish ...


 
 
 diff --git a/arch/arm/mach-omap2/board-generic.c 
 b/arch/arm/mach-omap2/board-generic.c
 index 601ecdf..6a69ceb 100644
 --- a/arch/arm/mach-omap2/board-generic.c
 +++ b/arch/arm/mach-omap2/board-generic.c
 @@ -114,6 +114,7 @@ DT_MACHINE_START(AM33XX_DT, Generic AM33XX (Flattened 
 Device Tree))
 .init_machine   = omap_generic_init,
 .timer  = omap3_am33xx_timer,
 .dt_compat  = am33xx_boards_compat,
 +   .restart= omap_prcm_restart,
  MACHINE_END
  #endif
 
 diff --git a/arch/arm/mach-omap2/prcm.c b/arch/arm/mach-omap2/prcm.c
 index 0f51e03..490f8f6 100644
 --- a/arch/arm/mach-omap2/prcm.c
 +++ b/arch/arm/mach-omap2/prcm.c
 @@ -33,6 +33,7 @@
  #include cm2xxx_3xxx.h
  #include prm2xxx_3xxx.h
  #include prm44xx.h
 +#include prm33xx.h
  #include prminst44xx.h
  #include cminst44xx.h
  #include prm-regbits-24xx.h
 @@ -72,6 +73,8 @@ void omap_prcm_restart(char mode, const char *cmd)
 omap3_ctrl_write_boot_mode((cmd ? (u8)*cmd : 0));
 } else if (cpu_is_omap44xx()) {
 omap4_prminst_global_warm_sw_reset(); /* never returns */
 +   } else if (soc_is_am33xx()) {
 +   am33xx_prm_global_warm_sw_reset();  /* never returns */
 } else {
 WARN_ON(1);
 }
 diff --git a/arch/arm/mach-omap2/prm33xx.c b/arch/arm/mach-omap2/prm33xx.c
 index e7dbb6c..505219d 100644
 --- a/arch/arm/mach-omap2/prm33xx.c
 +++ b/arch/arm/mach-omap2/prm33xx.c
 @@ -133,3 +133,18 @@ int am33xx_prm_deassert_hardreset(u8 shift, s16 inst,
 
 return (c == MAX_MODULE_HARDRESET_WAIT) ? -EBUSY : 0;
  }
 +
 +void am33xx_prm_global_warm_sw_reset(void)
 +{
 +   u32 v;
 +
 +   v = am33xx_prm_read_reg(AM33XX_PRM_DEVICE_MOD,
 +   AM33XX_PRM_RSTCTRL_OFFSET);
 +   v |= AM33XX_GLOBAL_WARM_SW_RST_MASK;
 +   am33xx_prm_write_reg(v, AM33XX_PRM_DEVICE_MOD,
 +AM33XX_PRM_RSTCTRL_OFFSET);
 +
 +   /* OCP barrier */
 +   v = am33xx_prm_read_reg(AM33XX_PRM_DEVICE_MOD,
 +   AM33XX_PRM_RSTCTRL_OFFSET);
 +}
 diff --git a/arch/arm/mach-omap2/prm33xx.h b/arch/arm/mach-omap2/prm33xx.h
 index 3f25c56..cdfc694 100644
 --- a/arch/arm/mach-omap2/prm33xx.h
 +++ b/arch/arm/mach-omap2/prm33xx.h
 @@ -126,4 +126,5 @@ extern int am33xx_prm_is_hardreset_asserted(u8 shift, s16 
 inst,
  extern int am33xx_prm_assert_hardreset(u8 shift, s16 inst, u16 rstctrl_offs);
  extern int am33xx_prm_deassert_hardreset(u8 shift, s16 inst,
 u16 rstctrl_offs, u16 rstst_offs);
 +extern void am33xx_prm_global_warm_sw_reset(void);
 
 
 Thanks,
 Vaibhav
 

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


RE: [PATCH] ARM: AM33xx: add support for reboot

2012-10-29 Thread Hiremath, Vaibhav
On Mon, Oct 29, 2012 at 15:19:21, Daniel Mack wrote:
 On 29.10.2012 05:31, Hiremath, Vaibhav wrote:
  On Sun, Oct 28, 2012 at 23:47:55, Daniel Mack wrote:
  This patch adds the ability to reboot am33xx-based systems.
 
  Signed-off-by: Daniel Mack zon...@gmail.com
  ---
   arch/arm/mach-omap2/board-generic.c | 1 +
   arch/arm/mach-omap2/prcm.c  | 6 ++
   2 files changed, 7 insertions(+)
 
  diff --git a/arch/arm/mach-omap2/board-generic.c 
  b/arch/arm/mach-omap2/board-generic.c
  index 601ecdf..6a69ceb 100644
  --- a/arch/arm/mach-omap2/board-generic.c
  +++ b/arch/arm/mach-omap2/board-generic.c
  @@ -114,6 +114,7 @@ DT_MACHINE_START(AM33XX_DT, Generic AM33XX (Flattened 
  Device Tree))
 .init_machine   = omap_generic_init,
 .timer  = omap3_am33xx_timer,
 .dt_compat  = am33xx_boards_compat,
  +  .restart= omap_prcm_restart,
   MACHINE_END
   #endif
   
  diff --git a/arch/arm/mach-omap2/prcm.c b/arch/arm/mach-omap2/prcm.c
  index 0f51e03..8a3068a 100644
  --- a/arch/arm/mach-omap2/prcm.c
  +++ b/arch/arm/mach-omap2/prcm.c
  @@ -32,6 +32,7 @@
   #include clock2xxx.h
   #include cm2xxx_3xxx.h
   #include prm2xxx_3xxx.h
  +#include prm33xx.h
   #include prm44xx.h
   #include prminst44xx.h
   #include cminst44xx.h
  @@ -72,6 +73,11 @@ void omap_prcm_restart(char mode, const char *cmd)
 omap3_ctrl_write_boot_mode((cmd ? (u8)*cmd : 0));
 } else if (cpu_is_omap44xx()) {
 omap4_prminst_global_warm_sw_reset(); /* never returns */
  +  } else if (soc_is_am33xx()) {
  +  prcm_offs = AM33XX_PRM_DEVICE_MOD;
  +  omap2_prm_set_mod_reg_bits(OMAP4430_RST_GLOBAL_COLD_SW_MASK,
  + prcm_offs,
  + AM33XX_PRM_RSTCTRL_OFFSET);
  
  This is not clean way of handling it, we should have something similar to 
  omap4. Also we should use warm-reset here instead of cold.
  
  I have quickly created patch, can you please review and test is?
  I have tested it on AM335x EVM and Bone platform.
 
 Works for me as well, thanks!
 
 You can take my
 
   Tested-by: Daniel Mack zon...@gmail.com
 

Thanks Daniel for confirming. I will send out this patch ASAP with your 
tested by.

Thanks,
Vaibhav


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


Re: [PATCH] ARM: AM33xx: add support for reboot

2012-10-28 Thread Daniel Mack
[Cc Tony]

On 28.10.2012 19:17, Daniel Mack wrote:
 This patch adds the ability to reboot am33xx-based systems.

Sorry, I lacked to investigate on the attribution here. According to
git blame of a BSP kernel I got these lines from, the original author
is Afzal Mohammed.

Afzal, are you planning to resubmit this for mainline? My version can of
course be disposed then.


Thanks,
Daniel




 Signed-off-by: Daniel Mack zon...@gmail.com
 ---
  arch/arm/mach-omap2/board-generic.c | 1 +
  arch/arm/mach-omap2/prcm.c  | 6 ++
  2 files changed, 7 insertions(+)
 
 diff --git a/arch/arm/mach-omap2/board-generic.c 
 b/arch/arm/mach-omap2/board-generic.c
 index 601ecdf..6a69ceb 100644
 --- a/arch/arm/mach-omap2/board-generic.c
 +++ b/arch/arm/mach-omap2/board-generic.c
 @@ -114,6 +114,7 @@ DT_MACHINE_START(AM33XX_DT, Generic AM33XX (Flattened 
 Device Tree))
   .init_machine   = omap_generic_init,
   .timer  = omap3_am33xx_timer,
   .dt_compat  = am33xx_boards_compat,
 + .restart= omap_prcm_restart,
  MACHINE_END
  #endif
  
 diff --git a/arch/arm/mach-omap2/prcm.c b/arch/arm/mach-omap2/prcm.c
 index 0f51e03..8a3068a 100644
 --- a/arch/arm/mach-omap2/prcm.c
 +++ b/arch/arm/mach-omap2/prcm.c
 @@ -32,6 +32,7 @@
  #include clock2xxx.h
  #include cm2xxx_3xxx.h
  #include prm2xxx_3xxx.h
 +#include prm33xx.h
  #include prm44xx.h
  #include prminst44xx.h
  #include cminst44xx.h
 @@ -72,6 +73,11 @@ void omap_prcm_restart(char mode, const char *cmd)
   omap3_ctrl_write_boot_mode((cmd ? (u8)*cmd : 0));
   } else if (cpu_is_omap44xx()) {
   omap4_prminst_global_warm_sw_reset(); /* never returns */
 + } else if (soc_is_am33xx()) {
 + prcm_offs = AM33XX_PRM_DEVICE_MOD;
 + omap2_prm_set_mod_reg_bits(OMAP4430_RST_GLOBAL_COLD_SW_MASK,
 +prcm_offs,
 +AM33XX_PRM_RSTCTRL_OFFSET);
   } else {
   WARN_ON(1);
   }
 

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


RE: [PATCH] ARM: AM33xx: add support for reboot

2012-10-28 Thread Bedia, Vaibhav
On Mon, Oct 29, 2012 at 00:49:19, Daniel Mack wrote:
 [Cc Tony]
 
 On 28.10.2012 19:17, Daniel Mack wrote:
  This patch adds the ability to reboot am33xx-based systems.
 
 Sorry, I lacked to investigate on the attribution here. According to
 git blame of a BSP kernel I got these lines from, the original author
 is Afzal Mohammed.
 
 Afzal, are you planning to resubmit this for mainline? My version can of
 course be disposed then.
 

This should be on top of Paul's recent changes [1] to save him some rework
headache.
 
Regards,
Vaibhav

[1] http://marc.info/?l=linux-omapm=135120744528680w=2

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


RE: [PATCH] ARM: AM33xx: add support for reboot

2012-10-28 Thread Hiremath, Vaibhav
On Sun, Oct 28, 2012 at 23:47:55, Daniel Mack wrote:
 This patch adds the ability to reboot am33xx-based systems.
 
 Signed-off-by: Daniel Mack zon...@gmail.com
 ---
  arch/arm/mach-omap2/board-generic.c | 1 +
  arch/arm/mach-omap2/prcm.c  | 6 ++
  2 files changed, 7 insertions(+)
 
 diff --git a/arch/arm/mach-omap2/board-generic.c 
 b/arch/arm/mach-omap2/board-generic.c
 index 601ecdf..6a69ceb 100644
 --- a/arch/arm/mach-omap2/board-generic.c
 +++ b/arch/arm/mach-omap2/board-generic.c
 @@ -114,6 +114,7 @@ DT_MACHINE_START(AM33XX_DT, Generic AM33XX (Flattened 
 Device Tree))
   .init_machine   = omap_generic_init,
   .timer  = omap3_am33xx_timer,
   .dt_compat  = am33xx_boards_compat,
 + .restart= omap_prcm_restart,
  MACHINE_END
  #endif
  
 diff --git a/arch/arm/mach-omap2/prcm.c b/arch/arm/mach-omap2/prcm.c
 index 0f51e03..8a3068a 100644
 --- a/arch/arm/mach-omap2/prcm.c
 +++ b/arch/arm/mach-omap2/prcm.c
 @@ -32,6 +32,7 @@
  #include clock2xxx.h
  #include cm2xxx_3xxx.h
  #include prm2xxx_3xxx.h
 +#include prm33xx.h
  #include prm44xx.h
  #include prminst44xx.h
  #include cminst44xx.h
 @@ -72,6 +73,11 @@ void omap_prcm_restart(char mode, const char *cmd)
   omap3_ctrl_write_boot_mode((cmd ? (u8)*cmd : 0));
   } else if (cpu_is_omap44xx()) {
   omap4_prminst_global_warm_sw_reset(); /* never returns */
 + } else if (soc_is_am33xx()) {
 + prcm_offs = AM33XX_PRM_DEVICE_MOD;
 + omap2_prm_set_mod_reg_bits(OMAP4430_RST_GLOBAL_COLD_SW_MASK,
 +prcm_offs,
 +AM33XX_PRM_RSTCTRL_OFFSET);

This is not clean way of handling it, we should have something similar to 
omap4. Also we should use warm-reset here instead of cold.

I have quickly created patch, can you please review and test is?
I have tested it on AM335x EVM and Bone platform.


diff --git a/arch/arm/mach-omap2/board-generic.c 
b/arch/arm/mach-omap2/board-generic.c
index 601ecdf..6a69ceb 100644
--- a/arch/arm/mach-omap2/board-generic.c
+++ b/arch/arm/mach-omap2/board-generic.c
@@ -114,6 +114,7 @@ DT_MACHINE_START(AM33XX_DT, Generic AM33XX (Flattened 
Device Tree))
.init_machine   = omap_generic_init,
.timer  = omap3_am33xx_timer,
.dt_compat  = am33xx_boards_compat,
+   .restart= omap_prcm_restart,
 MACHINE_END
 #endif

diff --git a/arch/arm/mach-omap2/prcm.c b/arch/arm/mach-omap2/prcm.c
index 0f51e03..490f8f6 100644
--- a/arch/arm/mach-omap2/prcm.c
+++ b/arch/arm/mach-omap2/prcm.c
@@ -33,6 +33,7 @@
 #include cm2xxx_3xxx.h
 #include prm2xxx_3xxx.h
 #include prm44xx.h
+#include prm33xx.h
 #include prminst44xx.h
 #include cminst44xx.h
 #include prm-regbits-24xx.h
@@ -72,6 +73,8 @@ void omap_prcm_restart(char mode, const char *cmd)
omap3_ctrl_write_boot_mode((cmd ? (u8)*cmd : 0));
} else if (cpu_is_omap44xx()) {
omap4_prminst_global_warm_sw_reset(); /* never returns */
+   } else if (soc_is_am33xx()) {
+   am33xx_prm_global_warm_sw_reset();  /* never returns */
} else {
WARN_ON(1);
}
diff --git a/arch/arm/mach-omap2/prm33xx.c b/arch/arm/mach-omap2/prm33xx.c
index e7dbb6c..505219d 100644
--- a/arch/arm/mach-omap2/prm33xx.c
+++ b/arch/arm/mach-omap2/prm33xx.c
@@ -133,3 +133,18 @@ int am33xx_prm_deassert_hardreset(u8 shift, s16 inst,

return (c == MAX_MODULE_HARDRESET_WAIT) ? -EBUSY : 0;
 }
+
+void am33xx_prm_global_warm_sw_reset(void)
+{
+   u32 v;
+
+   v = am33xx_prm_read_reg(AM33XX_PRM_DEVICE_MOD,
+   AM33XX_PRM_RSTCTRL_OFFSET);
+   v |= AM33XX_GLOBAL_WARM_SW_RST_MASK;
+   am33xx_prm_write_reg(v, AM33XX_PRM_DEVICE_MOD,
+AM33XX_PRM_RSTCTRL_OFFSET);
+
+   /* OCP barrier */
+   v = am33xx_prm_read_reg(AM33XX_PRM_DEVICE_MOD,
+   AM33XX_PRM_RSTCTRL_OFFSET);
+}
diff --git a/arch/arm/mach-omap2/prm33xx.h b/arch/arm/mach-omap2/prm33xx.h
index 3f25c56..cdfc694 100644
--- a/arch/arm/mach-omap2/prm33xx.h
+++ b/arch/arm/mach-omap2/prm33xx.h
@@ -126,4 +126,5 @@ extern int am33xx_prm_is_hardreset_asserted(u8 shift, s16 
inst,
 extern int am33xx_prm_assert_hardreset(u8 shift, s16 inst, u16 rstctrl_offs);
 extern int am33xx_prm_deassert_hardreset(u8 shift, s16 inst,
u16 rstctrl_offs, u16 rstst_offs);
+extern void am33xx_prm_global_warm_sw_reset(void);


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