pxa168 and LINUX_REBOOT_CMD_POWER_OFF

Jaya Kumar jayakumar.lkml at gmail.com
Sun Aug 22 05:21:31 EDT 2010


Hi Arm friends,

I have a quick question about pxa168 and implementing support for
power off. I am playing with a pxa168 board (I think it might be based
off Aspenite) that appears to have no power off support, ie: I see all
the normal shutdown messages but nothing happens, even the console
stays active. I see userspace send:

sys_reboot (... LINUX_REBOOT_CMD_POWER_OFF )

to which the kernel responds with:
[   87.248429] System halted.

which is coming from:

 316void kernel_halt(void)
 317{
 318        kernel_shutdown_prepare(SYSTEM_HALT);
 319        sysdev_shutdown();
 320        printk(KERN_EMERG "System halted.\n");
 321        machine_halt();
 322}

I noticed that we have:
 366        /* Instead of trying to make the power_off code look like
 367         * halt when pm_power_off is not set do it the easy way.
 368         */
 369        if ((cmd == LINUX_REBOOT_CMD_POWER_OFF) && !pm_power_off)
 370                cmd = LINUX_REBOOT_CMD_HALT;
 371

which suggests that I'm missing pm_power_off which is why the command
got demoted to a halt. I suppose the correct path it should take if we
really want it to power off is:

 392        case LINUX_REBOOT_CMD_POWER_OFF:
 393                kernel_power_off();
 394                unlock_kernel();
 395                do_exit(0);
 396                break;

and looking in arch/arm/mach-mmp/ , I see that other board drivers
implement pm_power_off handlers that use an EC to shutdown. But I
don't think there is an EC on this board. There's a MAX8660 PMIC but
I'm not sure that should be involved in shutdown. Coming back to
Aspenite, I tried to figure out how it achieves shutdown and I don't
see it having a pm_power_off. I don't have an aspenite board to
compare with but I was wondering if shutdown works on it and if so,
some pointers to code that is involved would help me figure out how to
make shutdown work on this board. I'd appreciate any advice.

Thanks,
jaya



More information about the linux-arm-kernel mailing list