On 04.02.2016 11:03, Laxman Dewangan wrote: > > On Thursday 04 February 2016 05:40 AM, Krzysztof Kozlowski wrote: >> On 03.02.2016 22:47, Laxman Dewangan wrote: >>> >>> Changes from V2: >>> - Taken care of missed sequence for removing the resource. >>> - Fix the crash when doing unbind by using requested_threaded_irq() >>> instead of demv_requested_threaded_irq(). >>> >>> drivers/mfd/max77686.c | 85 +------------------- >>> drivers/rtc/rtc-max77686.c | 148 >>> ++++++++++++++++++++++++++++++----- >>> include/linux/mfd/max77686-private.h | 3 - >>> 3 files changed, 130 insertions(+), 106 deletions(-) >>> >> Looks good and works properly (RTC, unbind/rebind, wakealarm again) >> but... after applying this patch the device cannot suspend to RAM after >> unbind/rebind. >> >> Reproduce path, after booting: >> $ echo max77686-rtc > /sys/bus/platform/drivers/max77686-rtc/unbind >> $ echo max77686-rtc > /sys/bus/platform/drivers/max77686-rtc/bind >> $ rtcwake -d rtc2 -m mem -s 5 -v >> (or instead of rtcwake: echo mem > /sys/power/state) > > > My device does not support suspend and hence I can nto test this part > and need your help to debug it. > > Few question to narrow down: > 1. Have you try to bind/unbind mfd driver to make sure that there is no > inherent issue in the framework driver?
That might be tricky... there are also regulator and clock drivers. I would have to disable them... It might take me some time to prepare an environment for this. > > 2. Does suspend entry and wake alarm work if you dont do unbind and just > bind it and enter into suspend? If by "just bind" you mean bind during system boot, then answer is yes. Without the unbind+bind, the system suspends correctly. Without your patch, system suspends correctly always (no rebind, rebind etc.). Actually I don't have to re-bind the RTC. Just: $ echo max77686-rtc > /sys/bus/platform/drivers/max77686-rtc/unbind $ echo mem > /sys/power/state triggers the issue. > > 3. Can you try locally to not use devm_regmap_init_i2c() and just use > the regmap_init_i2c() and proper removal of this from error path and > remove callback? I'll try to find some time for that. Maybe tomorrow. BR, Krzysztof > Three things we are doing new on this movement, i2c client creating, > regmap_init and adding irq chip. > And probably some issue on this calls? > Let's try with not using devm_ * for this calls? > > > >