首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

linux-2.6.29 s3c6410 reboot兑现

2012-08-16 
linux-2.6.29 s3c6410 reboot实现S3C6410 BSP驱动默认并未实现reboot机制,reboot的底层驱动实现接口为arch

linux-2.6.29 s3c6410 reboot实现
S3C6410 BSP驱动默认并未实现reboot机制,reboot的底层驱动实现接口为arch_reset, 该函数在system.h中实现。

实现方式可参考UBOOT中的实现:

static inline void arch_wdt_reset(void){struct clk *wdtclk;printk("arch_reset: attempting watchdog reset\n");__raw_writel(0, S3C2410_WTCON);  /* disable watchdog, to be safe  */wdtclk = clk_get(NULL, "watchdog");if (!IS_ERR(wdtclk)) {clk_enable(wdtclk);} elseprintk(KERN_WARNING "%s: warning: cannot get watchdog clock\n", __func__);/* put initial values into count and data */__raw_writel(0x80, S3C2410_WTCNT);__raw_writel(0x80, S3C2410_WTDAT);/* set the watchdog to go and reset... */__raw_writel(S3C2410_WTCON_ENABLE|S3C2410_WTCON_DIV16|S3C2410_WTCON_RSTEN |     S3C2410_WTCON_PRESCALE(0x20), S3C2410_WTCON);/* wait for reset to assert... */mdelay(500);printk(KERN_ERR "Watchdog reset failed to assert reset\n");/* delay to allow the serial port to show the message */mdelay(50);

热点排行