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)
{
/*
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 */
}