Neat. This problem has been observed by some; I've seen a few times. However, the 2008.8 image seems to trigger it a lot more often -- and if you add in the latest kernel and enable the flow-control of the GSM at suspend, and if you have SIM installed, and you have left your suspend timeout set to the very short default in that image, then you'll probably trigger it within the first couple of minutes after boot.
Attached are two logs for fun reading; I'll work more on this in the morning and any input would be appreciated. You'll note that the two logs show that we never actually suspended -- GSM activity is going on right after boot, and when the image attempts to suspend, the suspend handler in neo1973_pm_gsm.c catches the fact that we had a GSM interrupt and aborts the suspend. The first log has no suspend debug, the second has the suspend debug messages enabled. Reports earlier indicated that this problem was associated with GSM activity as well; could it be that we have some race conditions or such that require a certain amount of time to pass from suspend to resume? Of particular note in the second log is the final stuff: soc-audio soc-audio: resume work completed JFFS2 notice: (1127) check_node_data: wrong data CRC in data node at 0x0a28c5dc: read 0xa766fee6, calculated 0xc1615797. modem wakeup interrupt At this point, the display is blank, no buttons are responsive. But one can ssh into the device and poke about; it appears to be somewhat running. Attempting to suspend again by using the "apm -s" command result in a "Device busy" error. In the midst of this poking about, the following message appears: power_supply bat: driver failed to report `time_to_full_now' property Shortly after that, I issues the "poweroff" command from the ssh session. Note that apm (or something) decided to suspend instead. I've seen that happen before as well; at that point one needs to pull the battery to get it back. Sooo... if anyone wants to poke at this a bit, I rather suspect we'll get some valuable hints if we try to deliberately abort any suspend operation. Edit the suspend handler in /arc/arm/plat-sc324xx/neo1973_pm_gsm.c so that the suspend handler always returns -EBUSY and see if the device properly resumes. Mike (mwester)
Syncing filesystems ... done. PM: Preparing system for mem sleep Freezing user space processes ... (elapsed 0.30 seconds) done. Freezing remaining freezable tasks ... (elapsed 0.04 seconds) done. PM: Entering mem sleep Suspending console(s) sdio_wlan 00:01: suspend WM8753 I2C Codec 0-001a: suspend soc-audio soc-audio: suspend sdio_s3c24xx_hcd 00:00: suspend mmcblk mmc0:0007: suspend neo1973-pm-gps neo1973-pm-gps.0: suspend neo1973-pm-bt neo1973-pm-bt.0: suspend rtc rtc0: class suspend pcf50633 0-0073: suspend pcf50633 0-0073: pcf50633_suspend hub 1-0:1.0: PM: suspend 2-->2 hub 1-0:1.0: suspend usb usb1: PM: suspend 2-->2 usb usb1: suspend, may wakeup lis302dl spi0.1: suspend lis302dl spi0.0: suspend jbt6k74 spi2.0: suspend glamo-mci glamo-mci.0: suspend glamo-mci glamo-mci.0: faking cmd 7 during suspend mmc_set_power(power_mode=0, vdd=0 glamo-mci glamo-mci.0: glamo_mci_set_ios: power down. glamo-spi-gpio glamo-spi-gpio.0: suspend glamo-fb glamo-fb.0: suspend platform glamo-mpeg.0: suspend platform glamo-jpeg.0: suspend platform glamo-3d.0: suspend platform glamo-2d.0: suspend platform bluetooth: suspend s3c2440-uart s3c2440-uart.2: suspend s3c2440-uart s3c2440-uart.1: suspend s3c2440-uart s3c2440-uart.0: suspend bq27000-battery bq27000-battery.0: suspend gta02-hdq gta02-hdq.0: suspend s3c24xx_pwm s3c24xx_pwm.0: suspend neo1973-resume neo1973-resume.0: suspend neo1973-memconfig neo1973-memconfig.0: suspend neo1973-version neo1973-version.0: suspend sc32440_fiq sc32440_fiq.0: suspend physmap-flash physmap-flash.0: suspend s3c2440-ts s3c2440-ts: suspend s3c2440-nand s3c2440-nand: suspend s3c2440-usbgadget s3c2440-usbgadget: suspend gta02_udc_command(2) platform s3c2410-iis: suspend s3c2440-i2c s3c2440-i2c: suspend platform s3c2410-wdt: suspend s3c2410-ohci s3c2410-ohci: suspend s3c24xx-sdio s3c24xx-sdio: suspend gta02-led gta02-led.0: suspend neo1973-vibrator neo1973-vibrator.0: suspend pcf50633 pcf50633.0: suspend neo1973-pm-host neo1973-pm-host.0: suspend neo1973-pm-gsm neo1973-pm-gsm.0: suspend suspend_device(): platform_suspend+0x0/0x3c() returns -16 Could not suspend device neo1973-pm-gsm.0: error -16 neo1973-pm-host neo1973-pm-host.0: resuming pcf50633 pcf50633.0: resuming neo1973-vibrator neo1973-vibrator.0: resuming gta02-led gta02-led.0: resuming s3c24xx-sdio s3c24xx-sdio: resuming s3c2410-ohci s3c2410-ohci: resuming platform s3c2410-wdt: resuming s3c2440-i2c s3c2440-i2c: resuming s3c2440-i2c s3c2440-i2c: slave address 0x10 s3c2440-i2c s3c2440-i2c: bus frequency set to 390 KHz platform s3c2410-iis: resuming s3c2440-usbgadget s3c2440-usbgadget: resuming gta02_udc_command(1) s3c2440-nand s3c2440-nand: resuming s3c2440-nand s3c2440-nand: Tacls=3, 30ns Twrph0=7 70ns, Twrph1=3 30ns s3c2440-ts s3c2440-ts: resuming physmap-flash physmap-flash.0: resuming sc32440_fiq sc32440_fiq.0: resuming not changing prescaler of PWM 3, since it's shared with timer4 (clock tick) neo1973-version neo1973-version.0: resuming neo1973-memconfig neo1973-memconfig.0: resuming neo1973-resume neo1973-resume.0: resuming s3c24xx_pwm s3c24xx_pwm.0: resuming gta02-hdq gta02-hdq.0: resuming bq27000-battery bq27000-battery.0: resuming s3c2440-uart s3c2440-uart.0: resuming s3c2440-uart s3c2440-uart.1: resuming s3c2440-uart s3c2440-uart.2: resuming platform bluetooth: resuming platform glamo-2d.0: resuming platform glamo-3d.0: resuming platform glamo-jpeg.0: resuming platform glamo-mpeg.0: resuming glamo-fb glamo-fb.0: resuming glamo-spi-gpio glamo-spi-gpio.0: resuming glamo-mci glamo-mci.0: resuming jbt6k74 spi2.0: resuming lis302dl spi0.0: resuming lis302dl spi0.1: resuming usb usb1: resuming hub 1-0:1.0: resuming pcf50633 0-0073: resuming pcf50633 0-0073: pcf irq work already queued mmc_set_power(power_mode=1, vdd=20 SD power -> 3200mV glamo-mci glamo-mci.0: powered (vdd = 20) clk: 0kHz div=255 (req: 0kHz). Bus width=0 glamo-mci glamo-mci.0: powered (vdd = 20) clk: 195kHz div=255 (req: 195kHz). Bus width=0 glamo-mci glamo-mci.0: powered (vdd = 20) clk: 195kHz div=255 (req: 195kHz). Bus width=0 glamo-mci glamo-mci.0: powered (vdd = 20) clk: 195kHz div=255 (req: 195kHz). Bus width=0 glamo-mci glamo-mci.0: powered (vdd = 20) clk: 195kHz div=255 (req: 195kHz). Bus width=0 glamo-mci glamo-mci.0: powered (vdd = 20) clk: 195kHz div=255 (req: 195kHz). Bus width=0 glamo-mci glamo-mci.0: powered (vdd = 20) clk: 16666kHz div=2 (req: 16666kHz). Bus width=0 glamo-mci glamo-mci.0: powered (vdd = 20) clk: 16666kHz div=2 (req: 16666kHz). Bus width=2 rtc rtc0: class resume neo1973-pm-bt neo1973-pm-bt.0: resuming neo1973-pm-gps neo1973-pm-gps.0: resuming mmcblk mmc0:0007: resuming sdio_s3c24xx_hcd 00:00: resuming soc-audio soc-audio: resuming soc-audio soc-audio: scheduling resume work WM8753 I2C Codec 0-001a: resuming sdio_wlan 00:01: resuming Some devices failed to suspend PM: Finishing wakeup. Restarting tasks ... done. usb0: full speed config #1: 500 mA, Ethernet Gadget, using CDC Ethernet soc-audio soc-audio: starting resume work soc-audio soc-audio: resume work completed JFFS2 notice: (1127) check_node_data: wrong data CRC in data node at 0x0a28c5dc: read 0xa766fee6, calculated 0xc1615797. modem wakeup interrupt power_supply bat: driver failed to report `time_to_full_now' property PM: Removing info for No Bus:vcs1 PM: Removing info for No Bus:vcsa1 Syncing filesystems ... done. Freezing user space processes ... (elapsed 0.01 seconds) done. Freezing remaining freezable tasks ... (elapsed 0.00 seconds) done. Suspending console(s)
modem wakeup interrupt usb0: full speed config #1: 500 mA, Ethernet Gadget, using CDC Ethernet JFFS2 notice: (1129) check_node_data: wrong data CRC in data node at 0x0a28c5dc: read 0xa766fee6, calculated 0xc1615797. Syncing filesystems ... done. PM: Preparing system for mem sleep Freezing user space processes ... <7>modem wakeup interrupt (elapsed 0.30 seconds) done. Freezing remaining freezable tasks ... (elapsed 0.22 seconds) done. PM: Entering mem sleep Suspending console(s) pcf50633 0-0073: pcf50633_suspend glamo-mci glamo-mci.0: faking cmd 7 during suspend mmc_set_power(power_mode=0, vdd=0 glamo-mci glamo-mci.0: glamo_mci_set_ios: power down. gta02_udc_command(2) suspend_device(): platform_suspend+0x0/0x3c() returns -16 Could not suspend device neo1973-pm-gsm.0: error -16 s3c2440-i2c s3c2440-i2c: slave address 0x10 s3c2440-i2c s3c2440-i2c: bus frequency set to 390 KHz gta02_udc_command(1) s3c2440-nand s3c2440-nand: Tacls=3, 30ns Twrph0=7 70ns, Twrph1=3 30ns not changing prescaler of PWM 3, since it's shared with timer4 (clock tick) mmc_set_power(power_mode=1, vdd=20 SD power -> 3200mV glamo-mci glamo-mci.0: powered (vdd = 20) clk: 0kHz div=255 (req: 0kHz). Bus width=0 glamo-mci glamo-mci.0: powered (vdd = 20) clk: 195kHz div=255 (req: 195kHz). Bus width=0 glamo-mci glamo-mci.0: powered (vdd = 20) clk: 195kHz div=255 (req: 195kHz). Bus width=0 glamo-mci glamo-mci.0: powered (vdd = 20) clk: 195kHz div=255 (req: 195kHz). Bus width=0 glamo-mci glamo-mci.0: powered (vdd = 20) clk: 195kHz div=255 (req: 195kHz). Bus width=0 glamo-mci glamo-mci.0: powered (vdd = 20) clk: 195kHz div=255 (req: 195kHz). Bus width=0 glamo-mci glamo-mci.0: powered (vdd = 20) clk: 16666kHz div=2 (req: 16666kHz). Bus width=0 glamo-mci glamo-mci.0: powered (vdd = 20) clk: 16666kHz div=2 (req: 16666kHz). Bus width=2 soc-audio soc-audio: scheduling resume work Some devices failed to suspend PM: Finishing wakeup. Restarting tasks ... <6>soc-audio soc-audio: starting resume work done. soc-audio soc-audio: resume work completed modem wakeup interrupt
