Re: [U-Boot] [PATCH V2 1/1] mx31/mx35/mx51/mx53/mx6: add watchdog

2012-08-20 Thread Stefano Babic
On 21/08/2012 01:03, Troy Kisky wrote:
> Use a common watchdog driver for all these cpus.
> 
> Signed-off-by: Troy Kisky 
> 
> ---

Hi Troy,

> v2:   add README.watchdog
>   include mx31/mx35 watchdogs
>   move to drivers/watchdog
> 
> Please test on a mx31 and mx35 board.
> qong and mx31pdk would be best!!
> ---

Yes, this should be done. I can do on a qong.

> diff --git a/arch/arm/cpu/arm1136/mx31/timer.c 
> b/arch/arm/cpu/arm1136/mx31/timer.c
> index 72081a8..d6c52d7 100644
> --- a/arch/arm/cpu/arm1136/mx31/timer.c
> +++ b/arch/arm/cpu/arm1136/mx31/timer.c
> @@ -161,42 +161,3 @@ ulong get_tbclk(void)
>  {
>   return CONFIG_MX31_CLK32;
>  }
> -
> -void reset_cpu(ulong addr)
> -{
> - struct wdog_regs *wdog = (struct wdog_regs *)WDOG_BASE;
> - wdog->wcr = WDOG_ENABLE;
> - while (1)
> - ;
> -}
> -
> -#ifdef CONFIG_HW_WATCHDOG
> -void mxc_hw_watchdog_enable(void)
> -{
> - struct wdog_regs *wdog = (struct wdog_regs *)WDOG_BASE;
> - u16 secs;
> -
> - /*
> -  * The timer watchdog can be set between
> -  * 0.5 and 128 Seconds. If not defined
> -  * in configuration file, sets 64 Seconds
> -  */
> -#ifdef CONFIG_SYS_WD_TIMER_SECS
> - secs = (CONFIG_SYS_WD_TIMER_SECS << 1) & 0xFF;
> - if (!secs) secs = 1;
> -#else
> - secs = 64;
> -#endif
> - setbits_le16(&wdog->wcr, (secs << WDOG_WT_SHIFT) | WDOG_ENABLE
> -  | WDOG_WDZST);
> -}
> -
> -
> -void mxc_hw_watchdog_reset(void)
> -{
> - struct wdog_regs *wdog = (struct wdog_regs *)WDOG_BASE;
> -
> - writew(0x, &wdog->wsr);
> - writew(0x, &wdog->wsr);
> -}
> -#endif
> diff --git a/arch/arm/cpu/arm1136/mx35/generic.c 
> b/arch/arm/cpu/arm1136/mx35/generic.c
> index ea1f730..1af870c 100644
> --- a/arch/arm/cpu/arm1136/mx35/generic.c
> +++ b/arch/arm/cpu/arm1136/mx35/generic.c
> @@ -495,9 +495,3 @@ int get_clocks(void)
>  #endif
>   return 0;
>  }
> -
> -void reset_cpu(ulong addr)
> -{
> - struct wdog_regs *wdog = (struct wdog_regs *)WDOG_BASE_ADDR;
> - writew(4, &wdog->wcr);
> -}
> diff --git a/arch/arm/cpu/armv7/imx-common/cpu.c 
> b/arch/arm/cpu/armv7/imx-common/cpu.c
> index fa1d468..ebded87 100644
> --- a/arch/arm/cpu/armv7/imx-common/cpu.c
> +++ b/arch/arm/cpu/armv7/imx-common/cpu.c
> @@ -122,11 +122,6 @@ int cpu_mmc_init(bd_t *bis)
>  }
>  #endif
>  
> -void reset_cpu(ulong addr)
> -{
> - __raw_writew(4, WDOG1_BASE_ADDR);
> -}
> -
>  u32 get_ahb_clk(void)
>  {
>   struct mxc_ccm_reg *imx_ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
> diff --git a/arch/arm/include/asm/arch-mx31/clock.h 
> b/arch/arm/include/asm/arch-mx31/clock.h
> index 852c19c..6cb2611 100644
> --- a/arch/arm/include/asm/arch-mx31/clock.h
> +++ b/arch/arm/include/asm/arch-mx31/clock.h
> @@ -43,7 +43,5 @@ extern void mx31_set_gpr(enum iomux_gp_func gp, char en);
>  void mx31_uart1_hw_init(void);
>  void mx31_uart2_hw_init(void);
>  void mx31_spi2_hw_init(void);
> -void mxc_hw_watchdog_enable(void);
> -void mxc_hw_watchdog_reset(void);
>  
>  #endif /* __ASM_ARCH_CLOCK_H */
> diff --git a/arch/arm/include/asm/arch-mx31/imx-regs.h 
> b/arch/arm/include/asm/arch-mx31/imx-regs.h
> index bba37ac..594d613 100644
> --- a/arch/arm/include/asm/arch-mx31/imx-regs.h
> +++ b/arch/arm/include/asm/arch-mx31/imx-regs.h
> @@ -68,17 +68,6 @@ struct cspi_regs {
>   u32 test;
>  };
>  
> -/* Watchdog Timer (WDOG) registers */
> -#define WDOG_ENABLE  (1 << 2)
> -#define WDOG_WT_SHIFT8
> -#define WDOG_WDZST   (1 << 0)
> -
> -struct wdog_regs {
> - u16 wcr;/* Control */
> - u16 wsr;/* Service */
> - u16 wrsr;   /* Reset Status */
> -};
> -
>  /* IIM Control Registers */
>  struct iim_regs {
>   u32 iim_stat;
> @@ -673,8 +662,8 @@ struct esdc_regs {
>  
>  #define ARM_PPMRR0x4015
>  
> -#define WDOG_BASE0x53FDC000
> -
> +#define WDOG1_BASE_ADDR  0x53FDC000
> +#define CONFIG_IMX_WATCHDOG  /* cpu_reset implemented in watchdog */
>  /*
>   * GPIO
>   */
> diff --git a/arch/arm/include/asm/arch-mx35/imx-regs.h 
> b/arch/arm/include/asm/arch-mx35/imx-regs.h
> index b18b984..45b331f 100644
> --- a/arch/arm/include/asm/arch-mx35/imx-regs.h
> +++ b/arch/arm/include/asm/arch-mx35/imx-regs.h
> @@ -76,7 +76,8 @@
>  #define GPIO2_BASE_ADDR  0x53FD
>  #define SDMA_BASE_ADDR   0x53FD4000
>  #define RTC_BASE_ADDR0x53FD8000
> -#define WDOG_BASE_ADDR   0x53FDC000
> +#define WDOG1_BASE_ADDR  0x53FDC000
> +#define CONFIG_IMX_WATCHDOG  /* cpu_reset implemented in watchdog */
>  #define PWM_BASE_ADDR0x53FE
>  #define RTIC_BASE_ADDR   0x53FEC000
>  #define IIM_BASE_ADDR0x53FF
> @@ -312,15 +313,6 @@ struct cspi_regs {
>   u32 test;
>  };
>  
> -/* Watchdog Timer (WDOG) registers */
> -struct wdog_regs {
> - u16 wcr;/* Control */
> - u16 wsr;/* Ser

Re: [U-Boot] [PATCH V2 1/1] mx31/mx35/mx51/mx53/mx6: add watchdog

2012-08-21 Thread Troy Kisky

On 8/20/2012 11:11 PM, Stefano Babic wrote:

On 21/08/2012 01:03, Troy Kisky wrote:
diff --git a/arch/arm/include/asm/arch-mx31/imx-regs.h 
b/arch/arm/include/asm/arch-mx31/imx-regs.h
index bba37ac..594d613 100644
--- a/arch/arm/include/asm/arch-mx31/imx-regs.h
+++ b/arch/arm/include/asm/arch-mx31/imx-regs.h
@@ -68,17 +68,6 @@ struct cspi_regs {
u32 test;
  };
-#define WDOG_BASE  0x53FDC000
-
+#define WDOG1_BASE_ADDR0x53FDC000
+#define CONFIG_IMX_WATCHDOG/* cpu_reset implemented in watchdog */
  /*
   * GPIO
   */
diff --git a/arch/arm/include/asm/arch-mx35/imx-regs.h 
b/arch/arm/include/asm/arch-mx35/imx-regs.h
index b18b984..45b331f 100644
--- a/arch/arm/include/asm/arch-mx35/imx-regs.h
+++ b/arch/arm/include/asm/arch-mx35/imx-regs.h
@@ -76,7 +76,8 @@
  #define GPIO2_BASE_ADDR   0x53FD
  #define SDMA_BASE_ADDR0x53FD4000
  #define RTC_BASE_ADDR 0x53FD8000
-#define WDOG_BASE_ADDR 0x53FDC000
+#define WDOG1_BASE_ADDR0x53FDC000
+#define CONFIG_IMX_WATCHDOG/* cpu_reset implemented in watchdog */
  #define PWM_BASE_ADDR 0x53FE
diff --git a/arch/arm/include/asm/arch-mx5/imx-regs.h 
b/arch/arm/include/asm/arch-mx5/imx-regs.h
index c53465f..caac574 100644
--- a/arch/arm/include/asm/arch-mx5/imx-regs.h
+++ b/arch/arm/include/asm/arch-mx5/imx-regs.h
@@ -78,6 +78,7 @@
  #define GPIO4_BASE_ADDR   (AIPS1_BASE_ADDR + 0x0009)
  #define KPP_BASE_ADDR (AIPS1_BASE_ADDR + 0x00094000)
  #define WDOG1_BASE_ADDR   (AIPS1_BASE_ADDR + 0x00098000)
+#define CONFIG_IMX_WATCHDOG/* cpu_reset implemented in watchdog */
  #define WDOG2_BASE_ADDR   (AIPS1_BASE_ADDR + 0x0009C000)
  #define GPT1_BASE_ADDR(AIPS1_BASE_ADDR + 0x000A)
diff --git a/arch/arm/include/asm/arch-mx6/imx-regs.h 
b/arch/arm/include/asm/arch-mx6/imx-regs.h
index dacb9ea..0f59567 100644
--- a/arch/arm/include/asm/arch-mx6/imx-regs.h
+++ b/arch/arm/include/asm/arch-mx6/imx-regs.h
@@ -115,6 +115,7 @@
  #define GPIO7_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x34000)
  #define KPP_BASE_ADDR   (AIPS1_OFF_BASE_ADDR + 0x38000)
  #define WDOG1_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x3C000)
+#define CONFIG_IMX_WATCHDOG/* cpu_reset implemented in watchdog */
  #define WDOG2_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x4)
  #define ANATOP_BASE_ADDR(AIPS1_OFF_BASE_ADDR + 0x48000)
  #define USB_PHY0_BASE_ADDR  (AIPS1_OFF_BASE_ADDR + 0x49000)

I have only an issue with your patch. You move the reset_cpu (good idea
so we can factorize it) inside imx_watchdog.c, but then it depends on
CONFIG_IMX_WATCHDOG. If it is not set, the file is not compiled and
there is no reset_cpu. This constraints all boards to activate it, but
this is not what we want.

Best regards,
Stefano


So, you are saying CONFIG_ options don't belong in imx-regs.h, or
you didn't notice I stuck it there, or both???

Troy

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH V2 1/1] mx31/mx35/mx51/mx53/mx6: add watchdog

2012-08-22 Thread Stefano Babic
On 21/08/2012 19:51, Troy Kisky wrote:
> On 8/20/2012 11:11 PM, Stefano Babic wrote:
>> On 21/08/2012 01:03, Troy Kisky wrote:
>> diff --git a/arch/arm/include/asm/arch-mx31/imx-regs.h
>> b/arch/arm/include/asm/arch-mx31/imx-regs.h
>> index bba37ac..594d613 100644
>> --- a/arch/arm/include/asm/arch-mx31/imx-regs.h
>> +++ b/arch/arm/include/asm/arch-mx31/imx-regs.h
>> @@ -68,17 +68,6 @@ struct cspi_regs {
>>   u32 test;
>>   };
>> -#define WDOG_BASE0x53FDC000
>> -
>> +#define WDOG1_BASE_ADDR0x53FDC000
>> +#define CONFIG_IMX_WATCHDOG/* cpu_reset implemented in watchdog */
>>   /*
>>* GPIO
>>*/
>> diff --git a/arch/arm/include/asm/arch-mx35/imx-regs.h
>> b/arch/arm/include/asm/arch-mx35/imx-regs.h
>> index b18b984..45b331f 100644
>> --- a/arch/arm/include/asm/arch-mx35/imx-regs.h
>> +++ b/arch/arm/include/asm/arch-mx35/imx-regs.h
>> @@ -76,7 +76,8 @@
>>   #define GPIO2_BASE_ADDR0x53FD
>>   #define SDMA_BASE_ADDR0x53FD4000
>>   #define RTC_BASE_ADDR0x53FD8000
>> -#define WDOG_BASE_ADDR0x53FDC000
>> +#define WDOG1_BASE_ADDR0x53FDC000
>> +#define CONFIG_IMX_WATCHDOG/* cpu_reset implemented in watchdog */
>>   #define PWM_BASE_ADDR0x53FE
>> diff --git a/arch/arm/include/asm/arch-mx5/imx-regs.h
>> b/arch/arm/include/asm/arch-mx5/imx-regs.h
>> index c53465f..caac574 100644
>> --- a/arch/arm/include/asm/arch-mx5/imx-regs.h
>> +++ b/arch/arm/include/asm/arch-mx5/imx-regs.h
>> @@ -78,6 +78,7 @@
>>   #define GPIO4_BASE_ADDR(AIPS1_BASE_ADDR + 0x0009)
>>   #define KPP_BASE_ADDR(AIPS1_BASE_ADDR + 0x00094000)
>>   #define WDOG1_BASE_ADDR(AIPS1_BASE_ADDR + 0x00098000)
>> +#define CONFIG_IMX_WATCHDOG/* cpu_reset implemented in watchdog */
>>   #define WDOG2_BASE_ADDR(AIPS1_BASE_ADDR + 0x0009C000)
>>   #define GPT1_BASE_ADDR(AIPS1_BASE_ADDR + 0x000A)
>> diff --git a/arch/arm/include/asm/arch-mx6/imx-regs.h
>> b/arch/arm/include/asm/arch-mx6/imx-regs.h
>> index dacb9ea..0f59567 100644
>> --- a/arch/arm/include/asm/arch-mx6/imx-regs.h
>> +++ b/arch/arm/include/asm/arch-mx6/imx-regs.h
>> @@ -115,6 +115,7 @@
>>   #define GPIO7_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x34000)
>>   #define KPP_BASE_ADDR   (AIPS1_OFF_BASE_ADDR + 0x38000)
>>   #define WDOG1_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x3C000)
>> +#define CONFIG_IMX_WATCHDOG/* cpu_reset implemented in watchdog */
>>   #define WDOG2_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x4)
>>   #define ANATOP_BASE_ADDR(AIPS1_OFF_BASE_ADDR + 0x48000)
>>   #define USB_PHY0_BASE_ADDR  (AIPS1_OFF_BASE_ADDR + 0x49000)
>>
>> I have only an issue with your patch. You move the reset_cpu (good idea
>> so we can factorize it) inside imx_watchdog.c, but then it depends on
>> CONFIG_IMX_WATCHDOG. If it is not set, the file is not compiled and
>> there is no reset_cpu. This constraints all boards to activate it, but
>> this is not what we want.
>>
>> Best regards,
>> Stefano
>>
> So, you are saying CONFIG_ options don't belong in imx-regs.h, or
> you didn't notice I stuck it there, or both???

I didn't notice, but CONFIG_ options do not belong to imx-regs.h. They
must be define only inside the board configuration file.

Best regards,
Stefano

-- 
=
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sba...@denx.de
=
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH V2 1/1] mx31/mx35/mx51/mx53/mx6: add watchdog

2012-08-22 Thread Troy Kisky

On 8/22/2012 12:22 AM, Stefano Babic wrote:

On 21/08/2012 19:51, Troy Kisky wrote:

On 8/20/2012 11:11 PM, Stefano Babic wrote:

On 21/08/2012 01:03, Troy Kisky wrote:


So, you are saying CONFIG_ options don't belong in imx-regs.h, or
you didn't notice I stuck it there, or both???

I didn't notice, but CONFIG_ options do not belong to imx-regs.h. They
must be define only inside the board configuration file.

Best regards,
Stefano


Would it be acceptable to put
#if defined(CONFIG_MX31) || defined(CONFIG_MX35) || defined(CONFIG_MX51) \
|| defined(CONFIG_MX53) || defined(CONFIG_MX6Q)
#define CONFIG_IMX_WATCHDOG/* cpu_reset implemented in watchdog */
#endif


at the bottom of config_cmd_default.h or do you have a better place in mind?

Thanks
Troy

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH V2 1/1] mx31/mx35/mx51/mx53/mx6: add watchdog

2012-08-22 Thread Troy Kisky

On 8/22/2012 11:30 AM, Troy Kisky wrote:

On 8/22/2012 12:22 AM, Stefano Babic wrote:

On 21/08/2012 19:51, Troy Kisky wrote:

On 8/20/2012 11:11 PM, Stefano Babic wrote:

On 21/08/2012 01:03, Troy Kisky wrote:


So, you are saying CONFIG_ options don't belong in imx-regs.h, or
you didn't notice I stuck it there, or both???

I didn't notice, but CONFIG_ options do not belong to imx-regs.h. They
must be define only inside the board configuration file.

Best regards,
Stefano


Would it be acceptable to put
#if defined(CONFIG_MX31) || defined(CONFIG_MX35) || 
defined(CONFIG_MX51) \

|| defined(CONFIG_MX53) || defined(CONFIG_MX6Q)
#define CONFIG_IMX_WATCHDOG/* cpu_reset implemented in watchdog */
#endif


at the bottom of config_cmd_default.h or do you have a better place in 
mind?


Thanks
Troy


or perhaps


COBJS-$(CONFIG_MX31) += imx_watchdog.o
COBJS-$(CONFIG_MX35) += imx_watchdog.o
COBJS-$(CONFIG_MX51) += imx_watchdog.o
COBJS-$(CONFIG_MX53) += imx_watchdog.o
COBJS-$(CONFIG_MX6Q) += imx_watchdog.o


Thanks
Troy

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH V2 1/1] mx31/mx35/mx51/mx53/mx6: add watchdog

2012-08-23 Thread Stefano Babic
On 22/08/2012 20:30, Troy Kisky wrote:
> On 8/22/2012 12:22 AM, Stefano Babic wrote:
>> On 21/08/2012 19:51, Troy Kisky wrote:
>>> On 8/20/2012 11:11 PM, Stefano Babic wrote:
 On 21/08/2012 01:03, Troy Kisky wrote:


Hi Troy,

>>> So, you are saying CONFIG_ options don't belong in imx-regs.h, or
>>> you didn't notice I stuck it there, or both???
>> I didn't notice, but CONFIG_ options do not belong to imx-regs.h. They
>> must be define only inside the board configuration file.
>>
>> Best regards,
>> Stefano
>>
> Would it be acceptable to put
> #if defined(CONFIG_MX31) || defined(CONFIG_MX35) || defined(CONFIG_MX51) \
> || defined(CONFIG_MX53) || defined(CONFIG_MX6Q)
> #define CONFIG_IMX_WATCHDOG/* cpu_reset implemented in watchdog */
> #endif
> 
> 
> at the bottom of config_cmd_default.h or do you have a better place in
> mind?
> 

I do not think this will be accepted by Wolfgang. config_cmd_default.h
is a general file and should not have any reference to SOC specific details.

We have discussed recently how we can put common code across CPU
boundaries. I mean, code generic for all i.MXs (as in this case) that is
then replicated under cpu/arm1136, cpu/arm926ejs,...

Maybe we can start a new thread and ask Albert (I am already asking
him..) what he thinks about a arch/arm/cpu/plat-imx.

Best regards,
Stefano Babic

-- 
=
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sba...@denx.de
=
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH V2 1/1] mx31/mx35/mx51/mx53/mx6: add watchdog

2012-09-01 Thread Stefano Babic
On 23/08/2012 11:19, Stefano Babic wrote:

Hi Troy,

> We have discussed recently how we can put common code across CPU
> boundaries. I mean, code generic for all i.MXs (as in this case) that is
> then replicated under cpu/arm1136, cpu/arm926ejs,...
> 

It seems we are now blocked without exactly know what to do...I am
making a proposal to move shared files in a common place. I will send a
patch for it in some minutes. If we agree, it could be a place where you
can put the reset code.

Regards,
Stefano


-- 
=
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sba...@denx.de
=
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot