MFD USB host: prevents CORE retention in idle
Subsystems (3)
Hi Keshava,
Using current l-o master, I noticed that CORE was not hitting retention in idle on my 3530/Overo. CORE hits retention on suspend just fine.
Debugging this, I found that usbtll_fck was still enabled during idle, thus preventing CORE from hitting retention.
To test, I disabled USB host (CONFIG_MFD_OMAP_USB_HOST=n in .config) and was then started seeing CORE hit retention in idle again.
I have nothing plugged into the USB host port on this board, so I would've expected that runtime PM would've kicked in and shutdown this clock.
Any ideas what's going on here? Is this expected behavior?
Kevin
Quoted 8 lines · Kevin Hilman
Hi Keshava,
Using current l-o master, I noticed that CORE was not hitting retention in idle on my 3530/Overo. CORE hits retention on suspend just fine.
Debugging this, I found that
usbtll_fckwas still enabled during idle, thus preventing CORE from hitting retention.
Quoted 9 lines
To test, I disabled USB host (
CONFIG_MFD_OMAP_USB_HOST=nin .config) and was then started seeing CORE hit retention in idle again.I have nothing plugged into the USB host port on this board, so I would've expected that runtime PM would've kicked in and shutdown this clock.
Any ideas what's going on here? Is this expected behavior?
If it helps, attached is a bootlog after enabling debug for mfd/omap-usb-host.c as well. Notice there's a couple of clock-related warnings from this driver as well. Not sure if they're relevant:
usbhs_omap: alias fck already existsusbhs_omap usbhs_omap: xclk60mhsp2_ck set parentfailed error:-22
With debug enabled, I see the runtime resume during init followed by the runtime suspend.
[ 0.936248] usbhs_omap usbhs_omap: xclk60mhsp2_ck set parentfailed error:-22 [ 0.944152] usbhs_omap usbhs_omap: starting TI HSUSB Controller [ 0.944335] usbhs_omap usbhs_omap: usbhs_runtime_resume [ 0.944641] usbhs_omap usbhs_omap: OMAP UHH_REVISION 0x10 [ 0.944641] usbhs_omap usbhs_omap: OMAP3 ES version > ES2.1 [ 0.944671] usbhs_omap usbhs_omap: UHH setup done, uhh_hostconfig=8000121d [ 0.947082] usbhs_omap usbhs_omap: usbhs_runtime_suspend
However, later in the boot I see a runtime_resume and never see another suspend. That seems to be the root cause of CORE not hitting retention.
From the boot log:
[ 2.018707] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ 2.025787] ehci_hcd: block sizes: qh 64 qtd 96 itd 160 sitd 96 [ 2.026306] ehci-omap ehci-omap.0: failed to get ehci port1 regulator [ 2.026519] usbhs_omap usbhs_omap: usbhs_runtime_resume [ 3.030639] ehci-omap ehci-omap.0: phy reset operation timed out [ 3.030700] ehci-omap ehci-omap.0: reset hcs_params 0x1313 dbg=0 cc=1 pcc=3 ordered ports=3 [ 3.030731] ehci-omap ehci-omap.0: reset hcc_params 0016 thresh 1 uframes 256/512/1024 park [ 3.030761] ehci-omap ehci-omap.0: reset command 0080b02 park=3 ithresh=8 period=1024 Reset HALT [ 3.030792] ehci-omap ehci-omap.0: OMAP-EHCI Host Controller
Since the only get/puts I see are in omap_usbhs_init(), I'm not sure how this driver is being runtime resumed. Presumably it's due to how the rest of the USB stack works, which I'm not at all familiar with.
Hopefully, the above is enough to debug the problem,
Thanks,
Kevin
[ 0.000000] Booting Linux on physical CPU 0 [ 0.000000] Linux version 3.4.0-rc7-pm+debug+initramfs-01073-g0ecc382-dirty (khilman@paris) (gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) ) #20 SMP Wed May 23 17:10:56 PDT 2012 [ 0.000000] CPU: ARMv7 Processor [411fc083] revision 3 (ARMv7), cr=10c53c7d [ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT nonaliasing instruction cache [ 0.000000] Machine: Gumstix Overo [ 0.000000] bootconsole [earlycon0] enabled [ 0.000000] Memory policy: ECC disabled, Data cache writeback [ 0.000000] On node 0 totalpages: 65280 [ 0.000000] free_area_init_node: node 0, pgdat c09c0dc0, node_mem_map c0f1e000 [ 0.000000] Normal zone: 512 pages used for memmap [ 0.000000] Normal zone: 0 pages reserved [ 0.000000] Normal zone: 64768 pages, LIFO batch:15 [ 0.000000] OMAP3430/3530 ES3.1 (l2cache iva sgx neon isp ) [ 0.000000] Clocking rate (Crystal/Core/MPU): 26.0/331/500 MHz [ 0.000000] PERCPU: Embedded 9 pages/cpu @c1124000 s12992 r8192 d15680 u36864 [ 0.000000] pcpu-alloc: s12992 r8192 d15680 u36864 alloc=9*4096 [ 0.000000] pcpu-alloc: [0] 0 [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 64768 [ 0.000000] Kernel command line: console=ttyO2,115200n8 earlyprintk ip=192.168.1.157:192.168.1.5:192.168.1.254:255.255.255.0:overo:eth0:none root=/dev/nfs nfsroot=192.168.1.236:/opt/kjh/rootfs/debian/armel,rsize=4096,wsize=409 [ 0.000000] PID hash table entries: 1024 (order: 0, 4096 bytes) [ 0.000000] Dentry cache hash table entries: 32768 (order: 5, 131072 bytes) [ 0.000000] Inode-cache hash table entries: 16384 (order: 4, 65536 bytes) [ 0.000000] Memory: 255MB = 255MB total [ 0.000000] Memory: 243328k/243328k available, 18816k reserved, 0K highmem [ 0.000000] Virtual kernel memory layout: [ 0.000000] vector : 0xffff0000 - 0xffff1000 ( 4 kB) [ 0.000000] fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB) [ 0.000000] vmalloc : 0xd0800000 - 0xff000000 ( 744 MB) [ 0.000000] lowmem : 0xc0000000 - 0xd0000000 ( 256 MB) [ 0.000000] pkmap : 0xbfe00000 - 0xc0000000 ( 2 MB) [ 0.000000] modules : 0xbf000000 - 0xbfe00000 ( 14 MB) [ 0.000000] .text : 0xc0008000 - 0xc066da70 (6551 kB) [ 0.000000] .init : 0xc066e000 - 0xc092b2c0 (2805 kB) [ 0.000000] .data : 0xc092c000 - 0xc09c3530 ( 606 kB) [ 0.000000] .bss : 0xc09c3554 - 0xc0f1d620 (5481 kB) [ 0.000000] Hierarchical RCU implementation. [ 0.000000] NR_IRQS:474 [ 0.000000] IRQ: Found an INTC at 0xfa200000 (revision 4.0) with 96 interrupts [ 0.000000] Total of 96 interrupts on 1 active controller [ 0.000000] OMAP clockevent source: GPTIMER1 at 32768 Hz [ 0.000000] sched_clock: 32 bits at 32kHz, resolution 30517ns, wraps every 131071999ms [ 0.000000] OMAP clocksource: 32k_counter at 32768 Hz [ 0.000000] Console: colour dummy device 80x30 [ 0.000000] Lock dependency validator: Copyright (c) 2006 Red Hat, Inc., Ingo Molnar [ 0.000000] ... MAX_LOCKDEP_SUBCLASSES: 8 [ 0.000000] ... MAX_LOCK_DEPTH: 48 [ 0.000000] ... MAX_LOCKDEP_KEYS: 8191 [ 0.000000] ... CLASSHASH_SIZE: 4096 [ 0.000000] ... MAX_LOCKDEP_ENTRIES: 16384 [ 0.000000] ... MAX_LOCKDEP_CHAINS: 32768 [ 0.000000] ... CHAINHASH_SIZE: 16384 [ 0.000000] memory used by lock dependency info: 3695 kB [ 0.000000] per task-struct memory footprint: 1152 bytes [ 0.062866] Calibrating delay loop... 497.82 BogoMIPS (lpj=1941504) [ 0.106231] pid_max: default: 32768 minimum: 301 [ 0.112091] Security Framework initialized [ 0.116760] Mount-cache hash table entries: 512 [ 0.128845] CPU: Testing write buffer coherency: ok [ 0.135284] CPU0: thread -1, cpu 0, socket -1, mpidr 0 [ 0.140777] Setting up static identity map for 0x8048cf58 - 0x8048cfc8 [ 0.150268] Brought up 1 CPUs [ 0.153411] SMP: Total of 1 processors activated (497.82 BogoMIPS). [ 0.189422] dummy: [ 0.194763] NET: Registered protocol family 16 [ 0.201293] GPMC revision 5.0 [ 0.204742] gpmc: irq-20 could not claim: err -22 [ 0.224334] gpiochip_add: registered GPIOs 0 to 31 on device: gpio [ 0.231872] OMAP GPIO hardware version 2.5 [ 0.237823] gpiochip_add: registered GPIOs 32 to 63 on device: gpio [ 0.246490] gpiochip_add: registered GPIOs 64 to 95 on device: gpio [ 0.255310] gpiochip_add: registered GPIOs 96 to 127 on device: gpio [ 0.264038] gpiochip_add: registered GPIOs 128 to 159 on device: gpio [ 0.272796] gpiochip_add: registered GPIOs 160 to 191 on device: gpio [ 0.289855] omap_mux_init: Add partition: #1: core, flags: 0 [ 0.327178] Reprogramming SDRC clock to 331882352 Hz [ 0.332550] Found NAND on CS0 [ 0.335693] Registering NAND on CS0 [ 0.342926] usbhs_omap: alias fck already exists [ 0.366394] hw-breakpoint: debug architecture 0x4 unsupported. [ 0.394683] omap-mcbsp.2: alias fck already exists [ 0.401367] omap-mcbsp.3: alias fck already exists [ 0.412933] OMAP DMA hardware revision 4.0 [ 0.514068] bio: create slab <bio-0> at 0 [ 0.524139] fixed-dummy: [ 0.528808] vads7846: 3300 mV [ 0.540191] SCSI subsystem initialized [ 0.547149] omap2_mcspi omap2_mcspi.1: master is unqueued, this is deprecated [ 0.559478] omap2_mcspi omap2_mcspi.2: master is unqueued, this is deprecated [ 0.568756] omap2_mcspi omap2_mcspi.3: master is unqueued, this is deprecated [ 0.578124] omap2_mcspi omap2_mcspi.4: master is unqueued, this is deprecated [ 0.590362] usbcore: registered new interface driver usbfs [ 0.597778] usbcore: registered new interface driver hub [ 0.604705] usbcore: registered new device driver usb [ 0.627441] omap_i2c omap_i2c.1: bus 1 rev1.3.12 at 2600 kHz [ 0.646484] twl 1-0048: PIH (irq 7) chaining IRQs 320..328 [ 0.653320] twl 1-0048: power (irq 325) chaining IRQs 328..335 [ 0.662628] twl4030_gpio twl4030_gpio: gpio (irq 320) chaining IRQs 336..353 [ 0.672149] gpiochip_add: registered GPIOs 192 to 211 on device: twl4030 [ 0.686859] vdd_mpu_iva: 600 <--> 1450 mV normal [ 0.694915] vdd_core: 600 <--> 1450 mV normal [ 0.703033] VMMC1: 1850 <--> 3150 mV at 3000 mV normal standby [ 0.712341] VDAC: 1800 mV normal standby [ 0.719696] VDVI: 1800 mV normal standby [ 0.725646] omap_i2c omap_i2c.3: bus 3 rev1.3.12 at 400 kHz [ 0.743560] Switching to clocksource 32k_counter [ 0.936248] usbhs_omap usbhs_omap: xclk60mhsp2_ck set parentfailed error:-22 [ 0.944152] usbhs_omap usbhs_omap: starting TI HSUSB Controller [ 0.944335] usbhs_omap usbhs_omap: usbhs_runtime_resume [ 0.944641] usbhs_omap usbhs_omap: OMAP UHH_REVISION 0x10 [ 0.944641] usbhs_omap usbhs_omap: OMAP3 ES version > ES2.1 [ 0.944671] usbhs_omap usbhs_omap: UHH setup done, uhh_hostconfig=8000121d [ 0.947082] usbhs_omap usbhs_omap: usbhs_runtime_suspend [ 0.948974] NET: Registered protocol family 2 [ 0.955230] IP route cache hash table entries: 2048 (order: 1, 8192 bytes) [ 0.965301] TCP established hash table entries: 8192 (order: 4, 65536 bytes) [ 0.973297] TCP bind hash table entries: 8192 (order: 6, 294912 bytes) [ 0.985870] TCP: Hash tables configured (established 8192 bind 8192) [ 0.992675] TCP: reno registered [ 0.996124] UDP hash table entries: 128 (order: 1, 10240 bytes) [ 1.002868] UDP-Lite hash table entries: 128 (order: 1, 10240 bytes) [ 1.010864] NET: Registered protocol family 1 [ 1.017608] RPC: Registered named UNIX socket transport module. [ 1.024169] RPC: Registered udp transport module. [ 1.029113] RPC: Registered tcp transport module. [ 1.034118] RPC: Registered tcp NFSv4.1 backchannel transport module. [ 1.367248] VFS: Disk quotas dquot_6.5.2 [ 1.371856] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes) [ 1.383026] NFS: Registering the id_resolver key type [ 1.391265] jffs2: version 2.2. (NAND) (SUMMARY) © 2001-2006 Red Hat, Inc. [ 1.400390] msgmni has been set to 475 [ 1.409515] io scheduler noop registered [ 1.413848] io scheduler deadline registered [ 1.418670] io scheduler cfq registered (default) [ 1.427276] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled [ 1.443817] omap_uart.0: ttyO0 at MMIO 0x4806a000 (irq = 72) is a OMAP UART0 [ 1.454162] omap_uart.1: ttyO1 at MMIO 0x4806c000 (irq = 73) is a OMAP UART1 [ 1.463836] omap_uart.2: ttyO2 at MMIO 0x49020000 (irq = 74) is a OMAP UART2 [ 1.471862] console [ttyO2] enabled, bootconsole disabled [ 1.534423] brd: module loaded [ 1.566497] loop: module loaded [ 1.581359] mtdoops: mtd device (mtddev=name/number) must be supplied [ 1.589569] NAND device: Manufacturer ID: 0x2c, Chip ID: 0xba (Micron NAND 256MiB 1,8V 16-bit) [ 1.607330] Creating 5 MTD partitions on "omap2-nand.0": [ 1.613189] 0x000000000000-0x000000080000 : "xloader" [ 1.628692] 0x000000080000-0x000000240000 : "uboot" [ 1.642272] 0x000000240000-0x000000280000 : "uboot environment" [ 1.654724] 0x000000280000-0x000000680000 : "linux" [ 1.669494] 0x000000680000-0x000010000000 : "rootfs" [ 1.901184] OneNAND driver initializing [ 1.914794] smsc911x: Driver version 2008-10-21 [ 1.935760] smsc911x-mdio: probed [ 1.939971] smsc911x smsc911x.0: eth0: attached PHY driver [SMSC LAN8700] (mii_bus:phy_addr=smsc911x-0:01, irq=-1) [ 1.951568] smsc911x smsc911x.0: eth0: MAC Address: e6:ff:c8:7a:93:cd [ 1.958557] smsc911x: Driver version 2008-10-21 [ 1.968933] usbcore: registered new interface driver asix [ 1.975402] usbcore: registered new interface driver cdc_ether [ 1.982574] usbcore: registered new interface driver smsc95xx [ 1.989593] usbcore: registered new interface driver net1080 [ 1.996459] usbcore: registered new interface driver cdc_subset [ 2.003570] usbcore: registered new interface driver zaurus [ 2.010375] usbcore: registered new interface driver cdc_ncm [ 2.018707] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ 2.025787] ehci_hcd: block sizes: qh 64 qtd 96 itd 160 sitd 96 [ 2.026306] ehci-omap ehci-omap.0: failed to get ehci port1 regulator [ 2.026519] usbhs_omap usbhs_omap: usbhs_runtime_resume [ 3.030639] ehci-omap ehci-omap.0: phy reset operation timed out [ 3.030700] ehci-omap ehci-omap.0: reset hcs_params 0x1313 dbg=0 cc=1 pcc=3 ordered ports=3 [ 3.030731] ehci-omap ehci-omap.0: reset hcc_params 0016 thresh 1 uframes 256/512/1024 park [ 3.030761] ehci-omap ehci-omap.0: reset command 0080b02 park=3 ithresh=8 period=1024 Reset HALT [ 3.030792] ehci-omap ehci-omap.0: OMAP-EHCI Host Controller [ 3.039276] /work/kernel/omap/pm/drivers/usb/core/inode.c: creating file 'devices' [ 3.039764] /work/kernel/omap/pm/drivers/usb/core/inode.c: creating file '001' [ 3.043609] ehci-omap ehci-omap.0: new USB bus registered, assigned bus number 1 [ 3.052307] ehci-omap ehci-omap.0: park 0 [ 3.052429] ehci-omap ehci-omap.0: irq 77, io mem 0x48064800 [ 3.058532] ehci-omap ehci-omap.0: init command 0010005 (park)=0 ithresh=1 period=512 RUN [ 3.069946] ehci-omap ehci-omap.0: USB 2.0 started, EHCI 1.00 [ 3.077667] usb usb1: default language 0x0409 [ 3.077819] usb usb1: udev 1, busnum 1, minor = 0 [ 3.077850] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002 [ 3.085021] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1 [ 3.092712] usb usb1: Product: OMAP-EHCI Host Controller [ 3.098388] usb usb1: Manufacturer: Linux 3.4.0-rc7-pm+debug+initramfs-01073-g0ecc382-dirty ehci_hcd [ 3.108093] usb usb1: SerialNumber: ehci-omap.0 [ 3.115814] usb usb1: usb_probe_device [ 3.115844] usb usb1: configuration #1 chosen from 1 choice [ 3.117004] usb usb1: adding 1-0:1.0 (config #1, interface 0) [ 3.118804] hub 1-0:1.0: usb_probe_interface [ 3.118835] hub 1-0:1.0: usb_probe_interface - got id [ 3.118896] hub 1-0:1.0: USB hub found [ 3.123107] hub 1-0:1.0: 3 ports detected [ 3.127593] hub 1-0:1.0: standalone hub [ 3.127624] hub 1-0:1.0: individual port power switching [ 3.127624] hub 1-0:1.0: individual port over-current protection [ 3.127655] hub 1-0:1.0: power on to power good time: 20ms [ 3.128295] hub 1-0:1.0: local power source is good [ 3.128326] hub 1-0:1.0: enabling power on all ports [ 3.131164] /work/kernel/omap/pm/drivers/usb/core/inode.c: creating file '001' [ 3.132019] ehci-omap ehci-omap.0: ...powerup ports... [ 3.157348] usbcore: registered new interface driver cdc_wdm [ 3.163299] Initializing USB Mass Storage driver... [ 3.169464] usbcore: registered new interface driver usb-storage [ 3.175994] USB Mass Storage support registered. [ 3.182708] usbcore: registered new interface driver libusual [ 3.189819] usbcore: registered new interface driver usbtest [ 3.198333] mousedev: PS/2 mouse device common for all mice [ 3.211944] ads7846 spi1.0: touchscreen, irq 210 [ 3.220855] input: ADS7846 Touchscreen as /devices/platform/omap2_mcspi.1/spi_master/spi1/spi1.0/input/input0 [ 3.234436] hub 1-0:1.0: state 7 ports 3 chg 0000 evt 0000 [ 3.241302] input: twl4030_pwrbutton as /devices/platform/omap_i2c.1/i2c-1/1-0049/twl4030_pwrbutton/input/input1 [ 3.254791] twl_rtc twl_rtc: Power up reset detected. [ 3.260620] twl_rtc twl_rtc: Enabling TWL-RTC [ 3.270568] twl_rtc twl_rtc: rtc core: registered twl_rtc as rtc0 [ 3.279052] i2c /dev entries driver [ 3.287353] Driver for 1-wire Dallas network protocol. [ 3.297821] omap_wdt: OMAP Watchdog Timer Rev 0x31: initial timeout 60 sec [ 3.306732] twl4030_wdt twl4030_wdt: Failed to register misc device [ 3.313629] twl4030_wdt: probe of twl4030_wdt failed with error -16 [ 3.323944] cpuidle: using governor ladder [ 3.328491] cpuidle: using governor menu [ 3.566802] usbcore: registered new interface driver usbhid [ 3.572906] usbhid: USB HID core driver [ 3.576965] oprofile: hardware counters not available [ 3.582366] oprofile: using timer interrupt. [ 3.588195] TCP: cubic registered [ 3.591705] Initializing XFRM netlink socket [ 3.596557] NET: Registered protocol family 17 [ 3.601470] NET: Registered protocol family 15 [ 3.606628] Registering the dns_resolver key type [ 3.611907] VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 1 [ 3.639282] ThumbEE CPU extension supported. [ 3.643981] sr_init: No PMIC hook to init smartreflex [ 3.649841] smartreflex smartreflex.0: omap_sr_probe: SmartReflex driver initialized [ 3.658996] smartreflex smartreflex.1: omap_sr_probe: SmartReflex driver initialized [ 3.668823] SmartReflex Class3 initialized [ 3.717376] clock: disabling unused clocks to save power [ 3.729797] VDVI: incomplete constraints, leaving on [ 3.735504] VDAC: incomplete constraints, leaving on [ 3.744567] input: gpio-keys as /devices/platform/gpio-keys/input/input2 [ 3.756988] twl_rtc twl_rtc: setting system clock to 2000-01-01 00:00:00 UTC (946684800) [ 3.769744] smsc911x smsc911x.0: eth0: SMSC911x/921x identified at 0xd0888000, IRQ: 272 [ 3.797485] IP-Config: Complete: [ 3.800903] device=eth0, addr=192.168.1.157, mask=255.255.255.0, gw=192.168.1.254 [ 3.809387] host=overo, domain=, nis-domain=(none) [ 3.814971] bootserver=192.168.1.5, rootserver=192.168.1.236, rootpath= [ 3.835144] Freeing init memory: 2804K [ 3.991333] mmc1: new SDIO card at address 0001 [ 5.234283] hub 1-0:1.0: hub_suspend [ 5.234985] usb usb1: bus auto-suspend, wakeup 1 [ 5.235015] ehci-omap ehci-omap.0: suspend root hub
/ #
Quoted 20 lines · Kevin Hilman
Quoted 9 lines · Kevin Hilman
Hi Keshava,
Using current l-o master, I noticed that CORE was not hitting retention in idle on my 3530/Overo. CORE hits retention on suspend just fine.
Debugging this, I found that
usbtll_fckwas still enabled during idle, thus preventing CORE from hitting retention.Quoted 9 lines
To test, I disabled USB host (
CONFIG_MFD_OMAP_USB_HOST=nin .config) and was then started seeing CORE hit retention in idle again.I have nothing plugged into the USB host port on this board, so I would've expected that runtime PM would've kicked in and shutdown this clock.
Any ideas what's going on here? Is this expected behavior?
Quoted 6 lines
If it helps, attached is a bootlog after enabling debug for
mfd/omap-usb-host.cas well. Notice there's a couple of clock-related warnings from this driver as well. Not sure if they're relevant:
usbhs_omap: alias fck already existsusbhs_omapusbhs_omap:xclk60mhsp2_ckset parentfailed error:-22
these clocks were specific to omap4 and it should not cause any problem to omap3 boards.
I will try to reproduce this on 3430 sdp to explore further.
Quoted 36 lines
With debug enabled, I see the runtime resume during init followed by the runtime suspend.
[ 0.936248]
usbhs_omapusbhs_omap:xclk60mhsp2_ckset parentfailed error:-22
[ 0.944152]usbhs_omapusbhs_omap: starting TI HSUSB Controller [ 0.944335]usbhs_omapusbhs_omap:usbhs_runtime_resume[ 0.944641]usbhs_omapusbhs_omap: OMAPUHH_REVISION0x10[ 0.944641]usbhs_omapusbhs_omap: OMAP3 ES version > ES2.1 [ 0.944671]usbhs_omapusbhs_omap: UHH setup done,ry uhh_hostconfig=8000121d
[ 0.947082]usbhs_omapusbhs_omap:usbhs_runtime_suspendHowever, later in the boot I see a
runtime_resumeand never see another suspend. That seems to be the root cause of CORE not hitting retention.From the boot log:
[ 2.018707]
ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ 2.025787]ehci_hcd: block sizes: qh 64 qtd 96 itd 160 sitd 96 [ 2.026306] ehci-omap ehci-omap.0: failed to get ehci port1 regulator [ 2.026519]usbhs_omapusbhs_omap:usbhs_runtime_resume
[ 3.030639] ehci-omap ehci-omap.0: phy reset operation timed out [ 3.030700] ehci-omap ehci-omap.0: resethcs_params0x1313dbg=0 cc=1 pcc=3 ordered ports=3
[ 3.030731] ehci-omap ehci-omap.0: resethcc_params0016 thresh 1 uframes 256/512/1024 park
[ 3.030761] ehci-omap ehci-omap.0: reset command 0080b02 park=3 ithresh=8 period=1024 Reset HALT
[ 3.030792] ehci-omap ehci-omap.0: OMAP-EHCI Host ControllerSince the only get/puts I see are in
omap_usbhs_init(), I'm not sure how this driver is being runtime resumed. Presumably it's due to how the rest of the USB stack works, which I'm not at all familiar with.
Quoted 5 lines
Hopefully, the above is enough to debug the problem,
Thanks,
Kevin
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Quoted 25 lines · Keshava
Quoted 24 lines · Kevin Hilman
Quoted 9 lines · Kevin Hilman
Hi Keshava,
Using current l-o master, I noticed that CORE was not hitting retention in idle on my 3530/Overo. CORE hits retention on suspend just fine.
Debugging this, I found that
usbtll_fckwas still enabled during idle, thus preventing CORE from hitting retention.Quoted 9 lines
To test, I disabled USB host (
CONFIG_MFD_OMAP_USB_HOST=nin .config) and was then started seeing CORE hit retention in idle again.I have nothing plugged into the USB host port on this board, so I would've expected that runtime PM would've kicked in and shutdown this clock.
Any ideas what's going on here? Is this expected behavior?
If it helps, attached is a bootlog after enabling debug for
mfd/omap-usb-host.cas well. Notice there's a couple of clock-related warnings from this driver as well. Not sure if they're relevant:
Quoted 5 lines
Quoted 2 lines
usbhs_omap: alias fck already existsusbhs_omapusbhs_omap:xclk60mhsp2_ckset parentfailed error:-22these clocks were specific to omap4 and it should not cause any problem to omap3 boards.
OK, they seem unrelated to this CORE retention problem, but the warnings should still be understood and fixed.
Quoted 1 line
I will try to reproduce this on 3430 sdp to explore further.
Thanks for looking. Note that I only saw this problem on my 3530 platforms (Overo, OMAP3EVM.) My 3430/n900 doesn't support USBHS host AFAICT, so didn't test there.
FYI, in order to hit core retention, there's another bug in mainline where the counter_32k IP also prevents retention. You'll need the hack below[1] (on top of l-o master) to workaround this problem (real patch with description will be coming soon.)
Also, you'll likely need the UART mux patch from Govindraj[2]. Without this, UARTs in CORE may have runtime PM disabled, and thus also prevent CORE from hitting retention.
Kevin
[1]
arch/arm/mach-omap2/timer.c +1 -0
@@ -292,6 +292,7 @@ static int __init omap2_sync32k_clocksource_init(void) __func__, ret);return ret; } +omap_hwmod_set_slave_idlemode (oh,SIDLE_FORCE ); ret =omap_init_clocksource_32k (vbase);if (ret) {
[2] http://marc.info/?l=linux-omap&m=133672962809100&w=2
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Quoted 33 lines · Kevin Hilman
Quoted 25 lines · Keshava
Quoted 24 lines · Kevin Hilman
Quoted 9 lines · Kevin Hilman
Hi Keshava,
Using current l-o master, I noticed that CORE was not hitting retention in idle on my 3530/Overo. CORE hits retention on suspend just fine.
Debugging this, I found that
usbtll_fckwas still enabled during idle, thus preventing CORE from hitting retention.Quoted 9 lines
To test, I disabled USB host (
CONFIG_MFD_OMAP_USB_HOST=nin .config) and was then started seeing CORE hit retention in idle again.I have nothing plugged into the USB host port on this board, so I would've expected that runtime PM would've kicked in and shutdown this clock.
Any ideas what's going on here? Is this expected behavior?
If it helps, attached is a bootlog after enabling debug for
mfd/omap-usb-host.cas well. Notice there's a couple of clock-related warnings from this driver as well. Not sure if they're relevant:Quoted 5 lines
Quoted 2 lines
usbhs_omap: alias fck already existsusbhs_omapusbhs_omap:xclk60mhsp2_ckset parentfailed error:-22these clocks were specific to omap4 and it should not cause any problem to omap3 boards.
Quoted 8 lines
OK, they seem unrelated to this CORE retention problem, but the warnings should still be understood and fixed.
Quoted 1 line
I will try to reproduce this on 3430 sdp to explore further.
Thanks for looking. Note that I only saw this problem on my 3530 platforms (Overo, OMAP3EVM.) My 3430/n900 doesn't support USBHS host AFAICT, so didn't test there.
After realizing that the same IP should exist on 3430/n900, I copied some board file support for USBHS host from overo into the n900 board file in order to test on 3430/n900.
Problem exists on n900 too.
Kevin
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Keshava, Felipe,
ping. This problem is still preventing CORE retention in mainline.
Quoted 55 lines · Kevin Hilman
Quoted 33 lines · Kevin Hilman
Quoted 25 lines · Keshava
Quoted 24 lines · Kevin Hilman
Quoted 9 lines · Kevin Hilman
Hi Keshava,
Using current l-o master, I noticed that CORE was not hitting retention in idle on my 3530/Overo. CORE hits retention on suspend just fine.
Debugging this, I found that
usbtll_fckwas still enabled during idle, thus preventing CORE from hitting retention.Quoted 9 lines
To test, I disabled USB host (
CONFIG_MFD_OMAP_USB_HOST=nin .config) and was then started seeing CORE hit retention in idle again.I have nothing plugged into the USB host port on this board, so I would've expected that runtime PM would've kicked in and shutdown this clock.
Any ideas what's going on here? Is this expected behavior?
If it helps, attached is a bootlog after enabling debug for
mfd/omap-usb-host.cas well. Notice there's a couple of clock-related warnings from this driver as well. Not sure if they're relevant:Quoted 5 lines
Quoted 2 lines
usbhs_omap: alias fck already existsusbhs_omapusbhs_omap:xclk60mhsp2_ckset parentfailed error:-22these clocks were specific to omap4 and it should not cause any problem to omap3 boards.
Quoted 8 lines
OK, they seem unrelated to this CORE retention problem, but the warnings should still be understood and fixed.
Quoted 1 line
I will try to reproduce this on 3430 sdp to explore further.
Thanks for looking. Note that I only saw this problem on my 3530 platforms (Overo, OMAP3EVM.) My 3430/n900 doesn't support USBHS host AFAICT, so didn't test there.
After realizing that the same IP should exist on 3430/n900, I copied some board file support for USBHS host from overo into the n900 board file in order to test on 3430/n900.
Problem exists on n900 too.
Kevin
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
A message that is not in the archive (sent off-list or not yet received): CAP05o4L+0E6fa1VoP_UPTJgKjXb-VqZorUfzsTB3d-KVoFrXfw@mail.gmail.com
A message that is not in the archive (sent off-list or not yet received): CAP05o4KuoQHhTRTCtdpiywgC1HjwzXZHhROKOgSLhoK76Z2aaQ@mail.gmail.com
A message that is not in the archive (sent off-list or not yet received): [email protected]
A message that is not in the archive (sent off-list or not yet received): CAP05o4JEEp-yXjijeeejN3j8uVBDQ35DMGqP9UKj3f7sNnO8LA@mail.gmail.com
A message that is not in the archive (sent off-list or not yet received): CAP05o4LYhFQpEFukyCT2fA7XHPU2L5K8=8W0fncMJk6YEUWdOQ@mail.gmail.com
Quoted 99 lines · Keshava
hi kevin
now I am using initramfs with kernel linux3.5.rc1, but the retention is not working in 3430 sdp. I am seeing the following error followed by a crashecho mem >
/sys/power/state
[ 35.609252] PM: Syncing filesystems ... done.
[ 35.614654] PM: Preparing system for mem sleep
[ 35.658630] Freezing user space processes ... (elapsed 0.01 seconds) done.
[ 35.689727] Freezing remaining freezable tasks ... (elapsed 0.02 seconds) done.
[ 35.697692] PM: Entering mem sleep
[ 35.722442] usb usb1: usb auto-resume
[ 35.726409] ehci-omap ehci-omap.0: resume root hub
[ 35.775451] hub 1-0:1.0:hub_resume
[ 35.779846] hub 1-0:1.0:hub_suspend
[ 35.784240] usb usb1: bus suspend, wakeup 0
[ 35.788665] ehci-omap ehci-omap.0: suspend root hub
[ 35.805786] PM: suspend of devices complete after 99.304 msecs [ 35.816497] PM: late suspend of devices complete after 4.364 msecs [ 35.831573] PM: noirq suspend of devices complete after 8.331 msecs [ 35.838500] Disabling non-boot CPUs ...
[ 36.312164] Powerdomain (core_pwrdm) didn't enter target state 1 [ 36.318481] Could not enter target state inpm_suspend
[ 36.324859] Unable to handle kernel NULL pointer dereference at virtual address 00000018
[ 36.333557] pgd =c6280000
[ 36.336639] [00000018] *pgd=85c8f831, *pte=00000000, *ppte=00000000 [ 36.343414] Internal error: Oops: 17 [#1] SMP ARM
[ 36.348388] Modules linked in:
[ 36.351623] CPU: 0 Tainted: G W (3.5.0-rc1 #1) [ 36.357574] PC is at_od_resume_noirq+0x14/0x58
[ 36.362365] LR is atdpm_run_callback+0x2c/0x74
[ 36.367126] pc : [<c003c150>] lr : [<c02d75e4>] psr:a0000013[ 36.367126] sp : c5ebfe80 ip : c0a72fc0 fp : 00000006
[ 36.379150] r10: c78af4b8 r9 : c0a3607c r8 :c003c13c
[ 36.384643] r7 : 00000000 r6 : 00000000 r5 : c78af408 r4 :c78af408[ 36.391479] r3 : 00000000 r2 : 00000000 r1 : c78af408 r0 :c78af400[ 36.398315] Flags: NzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment user
[ 36.405792] Control: 10c5387d Table: 86280019 DAC: 00000015 [ 36.411834] Process sh (pid: 1254, stack limit =0xc5ebe2f8) [ 36.417785] Stack: (0xc5ebfe80to0xc5ec0000)
[ 36.422363] fe80:c78af408c02d75e4c0a36020c0a3604000000000 00000000c78af408c0f9e4a8
[ 36.430938] fea0: 00000010c0a36014c0a36074c02d817858566b0d0000000858566b0d00000008
[ 36.439514] fec0:c0a1df3800000010 ffffffff 00000003c0a4d11c00000000 00000000c09da45c
[ 36.448089] fee0:000ed008c02d8a14c0a62c28c008036000000003c05b9ce800000000 00000004
[ 36.456665] ff00: 00000000c04c9704c78012c0c00806a4c5c8e00000000003c05b9ce8c007f8a8
[ 36.465240] ff20:c5c8d4c0c5c8d4d8c5ebff80c7863e00c02674a8c02674c000000004c016d7fc
[ 36.473815] ff40:c5d94a8000000004b6ff6000c5ebff8000000000 00000000 00000000c010c244
[ 36.482421] ff60:c0014400c5c92280c5d94a80b6ff600000000004 00000004 00000000c010c398
[ 36.490997] ff80: 00000000 00000000b6f235e800000000 00000004b6ff6000b6f235e8c00144a8
[ 36.499572] ffa0:c5ebe000c00142e000000004b6ff600000000001b6ff600000000004 00000000
[ 36.508148] ffc0: 00000004b6ff6000b6f235e800000004 00000004 000009640000000a000ed008
[ 36.516723] ffe0:b6ff6000bee815d0b6e61c70b6eb1abc60000010 00000001 00000000 00000000
[ 36.525360] [<c003c150>] (_od_resume_noirq+0x14/0x58) from [<c02d75e4>] (dpm_run_callback+0x2c/0x74)
[ 36.534973] [<c02d75e4>] (dpm_run_callback+0x2c/0x74) from [<c02d8178>] (dpm_resume_noirq+0xdc/0x2f4)
[ 36.544677] [<c02d8178>] (dpm_resume_noirq+0xdc/0x2f4) from [<c02d8a14>] (dpm_resume_start+0xc/0x18)
[ 36.554290] [<c02d8a14>] (dpm_resume_start+0xc/0x18) from [<c0080360>] (suspend_devices_and_enter+0x114/0x2d8)
[ 36.564819] [<c0080360>] (suspend_devices_and_enter+0x114/0x2d8) from [<c00806a4>] (pm_suspend+0x180/0x1fc)
[ 36.575042] [<c00806a4>] (pm_suspend+0x180/0x1fc) from [<c007f8a8>] (state_store+0x90/0x124)
[ 36.583953] [<c007f8a8>] (state_store+0x90/0x124) from [<c02674c0>] (kobj_attr_store+0x18/0x1c)
[ 36.593109] [<c02674c0>] (kobj_attr_store+0x18/0x1c) from [<c016d7fc>] (sysfs_write_file+0xfc/0x180)
[ 36.602722] [<c016d7fc>] (sysfs_write_file+0xfc/0x180) from [<c010c244>] (vfs_write+0xb0/0x134)
[ 36.611877] [<c010c244>] (vfs_write+0xb0/0x134) from [<c010c398>] (sys_write+0x40/0x70)
[ 36.620300] [<c010c398>] (sys_write+0x40/0x70) from [<c00142e0>] (ret_fast_syscall+0x0/0x3c)
[ 36.629180] Code:e1a04000e250000801a0200015902248 (e5d23018) [ 36.635833] ---[ end traceb3b167c1e86e5512]---which kernel version are you using? do you have any good commit on which retention works because of usb host?
Quoted 719 lines
regards
keshavaQuoted 712 lines · Keshava
yes! I am using the ramfs.
regards
keshavaQuoted 703 lines · Kevin Hilman
Quoted 4 lines · Keshava
hi Ameya
I was trying to reproduce the 3430 usb pm issues ; but i see that
NFS is not working in 3430 sdp;You don't need NFS to reproduce this. If you can't get NFS to work, just use a busybox initramfs.
This bug needs to be fixed for v3.5-rc.
Kevin
Quoted 688 lines
it is because of the following the UART patch series (21 patch). I couldn't able to figure out the actual patch which breaks NFS because individual patches in this series does not compile.
these patches are already in lo master.
here is the patch list:-----------------------------------------------------------------------
------------------------------------------------------------------
commitda27468655540b083525177f5dc6f3b1f6e3b869
Author: Govindraj.R <[email protected]>
Date: Wed Dec 14 21:24:11 2011 +0530
ARM: OMAP2+: UART: Fix compilation/sparse warningsFixes below compilation warning.
drivers/tty/serial/omap-serial.c: In function '
serial_omap_irq':
drivers/tty/serial/omap-serial.c:228:29: warning: 'ch' may be used
uninitialized in this function [-Wuninitialized]Fix below sparse warning.
drivers/tty/serial/omap-serial.c:392:52: warning: incorrect type in
argument 2 (different signedness)drivers/tty/serial/omap-serial.c:392:52: expected int *statusdrivers/tty/serial/omap-serial.c:392:52: got unsigned int *<noident>Reported-by Kevin Hilman <[email protected]>Signed-off-by Govindraj.R <[email protected]>changes)
Signed-off-by Kevin Hilman <[email protected]>commit
2fd149645eb46d26130d7070c6de037dddf34880
Author: Govindraj.R <[email protected]>
Date: Wed Nov 9 17:41:21 2011 +0530
ARM: OMAP2+: UART: Removeomap_uart_can_sleepand addpm_qosOmap_uart_can_sleep function blocks system wide low power state until
uart is active remove this func and add qos requests to prevent MPU from transitioning.Keep qos request to default value which will allow MPU to transition
and while uart baud rate is available calculate the latency value
from the baudrate and use the same to hold constraint while uart clocks
are enabled, and if uart is auto-idled the constraint is updated with
default constraint value allowing MPU to transition.Qos requests are blocking notifier calls so put these requests to
work queue, also the driver usesirq_safeversion of runtime API's
and callbacks can be called in interrupt disabled context. So to avoid warn on slow path warning while using qos update API's from runtime callbacks use theqos_work_queue.During bootup the
runtime_resumecall backs might not be called and
runtime
callback gets called only after uart is idled by setting the autosuspend
timeout. Soqos_requestfrom runtime resume callback might not activated during
boot if uart baudrate is calculated during bootup for console uart,
so schedule
theqos_workqueue once wecalc_latencywhile configuring the uart
port.Flush and complete any pending qos jobs in work queue while suspending.
Signed-off-by Govindraj.R <[email protected]>changes)
Signed-off-by Kevin Hilman <[email protected]>commit
36fc2d15b120ef85be74c68b5ad74ac04fbefa8a
Author: Govindraj.R <[email protected]>
Date: Wed Sep 21 16:54:12 2011 +0530
ARM: OMAP2+: UART: Do not gate uart clocks if used fordebug_printsIf OMAP UART is used as console uart and debug is enabled, avoid gating of uart clocks to print all debug prints.
If uart clocks are gated then the debug prints from
omap_deviceframework or hwmod framework can cause uart to enter recursivepm_runtimecalls, which can cause a deadlock over power lock usage.For example: Say, uart clocks are cut and we get a print from
omap_device_disablestating disabling uart clocks. This print callsomap_uartdriverconsole_writewhich will call runtime APIget_syncwhich means we enter from runtime API put context to runtime API get context.--> runtime put (take power lock)
--> print disabling uart clocks
--> call uart console write
--> callget_sync(try to take power lock)Also any clock enable API call from uart driver should not call any
uart
operation until clocks are enabled back. Likeget_synchaving debug
calling uart console write even before clocks are enabled.So to avoid these scenarios, identify from bootargs if
OMAP_UART(ttyO)is used
in debug mode. If so, do not setdevice_may_wakeup. This will prevent
pm_runtime_enable in uart driver and will avoid uart clock gating.
Debug is enabled either by adding debug word in bootarg or by setting
loglevel=10Signed-off-by Govindraj.R <[email protected]>Signed-off-by Kevin Hilman <[email protected]>commit
08f86b3eab9807e6d36de7e00025abad893ff557
Author: Govindraj.R <[email protected]>
Date: Tue Oct 18 17:09:10 2011 +0530
ARM: OMAP2+: UART: Avoid uart idling on suspend forno_console_suspendusecaseIf
no_console_suspendis used we have prevent uart idling during suspend
to provide debug prints.Power domain hooks can idle uarts if left enabled during system wide suspend
so re-use theomap_device_disable_idle_on_suspendAPI's to ensure
console_uart
is not idled during suspend.omap_device_disable_idle_on_suspend API was used on all uarts since
the uart
driver was not runtime adapted, now with runtime adaptation we can
re-use this
API only forno_console_suspenduse cases.Signed-off-by Govindraj.R <[email protected]>Signed-off-by Kevin Hilman <[email protected]>commit
8612bd22f30369745d0fda0d540aca39ab591cc5
Author: Govindraj.R <[email protected]>
Date: Mon Nov 7 19:05:44 2011 +0530
ARM: OMAP2+: UART: Avoid console uart idling during bootupOmap-uart can be used as console uart to print early boot messages
using
earlyprintk so for console uart prevent hwmod reset or idling during bootup.Identify omap-uart used as console and avoid idling rather than preventing
all omap-uarts from idling during bootup. Update the comments for
the same.Remove the uart idling and enabling back using hwmod_idle/omap_device_enable
for all uarts that where left enabled from boot to set the hwmod framework
state machine right. This need not be taken care any moreserial.c
rather
can be handled within the hwmod framework.
Reference: http://www.spinics.net/lists/linux-omap/msg60300.htmlSigned-off-by Govindraj.R <[email protected]>Signed-off-by Kevin Hilman <[email protected]>commit
969996a57fd2345a1141280dddcf9e10fa5f6690
Author: Govindraj.R <[email protected]>
Date: Tue Oct 18 16:32:14 2011 +0530
ARM: OMAP2+: UART: remove temporary variable used to count uart instanceReuse the
num_uartsvariable itself to count number of uarts.Signed-off-by Govindraj.R <[email protected]>Signed-off-by Kevin Hilman <[email protected]>commit
a9e210e0b7a344c0e44aa6bf6888176bbc635c42
Author: Jon Hunter <[email protected]>
Date: Wed Nov 9 17:34:49 2011 +0530
ARM: OMAP2+: UART: Make theRX_TIMEOUTfor DMA configurable for each UARTWhen using DMA there are two timeouts defined. The first timeout,
rx_timeout, is really a polling rate in which software polls the DMA status to see if the DMA has finished. This is necessary for the RX side because we do not know how much data we will receive.
The secound timeout,RX_TIMEOUT, is a timeout after which the DMA will be stopped if no more data is received. To make this clearer, renamerx_timeoutasrx_poll_rateand rename the functionserial_omap_rx_timeout()toserial_omap_rxdma_poll().The OMAP-Serial driver defines an
RX_TIMEOUTof 3 seconds that is
used to indicate when the DMA for UART can be stopped if no more data is received. The value is a global definition that is applied
to all instances of the UART.Each UART may be used for a different purpose and so the timeout required may differ. Make this value configurable for each UART so
that this value can be optimised for power savings.Signed-off-by Jon Hunter <[email protected]>Signed-off-by Govindraj.R <[email protected]>changes)
Signed-off-by Kevin Hilman <[email protected]>commit
c86845db77ce220f77e6645b18800744684946ac
Author: Deepak K <[email protected]>
Date: Wed Nov 9 17:33:38 2011 +0530
ARM: OMAP2+: UART: Allow UART parameters to be configured from board file.The following UART parameters are defined within the UART driver:
1). Whether the UART uses DMA (
dma_enabled), by default set to 0 2). The size of dma buffer (set to 4096 bytes)
3). The time after which the dma should stop if no more data is received.
4). The auto suspend delay that will be passed forpm_runtime_autosuspend
where uart will be disabled after timeoutDifferent UARTs may be used for different purpose such as the console,
for interfacing bluetooth chip, for interfacing to a modem chip, etc.
Therefore, it is necessary to be able to customize the above settings
for a given board on a per UART basis.This change allows these parameters to be configured from the board
file
and allows the parameters to be configured for each UART independently.If a board does not define its own custom parameters for the UARTs,
then
use the default parameters in the structure "omap_serial_default_info".
The default parameters are defined to be the same as the current settings
in the UART driver to avoid breaking the UART for any cuurnelty supported
boards. By default, make all boards use the default UART parameters.Signed-off-by Deepak K <[email protected]>Signed-off-by Jon Hunter <[email protected]>Signed-off-by Govindraj.R <[email protected]>changes)
Signed-off-by Kevin Hilman <[email protected]>commit
634bd6e4817cd6a7109be8d2eee5c578a283d1ee
Author: Govindraj.R <[email protected]>
Date: Mon Nov 7 19:01:24 2011 +0530
ARM: OMAP2+: UART: Remove old and unused clocks handling funcsWith runtime adaptation done remove clock_enable/disbale API's
Signed-off-by Govindraj.R <[email protected]>Signed-off-by Kevin Hilman <[email protected]>commit
62f3ec5fbd5fddce62b7a71adc04723a5eb903da
Author: Govindraj.R <[email protected]>
Date: Thu Oct 13 14:11:09 2011 +0530
ARM: OMAP2+: UART: Add wakeup mechanism for omap-uartsFrom the runtime callbacks enable hwmod wakeups for uart which will
internally enable io-pad wakeups for uarts if they have rx-pad pins
set as wakeup capabale.Use the io-ring wakeup mechanism after uart clock gating and leave
thePM_WKSTset for uart to default reset values cleanup the code inserial.cwhich was handlingPM_WKSTreg.Irq_chaing(PRM_DRIVER)is used to wakeup uart after uart clocks are
gated
using pad wakeup mechanism.Signed-off-by Govindraj.R <[email protected]>changes)
Signed-off-by Kevin Hilman <[email protected]>commit
94734749af794c080f6af6ac3ce8c1c13ee2dbbd
Author: Govindraj.R <[email protected]>
Date: Mon Nov 7 19:00:33 2011 +0530
ARM: OMAP2+: UART: Move errata handling fromserial.cto omap-serialMove the errata handling mechanism from
serial.cto omap-serial file
and utilise the same func in driver file.Errata i202, i291 are moved to be handled with omap-serial Moving the errata macro from
serial.cfile to driver header file as from on errata will be handled in driver file itself. Corrected errata id from chapter reference 2.15 to errata id i291.Removed errata and
dma_enabledfields fromomap_uart_statestruct
as they are no more needed with errata handling done within omap-serial.Signed-off-by Govindraj.R <[email protected]>Acked-by Alan Cox <[email protected]>Signed-off-by Kevin Hilman <[email protected]>commit
ec3bebc6ec64aac23500e6b8ef5c0aaaeda735cf
Author: Govindraj.R <[email protected]>
Date: Tue Oct 11 19:11:27 2011 +0530
ARM: OMAP2+: UART: Get context loss count to context restoreAvoid unconditional context restore every time we gate uart clocks. Check whether context loss happened based on which we can context restore uart regs from
uart_portstructure.Signed-off-by Govindraj.R <[email protected]>changes)
Signed-off-by Kevin Hilman <[email protected]>commit
32212897eeb8c2b2b3c74dbd44d842963084d808
Author: Govindraj.R <[email protected]>
Date: Mon Nov 7 18:58:55 2011 +0530
ARM: OMAP2+: UART: Remove uart reset function.Remove the uart reset function which is configuring the TX empty irq which can now be handled within omap-serial driver.
Signed-off-by Govindraj.R <[email protected]>changes)
Signed-off-by Kevin Hilman <[email protected]>commit
c538d20c7f437e56c5301357c492230d1d6d1b80
Author: Govindraj.R <[email protected]>
Date: Mon Nov 7 18:57:03 2011 +0530
ARM: OMAP2+: UART: Ensure all reg values configured are available
from port structureAdd missing uart regs to
uart_portstructure which can be used in
context restore. Store dll, dlh, mdr1, scr, efr, lcr, mcr reg values
intouart_portstructure while configuring individual port in termios
function.Signed-off-by Govindraj.R <[email protected]>changes)
Signed-off-by Kevin Hilman <[email protected]>commit
9f9ac1e84a24670eea1430040e0aef278b4daffa
Author: Govindraj.R <[email protected]>
Date: Mon Nov 7 18:56:12 2011 +0530
ARM: OMAP2+: UART: Removecontext_saveand move context restore to
driverRemove context save function from
serial.cand move context restore
function to omap-serial. Remove all regs stored inomap_uart_state
for contex_save/restore, reg read write funcs used in context_save/restore,
io_addresses populated for read/write funcs.Clock gating mechanism was done in
serial.cand had no info on uart
state
thus we needed context save and restore inserial.cWith runtime conversion and clock gating done within uart driver context restore can be done from regs value available fromuart_omap_port
structure.Signed-off-by Govindraj.R <[email protected]>changes)
Signed-off-by Kevin Hilman <[email protected]>commit
fcdca75728ac376f3de74376c791e1078ee83820
Author: Govindraj.R <[email protected]>
Date: Mon Feb 28 18:12:23 2011 +0530
ARM: OMAP2+: UART: Add runtime pm support for omap-serial driverAdapts omap-serial driver to use
pm_runtimeAPI's. Use runtime runtime API's to handle uart clocks and obtaindevice_usagestatics. Set runtime API's usage toirq_safeso that
we can useget_syncfrom irq context. Auto-suspend for port specific
activities and put for reg access. Moving suspend/resume hooks todev_pm_opsstructure and bind withconfig_suspendto avoid any
compilation warning ifconfig_suspendis disabled.By default uart autosuspend delay is set to -1 to avoid character
loss
if uart's are autoidled and woken up on rx pin.After boot up UART's can be autoidled by setting autosuspend delay
from sysfs.echo 3000 >
/sys/devices/platform/omap/omap_uart.X/power/autosuspend_delay_msX=0,1,2,3 for UART1/2/3/4. Number of uarts available may vary acrossomap_soc.Also if uart is not wakeup capable we can prevent runtime autosuspend by
forbiding runtime.Signed-off-by Govindraj.R <[email protected]>Acked-by Alan Cox <[email protected]>Signed-off-by Kevin Hilman <[email protected]>commit
edd70ad757e9b336116433e6e62de79ae1dfef54
Author: Govindraj.R <[email protected]>
Date: Tue Oct 11 14:55:41 2011 +0530
ARM: OMAP2+: UART: Remove mapbase/membase fields from pdata.The mapbase (
start_address),membase(io_remap cookie)part of pdata structomap_uart_port_infoare removed as this should be derived within driver.Signed-off-by Govindraj.R <[email protected]>changes)
Signed-off-by Kevin Hilman <[email protected]>commit
7496ba309f2adbce74d917fbb8bd3da26222d49f
Author: Govindraj.R <[email protected]>
Date: Mon Nov 7 18:55:05 2011 +0530
ARM: OMAP2+: UART: Add default mux for all uarts.Padconf wakeup is used to wakeup uart after uart fclks/iclks are gated.
Rx-Pad wakeup was done by writing to rx-pad offset value populated
in
serial.cidle_init. Remove the direct reading and writing into rx
pad.
Remove the padconf field part ofomap_uart_statestruct and pad offsets
populated.Now with mux framework support we can use
mux_utilitiesalong with hmwod framework to handle io-pad configuration and enable rx-pad
wake-up mechanism.To avoid breaking any board support add default mux data for all uart's
if mux info is not passed from board file.
With the default pads populated inserial.cwakeup capability for
rx pads is set, this can be used to enableuart_rxio-pad wakeup from
hwmod framework. The pad values in 3430sdp/4430sdp/omap4panda board
file
are same as the default pad values populated inserial.c. Remove pad values
from 3430sdp/4430sdp/omap4panda board file and use the default pads
fromserial.cfile.Signed-off-by Govindraj.R <[email protected]>Signed-off-by Kevin Hilman <[email protected]>commit
273558b3a0399e368d99da5b3daf1c0e11b93e06
Author: Govindraj.R <[email protected]>
Date: Tue Sep 13 14:01:01 2011 +0530
ARM: OMAP2+: UART: Cleanup part of clock gating mechanism for uartCurrently we use a shared irq handler to identify uart activity and
then
trigger a timer. By default the timeout value is zero and can be set or
modified from sysfs. If there was no uart activity for the period
set
through sysfs, the timer will expire and call timer handler this will
set a flagcan_sleepusing which decision to gate uart clocks can
be taken.Since the clock gating mechanism is outside the uart driver, we currently
use this mechanism. In preparation to runtime implementation for omap-serial
driver we can cleanup this mechanism and use runtime API's to gate
uart clocks.Removes the following:
* timer related info from localuart_statestruct
* the code used to set timeout value from sysfs.
* irqflags used to set shared irq handler.
* un-used functionomap_uart_check_wakeup.Signed-off-by Govindraj.R <[email protected]>changes)
Signed-off-by Kevin Hilman <[email protected]>commit
8a60585159067f110075ef8ffda13abd94826daf
Author: Govindraj.R <[email protected]>
Date: Tue Sep 13 13:32:32 2011 +0530
ARM: OMAP2+: UART: cleanup 8250 console driver supportWe had been using traditional 8250 driver as uart console driver prior to omap-serial driver. Since we have omap-serial driver in mainline kernel for some time now it has been used as default uart console driver on omap2+ platforms. Remove 8250 support for omap-uarts.
Serial_in and
serial_outoverride for 8250 serial driver is also removed. Empty fifo read fix is already taken care with omap-serial
driver with data ready bit check from LSR reg before reading RX fifo.
Also waiting for THRE(transmit hold reg empty) is done withwait_for_xmitr
in omap-serial driver.Serial_in/out overrides are not neceesary for omap-serial driver and things that are taken with omap-serial driver are removed here.
Remove headers that were necessary to support 8250 support and remove all config bindings done to keep 8250 backward compatibility
while adding omap-serial driver. Removeomap_uart_resetneeded for
8250 autoconf.Signed-off-by Govindraj.R <[email protected]>Signed-off-by Kevin Hilman <[email protected]>commit
8384c9749f8c31c6e1e64a63c8d50af7863ce657
Author: Govindraj.R <[email protected]>
Date: Wed Nov 9 17:22:30 2011 +0530
ARM: OMAP2+: UART: cleanup + remove uart pm specific APIIn preparation to UART runtime conversion remove uart specific calls
from pm24xx/34xx files and their definition fromserial.cThese func calls will no more be used with upcoming uart runtime design.1.)
omap_uart_prepare_suspend:- can be taken care with driver suspend hooks.
2.)omap_uart_enable_irqs:- Used to enable/disable uart irq's in
suspend
path from PM code, this is removed as same is handled by uart_suspend_port/uart_resume_port in omap-serial driver which
will
do anport_shutdownon suspend freeing irq andport_startupon
resume
enabling back irq.
3.) Remove prepare_idle/resume_idle calls used to gate uart clocks.
UART clocks can be gated within driver using runtime funcs and be woken up usingirq_chainingfromomap_prmdriver. 4.) Removeconsole_lockingfrom idle path as clock gating is done
withing
driver itself with runtime API. Removeis_suspendingcheck used
to acquire
console_lock.Signed-off-by Govindraj.R <[email protected]>Signed-off-by Kevin Hilman <[email protected]>-----------------------------------------------------------------------
------------------------------------------------------------------regards
keshavaOn Wed, Jun 6, 2012 at 5:21 PM, Munegowda, Keshava <[email protected]> wrote:
hi Kevin
I have started this; I see that mainline is not booting in 3430 sdp
i will fix this first.
regards
keshavaOn Tue, Jun 5, 2012 at 11:20 PM, Kevin Hilman <[email protected]> wrote:
Keshava, Felipe,
ping. This problem is still preventing CORE retention in mainline.On 05/24/2012 03:13 PM, Kevin Hilman wrote:
Kevin Hilman<[email protected]> writes:
"Munegowda, Keshava"<[email protected]> writes:
On Thu, May 24, 2012 at 5:55 AM, Kevin Hilman<[email protected]> wrote:
On 05/23/2012 05:01 PM, Kevin Hilman wrote:
Hi Keshava,
Using current l-o master, I noticed that CORE was not hitting retention
in idle on my 3530/Overo. CORE hits retention on suspend just fine.
Debugging this, I found thatusbtll_fckwas still enabled during idle,
thus preventing CORE from hitting retention.
To test, I disabled USB host (CONFIG_MFD_OMAP_USB_HOST=nin .config)
and
was then started seeing CORE hit retention in idle again. I have nothing plugged into the USB host port on this board, so I would've expected that runtime PM would've kicked in and shutdown this
clock.
Any ideas what's going on here? Is this expected behavior?If it helps, attached is a bootlog after enabling debug for
mfd/omap-usb-host.cas well. Notice there's a couple of clock-related
warnings from this driver as well. Not sure if they're relevant:
usbhs_omap: alias fck already exists
usbhs_omapusbhs_omap:xclk60mhsp2_ckset parentfailed error:-22these clocks were specific to omap4 and it should not cause any problem to omap3 boards.
OK, they seem unrelated to this CORE retention problem, but the warnings
should still be understood and fixed.I will try to reproduce this on 3430 sdp to explore further.
Thanks for looking. Note that I only saw this problem on my 3530 platforms (Overo, OMAP3EVM.) My 3430/n900 doesn't support USBHS host
AFAICT, so didn't test there.After realizing that the same IP should exist on 3430/n900, I copied some board file support for USBHS host from overo into the n900 board
file in order to test on 3430/n900.
Problem exists on n900 too.
Kevin
Hi Kevin
Since 3430 sdp is very unstable , I have switched to 3630 beagle XM.
Also am observing that
core retention is not working even without usb support.
I have started using a branch "remotes/origin/for_3.5/pm-misc" in your treegit://git.kernel.org/pub/scm/linux/kernel/git/khilman/linux-omap-pm.git
but, in this branch also the core retention is not working even without usb support.
Is there any working branch you have to continue working on this problem.
regards
keshava
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Hi Keshava,
Quoted 29 lines · Keshava
Quoted 27 lines · Keshava
hi kevin
now I am using initramfs with kernel linux3.5.rc1, but the retention is not working in 3430 sdp. I am seeing the following error followed by a crashecho mem >
/sys/power/state
[ 35.609252] PM: Syncing filesystems ... done.
[ 35.614654] PM: Preparing system for mem sleep
[ 35.658630] Freezing user space processes ... (elapsed 0.01 seconds) done.
[ 35.689727] Freezing remaining freezable tasks ... (elapsed 0.02 seconds) done.
[ 35.697692] PM: Entering mem sleep
[ 35.722442] usb usb1: usb auto-resume
[ 35.726409] ehci-omap ehci-omap.0: resume root hub
[ 35.775451] hub 1-0:1.0:hub_resume
[ 35.779846] hub 1-0:1.0:hub_suspend
[ 35.784240] usb usb1: bus suspend, wakeup 0
[ 35.788665] ehci-omap ehci-omap.0: suspend root hub
[ 35.805786] PM: suspend of devices complete after 99.304 msecs [ 35.816497] PM: late suspend of devices complete after 4.364 msecs [ 35.831573] PM: noirq suspend of devices complete after 8.331 msecs [ 35.838500] Disabling non-boot CPUs ...
[ 36.312164] Powerdomain (core_pwrdm) didn't enter target state 1 [ 36.318481] Could not enter target state inpm_suspend
[ 36.324859] Unable to handle kernel NULL pointer dereference at virtual
Quoted 8 lines
Quoted 8 lines
address 00000018
[ 36.333557] pgd =c6280000
[ 36.336639] [00000018] *pgd=85c8f831, *pte=00000000, *ppte=00000000 [ 36.343414] Internal error: Oops: 17 [#1] SMP ARM
[ 36.348388] Modules linked in:
[ 36.351623] CPU: 0 Tainted: G W (3.5.0-rc1 #1) [ 36.357574] PC is at_od_resume_noirq+0x14/0x58
[ 36.362365] LR is atdpm_run_callback+0x2c/0x74
You need the fix from
https://gitorious.org/linux-omap-dss2/linux/commit/9e0ca55fa5d9ff012964a7c7cef8af1b814b2fdb
Hope this helps!
Regards,
Jean
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Quoted 42 lines · Jean Pihet
Hi Keshava,
Quoted 29 lines · Keshava
Quoted 27 lines · Keshava
hi kevin
now I am using initramfs with kernel linux3.5.rc1, but the retention is not working in 3430 sdp. I am seeing the following error followed by a crashecho mem >
/sys/power/state
[ 35.609252] PM: Syncing filesystems ... done.
[ 35.614654] PM: Preparing system for mem sleep
[ 35.658630] Freezing user space processes ... (elapsed 0.01 seconds) done.
[ 35.689727] Freezing remaining freezable tasks ... (elapsed 0.02 seconds) done.
[ 35.697692] PM: Entering mem sleep
[ 35.722442] usb usb1: usb auto-resume
[ 35.726409] ehci-omap ehci-omap.0: resume root hub
[ 35.775451] hub 1-0:1.0:hub_resume
[ 35.779846] hub 1-0:1.0:hub_suspend
[ 35.784240] usb usb1: bus suspend, wakeup 0
[ 35.788665] ehci-omap ehci-omap.0: suspend root hub
[ 35.805786] PM: suspend of devices complete after 99.304 msecs [ 35.816497] PM: late suspend of devices complete after 4.364 msecs [ 35.831573] PM: noirq suspend of devices complete after 8.331 msecs [ 35.838500] Disabling non-boot CPUs ...
[ 36.312164] Powerdomain (core_pwrdm) didn't enter target state 1 [ 36.318481] Could not enter target state inpm_suspend
[ 36.324859] Unable to handle kernel NULL pointer dereference at virtualQuoted 8 lines
Quoted 8 lines
address 00000018
[ 36.333557] pgd =c6280000
[ 36.336639] [00000018] *pgd=85c8f831, *pte=00000000, *ppte=00000000 [ 36.343414] Internal error: Oops: 17 [#1] SMP ARM
[ 36.348388] Modules linked in:
[ 36.351623] CPU: 0 Tainted: G W (3.5.0-rc1 #1) [ 36.357574] PC is at_od_resume_noirq+0x14/0x58
[ 36.362365] LR is atdpm_run_callback+0x2c/0x74
Quoted 7 lines
You need the fix from
https://gitorious.org/linux-omap-dss2/linux/commit/9e0ca55fa5d9ff012964a7c7cef8af1b814b2fdbHope this helps!
Regards,
Jean
thanks Jean
I used this patch; this solved the crash issue, but suspend/resume
is still failing.
regards
keshava
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Quoted 46 lines · Keshava
Quoted 45 lines · Jean Pihet
Hi Keshava,
Quoted 29 lines · Keshava
Quoted 27 lines · Keshava
hi kevin
now I am using initramfs with kernel linux3.5.rc1, but the retention is not working in 3430 sdp. I am seeing the following error followed by a crashecho mem >
/sys/power/state
[ 35.609252] PM: Syncing filesystems ... done.
[ 35.614654] PM: Preparing system for mem sleep
[ 35.658630] Freezing user space processes ... (elapsed 0.01 seconds) done.
[ 35.689727] Freezing remaining freezable tasks ... (elapsed 0.02 seconds) done.
[ 35.697692] PM: Entering mem sleep
[ 35.722442] usb usb1: usb auto-resume
[ 35.726409] ehci-omap ehci-omap.0: resume root hub
[ 35.775451] hub 1-0:1.0:hub_resume
[ 35.779846] hub 1-0:1.0:hub_suspend
[ 35.784240] usb usb1: bus suspend, wakeup 0
[ 35.788665] ehci-omap ehci-omap.0: suspend root hub
[ 35.805786] PM: suspend of devices complete after 99.304 msecs [ 35.816497] PM: late suspend of devices complete after 4.364 msecs [ 35.831573] PM: noirq suspend of devices complete after 8.331 msecs [ 35.838500] Disabling non-boot CPUs ...
[ 36.312164] Powerdomain (core_pwrdm) didn't enter target state 1 [ 36.318481] Could not enter target state inpm_suspend
[ 36.324859] Unable to handle kernel NULL pointer dereference at virtualQuoted 8 lines
Quoted 8 lines
address 00000018
[ 36.333557] pgd =c6280000
[ 36.336639] [00000018] *pgd=85c8f831, *pte=00000000, *ppte=00000000 [ 36.343414] Internal error: Oops: 17 [#1] SMP ARM
[ 36.348388] Modules linked in:
[ 36.351623] CPU: 0 Tainted: G W (3.5.0-rc1 #1) [ 36.357574] PC is at_od_resume_noirq+0x14/0x58
[ 36.362365] LR is atdpm_run_callback+0x2c/0x74You need the fix from
https://gitorious.org/linux-omap-dss2/linux/commit/9e0ca55fa5d9ff012964a7c7cef8af1b814b2fdb
Quoted 8 lines
Quoted 4 lines
Hope this helps!
Regards,
Jeanthanks Jean
I used this patch; this solved the crash issue, but suspend/resume
is still failing.
Failing in what way? Did you debug any further?
It may be failing because of problems with the USB host driver, which is what I'm needing you to debug.
I'm convinced now that these USB host PM changes were not very well tested at all as they seem to be causing a variety of different problems on my boards: faults during boot, preventing CORE idle retention, hanging suspend/resume.
Anyways...
To get current l-o master to succesfully suspend/resume, you need 3 things:
1) the DSS fixes that Jean mentioned above (these are merged in v3.5-rc3, but not yet into l-o master)
2) disable USB host: set CONFIG_MFD_OMAP_USB_HOST=n
3) for for 32k timer which is also preventing CORE retention
http://marc.info/?l=linux-omap&m=134000053229888&w=2
With that setup on top of current l-o master, suspend/resume is working for me on several OMAP3/4 platforms.
Kevin
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Quoted 53 lines · Kevin Hilman
Quoted 51 lines · Keshava
Quoted 49 lines · Jean Pihet
Hi Keshava,
Quoted 29 lines · Keshava
Quoted 27 lines · Keshava
hi kevin
now I am using initramfs with kernel linux3.5.rc1, but the retention is not working in 3430 sdp. I am seeing the following error followed by a crashecho mem >
/sys/power/state
[ 35.609252] PM: Syncing filesystems ... done.
[ 35.614654] PM: Preparing system for mem sleep
[ 35.658630] Freezing user space processes ... (elapsed 0.01 seconds) done.
[ 35.689727] Freezing remaining freezable tasks ... (elapsed 0.02 seconds) done.
[ 35.697692] PM: Entering mem sleep
[ 35.722442] usb usb1: usb auto-resume
[ 35.726409] ehci-omap ehci-omap.0: resume root hub
[ 35.775451] hub 1-0:1.0:hub_resume
[ 35.779846] hub 1-0:1.0:hub_suspend
[ 35.784240] usb usb1: bus suspend, wakeup 0
[ 35.788665] ehci-omap ehci-omap.0: suspend root hub
[ 35.805786] PM: suspend of devices complete after 99.304 msecs [ 35.816497] PM: late suspend of devices complete after 4.364 msecs [ 35.831573] PM: noirq suspend of devices complete after 8.331 msecs [ 35.838500] Disabling non-boot CPUs ...
[ 36.312164] Powerdomain (core_pwrdm) didn't enter target state 1 [ 36.318481] Could not enter target state inpm_suspend
[ 36.324859] Unable to handle kernel NULL pointer dereference at virtualQuoted 8 lines
Quoted 8 lines
address 00000018
[ 36.333557] pgd =c6280000
[ 36.336639] [00000018] *pgd=85c8f831, *pte=00000000, *ppte=00000000 [ 36.343414] Internal error: Oops: 17 [#1] SMP ARM
[ 36.348388] Modules linked in:
[ 36.351623] CPU: 0 Tainted: G W (3.5.0-rc1 #1) [ 36.357574] PC is at_od_resume_noirq+0x14/0x58
[ 36.362365] LR is atdpm_run_callback+0x2c/0x74You need the fix from
https://gitorious.org/linux-omap-dss2/linux/commit/9e0ca55fa5d9ff012964a7c7cef8af1b814b2fdbHope this helps!
Regards,
Jean
Quoted 8 lines
Quoted 3 lines
thanks Jean
I used this patch; this solved the crash issue, but suspend/resume is still failing.Failing in what way? Did you debug any further?
It may be failing because of problems with the USB host driver, which is what I'm needing you to debug.
The suspend/resume was failing even without USB in the mainline kernel image.
Quoted 16 lines
I'm convinced now that these USB host PM changes were not very well tested at all as they seem to be causing a variety of different problems on my boards: faults during boot, preventing CORE idle retention, hanging suspend/resume.
Anyways...
To get current l-o master to succesfully suspend/resume, you need 3 things:
1) the DSS fixes that Jean mentioned above (these are merged in v3.5-rc3, but not yet into l-o master)
2) disable USB host: setCONFIG_MFD_OMAP_USB_HOST=n
3) for for 32k timer which is also preventing CORE retention
http://marc.info/?l=linux-omap&m=134000053229888&w=2
Quoted 4 lines
With that setup on top of current l-o master, suspend/resume is working for me on several OMAP3/4 platforms.
Kevin
Ok, I will test this.
regards
keshava
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Quoted 58 lines · Keshava
Quoted 57 lines · Kevin Hilman
Quoted 54 lines · Keshava
Quoted 42 lines · Jean Pihet
Hi Keshava,
Quoted 29 lines · Keshava
Quoted 27 lines · Keshava
hi kevin
now I am using initramfs with kernel linux3.5.rc1, but the retention is not working in 3430 sdp. I am seeing the following error followed by a crashecho mem >
/sys/power/state
[ 35.609252] PM: Syncing filesystems ... done.
[ 35.614654] PM: Preparing system for mem sleep
[ 35.658630] Freezing user space processes ... (elapsed 0.01 seconds) done.
[ 35.689727] Freezing remaining freezable tasks ... (elapsed 0.02 seconds) done.
[ 35.697692] PM: Entering mem sleep
[ 35.722442] usb usb1: usb auto-resume
[ 35.726409] ehci-omap ehci-omap.0: resume root hub
[ 35.775451] hub 1-0:1.0:hub_resume
[ 35.779846] hub 1-0:1.0:hub_suspend
[ 35.784240] usb usb1: bus suspend, wakeup 0
[ 35.788665] ehci-omap ehci-omap.0: suspend root hub
[ 35.805786] PM: suspend of devices complete after 99.304 msecs [ 35.816497] PM: late suspend of devices complete after 4.364 msecs [ 35.831573] PM: noirq suspend of devices complete after 8.331 msecs [ 35.838500] Disabling non-boot CPUs ...
[ 36.312164] Powerdomain (core_pwrdm) didn't enter target state 1 [ 36.318481] Could not enter target state inpm_suspend
[ 36.324859] Unable to handle kernel NULL pointer dereference at virtualQuoted 8 lines
Quoted 8 lines
address 00000018
[ 36.333557] pgd =c6280000
[ 36.336639] [00000018] *pgd=85c8f831, *pte=00000000, *ppte=00000000 [ 36.343414] Internal error: Oops: 17 [#1] SMP ARM
[ 36.348388] Modules linked in:
[ 36.351623] CPU: 0 Tainted: G W (3.5.0-rc1 #1) [ 36.357574] PC is at_od_resume_noirq+0x14/0x58
[ 36.362365] LR is atdpm_run_callback+0x2c/0x74Quoted 7 lines
You need the fix from
https://gitorious.org/linux-omap-dss2/linux/commit/9e0ca55fa5d9ff012964a7c7cef8af1b814b2fdbHope this helps!
Regards,
Jeanthanks Jean
I used this patch; this solved the crash issue, but suspend/resume is still failing.
Quoted 28 lines
Quoted 4 lines
Failing in what way? Did you debug any further?
It may be failing because of problems with the USB host driver, which is what I'm needing you to debug.
The suspend/resume was failing even without USB in the mainline kernel image.
Quoted 20 lines
I'm convinced now that these USB host PM changes were not very well tested at all as they seem to be causing a variety of different problems on my boards: faults during boot, preventing CORE idle retention, hanging suspend/resume.
Anyways...
To get current l-o master to succesfully suspend/resume, you need 3 things:
1) the DSS fixes that Jean mentioned above (these are merged in v3.5-rc3, but not yet into l-o master)
2) disable USB host: setCONFIG_MFD_OMAP_USB_HOST=n
3) for for 32k timer which is also preventing CORE retention
http://marc.info/?l=linux-omap&m=134000053229888&w=2With that setup on top of current l-o master, suspend/resume is working for me on several OMAP3/4 platforms.
Kevin
I tired the linux2.3.5.rc2 + DSS fixes + sync 32k timer fix without USB on beagle XM. but I can see that core retention in suspend/resume is not working .
Apply , DSS fixes patch has resolved the the crash in suspend/resume, but retention
is not entering.
regards
keshava
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Quoted 83 lines · Keshava
Quoted 81 lines · Keshava
Quoted 53 lines · Kevin Hilman
Quoted 51 lines · Keshava
Quoted 49 lines · Jean Pihet
Hi Keshava,
Quoted 29 lines · Keshava
Quoted 27 lines · Keshava
hi kevin
now I am using initramfs with kernel linux3.5.rc1, but the retention is not working in 3430 sdp. I am seeing the following error followed by a crashecho mem >
/sys/power/state
[ 35.609252] PM: Syncing filesystems ... done.
[ 35.614654] PM: Preparing system for mem sleep
[ 35.658630] Freezing user space processes ... (elapsed 0.01 seconds) done.
[ 35.689727] Freezing remaining freezable tasks ... (elapsed 0.02 seconds) done.
[ 35.697692] PM: Entering mem sleep
[ 35.722442] usb usb1: usb auto-resume
[ 35.726409] ehci-omap ehci-omap.0: resume root hub
[ 35.775451] hub 1-0:1.0:hub_resume
[ 35.779846] hub 1-0:1.0:hub_suspend
[ 35.784240] usb usb1: bus suspend, wakeup 0
[ 35.788665] ehci-omap ehci-omap.0: suspend root hub
[ 35.805786] PM: suspend of devices complete after 99.304 msecs [ 35.816497] PM: late suspend of devices complete after 4.364 msecs [ 35.831573] PM: noirq suspend of devices complete after 8.331 msecs [ 35.838500] Disabling non-boot CPUs ...
[ 36.312164] Powerdomain (core_pwrdm) didn't enter target state 1 [ 36.318481] Could not enter target state inpm_suspend
[ 36.324859] Unable to handle kernel NULL pointer dereference at virtualQuoted 8 lines
Quoted 8 lines
address 00000018
[ 36.333557] pgd =c6280000
[ 36.336639] [00000018] *pgd=85c8f831, *pte=00000000, *ppte=00000000 [ 36.343414] Internal error: Oops: 17 [#1] SMP ARM
[ 36.348388] Modules linked in:
[ 36.351623] CPU: 0 Tainted: G W (3.5.0-rc1 #1) [ 36.357574] PC is at_od_resume_noirq+0x14/0x58
[ 36.362365] LR is atdpm_run_callback+0x2c/0x74You need the fix from
https://gitorious.org/linux-omap-dss2/linux/commit/9e0ca55fa5d9ff012964a7c7cef8af1b814b2fdbHope this helps!
Regards,
JeanQuoted 8 lines
Quoted 3 lines
thanks Jean
I used this patch; this solved the crash issue, but suspend/resume is still failing.Failing in what way? Did you debug any further?
It may be failing because of problems with the USB host driver, which is what I'm needing you to debug.
The suspend/resume was failing even without USB in the mainline kernel image.
Quoted 16 lines
I'm convinced now that these USB host PM changes were not very well tested at all as they seem to be causing a variety of different problems on my boards: faults during boot, preventing CORE idle retention, hanging suspend/resume.
Anyways...
To get current l-o master to succesfully suspend/resume, you need 3 things:
1) the DSS fixes that Jean mentioned above (these are merged in v3.5-rc3, but not yet into l-o master)
2) disable USB host: setCONFIG_MFD_OMAP_USB_HOST=n
3) for for 32k timer which is also preventing CORE retention
http://marc.info/?l=linux-omap&m=134000053229888&w=2
Quoted 8 lines
Quoted 5 lines
Quoted 4 lines
With that setup on top of current l-o master, suspend/resume is working for me on several OMAP3/4 platforms.
Kevin
I tired the linux2.3.5.rc2 + DSS fixes + sync 32k timer fix without USB on beagle XM.
I suggested using l-o master as a baseline, not -rc2.
I just pushed a branch with this baseline so we are sure to be testing the same baseline. Please use the 'tmp/test/usb-host' branch from my tree[1] as the starting point.
Build using omap2plus_defconfig, boot, then suspend/resume and send the output of 'cat /debug/pm_debug/count'
This baseline is working fine for me on 3430/n900, 3530/Overo and 3630/Beagle-xM.
Kevin
[1] git://git.kernel.org/pub/scm/linux/kernel/git/khilman/linux.git
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Quoted 103 lines · Kevin Hilman
Quoted 83 lines · Keshava
Quoted 81 lines · Keshava
Quoted 53 lines · Kevin Hilman
Quoted 51 lines · Keshava
Quoted 49 lines · Jean Pihet
Hi Keshava,
Quoted 29 lines · Keshava
Quoted 27 lines · Keshava
hi kevin
now I am using initramfs with kernel linux3.5.rc1, but the retention is not working in 3430 sdp. I am seeing the following error followed by a crashecho mem >
/sys/power/state
[ 35.609252] PM: Syncing filesystems ... done.
[ 35.614654] PM: Preparing system for mem sleep
[ 35.658630] Freezing user space processes ... (elapsed 0.01 seconds) done.
[ 35.689727] Freezing remaining freezable tasks ... (elapsed 0.02 seconds) done.
[ 35.697692] PM: Entering mem sleep
[ 35.722442] usb usb1: usb auto-resume
[ 35.726409] ehci-omap ehci-omap.0: resume root hub
[ 35.775451] hub 1-0:1.0:hub_resume
[ 35.779846] hub 1-0:1.0:hub_suspend
[ 35.784240] usb usb1: bus suspend, wakeup 0
[ 35.788665] ehci-omap ehci-omap.0: suspend root hub
[ 35.805786] PM: suspend of devices complete after 99.304 msecs [ 35.816497] PM: late suspend of devices complete after 4.364 msecs [ 35.831573] PM: noirq suspend of devices complete after 8.331 msecs [ 35.838500] Disabling non-boot CPUs ...
[ 36.312164] Powerdomain (core_pwrdm) didn't enter target state 1 [ 36.318481] Could not enter target state inpm_suspend
[ 36.324859] Unable to handle kernel NULL pointer dereference at virtualQuoted 8 lines
Quoted 8 lines
address 00000018
[ 36.333557] pgd =c6280000
[ 36.336639] [00000018] *pgd=85c8f831, *pte=00000000, *ppte=00000000 [ 36.343414] Internal error: Oops: 17 [#1] SMP ARM
[ 36.348388] Modules linked in:
[ 36.351623] CPU: 0 Tainted: G W (3.5.0-rc1 #1) [ 36.357574] PC is at_od_resume_noirq+0x14/0x58
[ 36.362365] LR is atdpm_run_callback+0x2c/0x74You need the fix from
https://gitorious.org/linux-omap-dss2/linux/commit/9e0ca55fa5d9ff012964a7c7cef8af1b814b2fdbHope this helps!
Regards,
JeanQuoted 8 lines
Quoted 3 lines
thanks Jean
I used this patch; this solved the crash issue, but suspend/resume is still failing.Failing in what way? Did you debug any further?
It may be failing because of problems with the USB host driver, which is what I'm needing you to debug.
The suspend/resume was failing even without USB in the mainline kernel image.
Quoted 16 lines
I'm convinced now that these USB host PM changes were not very well tested at all as they seem to be causing a variety of different problems on my boards: faults during boot, preventing CORE idle retention, hanging suspend/resume.
Anyways...
To get current l-o master to succesfully suspend/resume, you need 3 things:
1) the DSS fixes that Jean mentioned above (these are merged in v3.5-rc3, but not yet into l-o master)
2) disable USB host: setCONFIG_MFD_OMAP_USB_HOST=n
3) for for 32k timer which is also preventing CORE retention
http://marc.info/?l=linux-omap&m=134000053229888&w=2Quoted 8 lines
Quoted 5 lines
Quoted 4 lines
With that setup on top of current l-o master, suspend/resume is working for me on several OMAP3/4 platforms.
Kevin
I tired the linux2.3.5.rc2 + DSS fixes + sync 32k timer fix without USB on beagle XM.
I suggested using l-o master as a baseline, not -rc2.
I just pushed a branch with this baseline so we are sure to be testing the same baseline. Please use the 'tmp/test/usb-host' branch from my tree[1] as the starting point.
Build using
omap2plus_defconfig, boot, then suspend/resume and send the output of 'cat /debug/pm_debug/count'
Quoted 6 lines
This baseline is working fine for me on 3430/n900, 3530/Overo and 3630/Beagle-xM.
Kevin
[1]
git://git.kernel.org/pub/scm/linux/kernel/git/khilman/linux.git
I did the clone of this , But I am not seeing the branch 'tmp/test/usb-host' I am seeing only the branch /wip/arm-nohz-cpusets other than master. I didn't any usb-host branch here too:
http://git.kernel.org/?p=linux/kernel/git/khilman/linux.git;a=summary
regards
keshava
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Quoted 4 lines · Keshava
I did the clone of this , But I am not seeing the branch 'tmp/test/usb-host' I am seeing only the branch /wip/arm-nohz-cpusets other than master. I didn't any usb-host branch here too:
http://git.kernel.org/?p=linux/kernel/git/khilman/linux.git;a=summary
It seems Kevin linked the wrong git tree, try this one:
http://git.kernel.org/?p=linux/kernel/git/khilman/linux-omap-pm.git
Signature · 5 lines
Gražvydas -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Quoted 9 lines · Grazvydas Ignotas
Quoted 4 lines · Keshava
I did the clone of this , But I am not seeing the branch 'tmp/test/usb-host' I am seeing only the branch /wip/arm-nohz-cpusets other than master. I didn't any usb-host branch here too:
http://git.kernel.org/?p=linux/kernel/git/khilman/linux.git;a=summaryIt seems Kevin linked the wrong git tree, try this one:
http://git.kernel.org/?p=linux/kernel/git/khilman/linux-omap-pm.git
Oops, sorry.
Grazvydas is right. It's my linux-omap-pm tree that has this test branch.
Kevin