一. poweroff关机命令

~ # poweroff
~ # baud=, quot=
w-config: 8bits/char
umount: devtmpfs busy - remounted read-only
Cannot open value file.
umount: can't remount rootfs reabaud=115200, quot=102
w-config: 8bits/char
d-only
cannot run '/sbin/swapoff': No such file or dirRTL871X: rtw_cmd_thread(wlan0) _rtw_down_sema(&pcmdpriv->cmd_queue_sema) return _FAIL, break
ectory
The system is going down NOW!
Sent SIGTERM to all processes
videoin_close
Sensor power down
Sensor power down
I2C removed
Sent SIGKILL toPower down.
enter to w55fa92_poweroff()

二、内核代码

void w55fa92_poweroff(void)
{
unsigned long volatile flags;
#if defined(CONFIG_RTC_DRV_W55FA92)
int rtc_time_out;
#endif printk("enter to w55fa92_poweroff()\n");
msleep(); // disable LVR
__raw_writel(__raw_readl(REG_MISCR) & ~(LVR_RDY | LVR_EN), REG_MISCR); // turn off speaker
#if defined(CONFIG_GIANTPLUS_GPM1006D0_320X240)
__raw_writel(__raw_readl(REG_GPIOE_OMD) | ( << ), REG_GPIOE_OMD);
__raw_writel(__raw_readl(REG_GPIOE_DOUT) & ~( << ), REG_GPIOE_DOUT);
#endif // turn off video out
__raw_writel((__raw_readl(REG_LCM_TVCtl) & ~TVCtl_LCDSrc) | 0x800, REG_LCM_TVCtl); // disable system interrupts
local_irq_save(flags); #if defined(CONFIG_RTC_DRV_W55FA92)
__raw_writel(__raw_readl(REG_APBCLK) | RTC_CKE, REG_APBCLK);
while () {
rtc_time_out = ;
// enable long time press power disable
if ((__raw_readl(REG_RTC_AER) & 0x10000) == 0x0) {
// set RTC register access enable password
__raw_writel(0xA965, REG_RTC_AER);
// make sure RTC register read/write enable
while ((__raw_readl(REG_RTC_AER) & 0x10000) == 0x0) {
rtc_time_out++;
if (rtc_time_out > 0xFFFFFF) {
printk("RTC Access Eanble Fail\n");
break;
}
} rtc_wait_ready(); if ((__raw_readl(REG_RTC_AER) & 0x10000) == 0x10000)
break;
}
else
break;
} // RTC will power off
__raw_writel((__raw_readl(REG_RTC_PWRON) & ~0x5) | 0x2, REG_RTC_PWRON);
#else
// turn off power
__raw_writel(__raw_readl(REG_GPIOE_OMD) | (<<), REG_GPIOE_OMD);
__raw_writel(__raw_readl(REG_GPIOE_DOUT) & ~(<<), REG_GPIOE_DOUT);
#endif // enable system interrupts
local_irq_restore(flags); // stop CPU clock
//__raw_writel(__raw_readl(REG_AHBCLK) & ~CPU_CKE, REG_AHBCLK);
// fix RTC may wakeup fail issue
__raw_writel(0x0, REG_AHBCLK); // wait system enter power off
while () ;
} void w55fa92_reboot(void)
{
unsigned long volatile flags; local_irq_save(flags);
printk("enter to w55fa92_reboot()\n"); // turn off speaker
#if defined(CONFIG_GIANTPLUS_GPM1006D0_320X240)
__raw_writel(__raw_readl(REG_GPIOE_OMD) | ( << ), REG_GPIOE_OMD);
__raw_writel(__raw_readl(REG_GPIOE_DOUT) & ~( << ), REG_GPIOE_DOUT);
#endif // turn off video out
__raw_writel((__raw_readl(REG_LCM_TVCtl) & ~TVCtl_LCDSrc) | 0x800, REG_LCM_TVCtl); // close NAND and SIC engine clock
__raw_writel(__raw_readl(REG_AHBCLK) & ~(NAND_CKE|SIC_CKE), REG_AHBCLK); // watchdog reset
__raw_writel((__raw_readl(REG_WTCR) & ~(<<|<<))|0x2C2, REG_WTCR); // wait system enter power off
while () ;
local_irq_restore(flags);
} static ssize_t
write_clk(struct device *dev, struct device_attribute *attr,
const char *buffer, size_t count)
{
int i; // power down mode
if (buffer[] == 'p' && buffer[] == 'd') {
w55fa92_pm_suspend();
} #if 0
// idle mode or memory idle mode
else if ((buffer[] == 'i' && buffer[] == 'd') || (buffer[] == 'm' && buffer[] == 'i')) {
w55fa92_pm_idle();
}
#endif #if defined(CONFIG_RTC_DRV_W55FA92)
// RTC power off mode
else if (buffer[] == 'r' && buffer[] == 'p' && buffer[] == 'o') {
w55fa92_poweroff();
}
#else
// power off mode
else if (buffer[] == 'p' && buffer[] == 'o') {
w55fa92_poweroff();
}
#endif // power reset mode
else if (buffer[] == 'p' && buffer[] == 'r') {
w55fa92_reboot();
} // CPU:PLL clock change
else {
u32 pll_clock, sys_clock, cpu_clock, apb_clock, vpost_clock;
u8 vpost_div_N0, vpost_div_N1;
char clock_buf[];
char *clock1, *clock2, *next; strncpy(clock_buf, buffer, count);
next = &clock_buf[];
pll_clock = w55fa92_upll_clock;
clock1 = strsep(&next, ":");
//printk("clock1 = %s\n", clock1);
cpu_clock = simple_strtol(clock1, NULL, ) * ;
if (cpu_clock == ) {
printk("Command \"%s\" does not support !!\n", clock1);
return -;
}
if (next) {
clock2 = strsep(&next, ":");
//printk("clock2 = %s\n", clock2);
pll_clock = simple_strtol(clock2, NULL, ) * ;
if (pll_clock == ) {
printk("Command \"%s\" does not support !!\n", clock2);
return -;
}
} if (pll_clock % cpu_clock) {
printk("UPLL clock(%d) is not a multiple of CPU clock(%d) !!\n",
pll_clock, cpu_clock);
return -;
} #if defined(CONFIG_FB_W55FA92)
vpost_div_N0 = (__raw_readl(REG_CLKDIV1) & VPOST_N0) + ;
vpost_div_N1 = ((__raw_readl(REG_CLKDIV1) & VPOST_N1) >> ) + ;
vpost_clock = pll_clock / (vpost_div_N0 * vpost_div_N1);
if (cpu_clock > vpost_clock*) {
sys_clock = cpu_clock;
} else {
for (i = ; ; i++) {
sys_clock = cpu_clock * i * ;
if ((i > ) || (sys_clock > pll_clock)) {
printk("Cannot get valid System clock !!\n");
return -;
}
if ((sys_clock>(vpost_clock*)) && ((pll_clock%sys_clock)==))
break;
}
}
#else
sys_clock = cpu_clock;
#endif
apb_clock = (cpu_clock == sys_clock) ? cpu_clock/ : cpu_clock/;
#if CPU_DEBUG
printk("vpost_clock = %d\n", vpost_clock);
printk("pll_clock = %d\n", pll_clock);
printk("sys_clock = %d\n", sys_clock);
printk("cpu_clock = %d\n", cpu_clock);
printk("apb_clock = %d\n", apb_clock);
#endif // PLL:SYS:CPU:AHB:APB = pll_clock:sys_clock:cpu_clock:sys_clock/2:apb_clock
set_system_clocks(pll_clock, sys_clock, cpu_clock, apb_clock);
} return count;
} /* Attach the sysfs write method */
DEVICE_ATTR(clock, , read_clk, write_clk); /* Attribute Descriptor */
static struct attribute *clk_attrs[] = {
&dev_attr_clock.attr,
NULL
}; /* Attribute group */
static struct attribute_group clk_attr_group = {
.attrs = clk_attrs,
}; static int __init w55fa92_system_clock_init(void)
{
/* Register a platform device */
printk("register clock device\n");

  ///sys/devices/w55fa92-clk
sys_clk = platform_device_register_simple("w55fa92-clk", -, NULL, );
if (sys_clk == NULL)
printk("register failed\n");
sysfs_create_group(&sys_clk->dev.kobj, &clk_attr_group);
sram_vaddr = ioremap(0xFF000000, *); return ;
} module_init(w55fa92_system_clock_init);

Nx32926 命令关机的更多相关文章

  1. windows命令关机

    不知道为啥,远程连接的window服务器没有关机命令,感觉是不是管理员权限导致的,所以找了下用命令关机,如下 shutdown -s -t #5秒内关机 shutdown -r -t #5秒内重启

  2. Linux常用命令——关机重启命令

    Linux常用命令--关机重启命令 Linux  shutdown 语法:shutdown [选项] 时间 -c 取消前一个关机命令 -h 关机 -r 重启 示例:shutdown -r now 其它 ...

  3. Linux学习笔记(六)Linux常用命令:关机、重启以及系统运行级别

    一.shutdown命令 shutdown [选项] [时间] 常用选项 -c 取消前一个关机命令 -h 关机 -r 重启 shutdown命令关机或重启会保存当前系统正在使用的资源,因此关机或重启最 ...

  4. linux常用命令-关机、重启

    常用命令-关机.重启 命令 含义 reboot 重新启动操作系 shutdown –r now 重新启动操作系统,shutdown会给别的用户提示 shutdown -h now 立刻关机,其中now ...

  5. linux笔记:linux常用命令-关机重启命令

    关机重启命令:shutdown(关机或者重启) 其他关机命令: 其他重启命令: 系统运行级别: 修改系统默认运行级别和查询系统运行级别: 退出登录命令:logout(退出登录)

  6. WIN7 shutdown 定时/倒计时 命令关机

    解决方案: 一.可以通过DOS命令shutdown来解决 在 Win7 中,shutdown实现自动关机的方法如下: 开始->运行->cmd 运行"shutdown -s -t ...

  7. Linux命令-关机命令详解

    关机命令:1.halt 立刻关机 2.poweroff 立刻关机 3.shutdown -h now 立刻关机(root用户使用) 4.shutdown -h 10 10分钟后自动关机 如果是通过sh ...

  8. Linux命令-关机命令:shutdown

    shutdown -h now 现在马上关机 shutdown -h : 晚上8:30定时关机shutdown -r now 现在马上重起shutdown -r 20:30 晚上8:30定时重起 ca ...

  9. Linux常用命令——关机与重启命令

    1.shutdown命令 shutdown [选项] 时间 --使用shutdown进行关机或重启会正确保存正在使用的服务,其他命令有一定的危险性,建议最好使用shutdown命令进行关机重启 选项: ...

随机推荐

  1. myBatis学习(9):一级缓存和二级缓存

    正如大多数持久层框架一样,MyBatis同样提供了一级缓存和二级缓存的支持 1. MyBatis一级缓存基于PerpetualCache的HashMap本地缓存,其存储作用域为 Session,默认情 ...

  2. Oracle442个应用场景------------基础应用场景

    /////////////////基础知识////////////////// 应用场景178:最简单的select语句 SELECT * FROM Employees; 应用场景179:指定要查询的 ...

  3. Filter过滤器实现登录检查

    主要利用filter过滤掉未经登录而直接跳转到非登录访问页面.代码而言的话并不难,只是有几点问题需要注意一下. 1.使用filter需要配置web.xml,如果是/*那么在拦截后的页面会连带jsp页面 ...

  4. android 新浪微博客户端的表情功能的实现

    这是一篇好文章,我转来收藏,技术的最高境界是分享. 最近在搞android 新浪微博客户端,有一些心得分享弄android客户端表情功能可以用以下思路1.首页把新浪的表情下载到本地一文件夹种,表情图片 ...

  5. VMware SphereESXi上安装虚拟机

    VMware SphereESXi上安装虚拟机 创建新虚拟机 此处以CentOS为例 注意:配置上传的系统文件位置及启动项

  6. .NET基础拾遗(3)字符串、集合和流1

    一.字符串处理 1.1 StringBuilder类型 众所周知,在.NET中String是引用类型,具有不可变性,当一个String对象被修改.插入.连接.截断时,新的String对象就将被分配,这 ...

  7. 针对淡入淡出的定时轮播效果js

    如果不使用jquery的fadeIn和fadeOut的接口和不适用animate情况下,如果要做用js实现淡入淡出轮播效果,我所想到的办法就是使用css3新特性transition(注意好兼容性). ...

  8. ORACLE触发器概述之【语句触发器】【weber出品】

    一.触发器概述 与表,视图,模式,或者数据库相关的PL/SQL过程,当触发条件被触发时,自动执行 分类: 1.语句触发器 2.行触发器 二.语句触发器 1. 什么是语句触发器 语句触发器,是指当执行D ...

  9. linuxmit下git安装和初级使用

    一.安装 sudo apt-get install git 二.配置 git config --global user.name "Your Name" git config -- ...

  10. MySQL中的两个时间函数,用来做两个时间之间的对比

    TIMESTAMPDIFF,(如果当期时间和之前时间的分钟数相比较.大于1天,即等于1:小于1天,则等于0) select TIMESTAMPDIFF(DAY,'2016-11-16 10:13:42 ...