From: Nils Faerber Date: Wed, 2 Feb 2011 09:54:25 +0000 (+0100) Subject: Add restart/reboot IPM hook X-Git-Url: https://git.karo-electronics.de/?p=mv-sheeva.git;a=commitdiff_plain;h=8d5575b3d13a66f2882b5ceb50b4ab2919c8ff50 Add restart/reboot IPM hook --- diff --git a/arch/arm/mach-mv78xx0/rdstor-setup.c b/arch/arm/mach-mv78xx0/rdstor-setup.c index 9b6121436c7..2a036047c9b 100644 --- a/arch/arm/mach-mv78xx0/rdstor-setup.c +++ b/arch/arm/mach-mv78xx0/rdstor-setup.c @@ -304,6 +304,38 @@ static void rdstor_poweroff(void) i2c_transfer(adap, &msg, 1); } +static void rdstor_restart(char mode, const char *cmd) +{ + struct i2c_msg msg; + struct i2c_adapter *adap = i2c_get_adapter(1); + unsigned char buf[2]; + + if (!adap) { + printk(KERN_ERR "I2C adapter 1 not found\n"); + return; + } + + buf[0] = 0x01; /* cmd arg offset */ + buf[1] = 0x00; /* 0 seconds delay */ + msg.addr = 0x38; + msg.flags = 0; + msg.len = 2; + msg.buf = buf; + + i2c_transfer(adap, &msg, 1); + + printk(KERN_INFO "RDStor restarting...\n"); + + buf[0] = 0x00; /* cmd offset */ + buf[1] = 0x04; /* reboot cmd */ + msg.addr = 0x38; + msg.flags = 0; + msg.len = 2; + msg.buf = buf; + + i2c_transfer(adap, &msg, 1); +} + static void __init db78x00_init(void) { /* @@ -364,8 +396,10 @@ static void __init db78x00_init(void) mv78xx0_xor0_init(); - /* mv78xx0_wdt_init(); */ + /* mv78xx0_wdt_init(); */ /* SysRST is not connected so the WDT cannot fire */ + pm_power_off = rdstor_poweroff; + arm_pm_restart = rdstor_restart; } else { /* second CPU core */ }