From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755294AbcIIVWP (ORCPT ); Fri, 9 Sep 2016 17:22:15 -0400 Received: from glaubenleben.de ([85.214.105.140]:56524 "EHLO glaubenleben.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753269AbcIIVWN (ORCPT ); Fri, 9 Sep 2016 17:22:13 -0400 Date: Fri, 9 Sep 2016 23:22:06 +0200 From: Andreas Kemnade To: Tony Lindgren Cc: Laurent Pinchart , Bin Liu , Greg Kroah-Hartman , linux-usb@vger.kernel.org, linux-omap@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [v2] musb: omap2430: do not assume balanced enable()/disable() Message-ID: <20160909232206.70ee2558@aktux> In-Reply-To: <20160909205103.sqonsprxbb7i6zth@atomide.com> References: <1470238731-32358-1-git-send-email-andreas@kemnade.info> <1946895.vi37Pmm05X@avalon> <20160909200803.4cngkfhgkki4e7o3@atomide.com> <1538976.gm2HNISj8k@avalon> <20160909205103.sqonsprxbb7i6zth@atomide.com> X-Mailer: Claws Mail 3.11.1 (GTK+ 2.24.25; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, 9 Sep 2016 13:51:04 -0700 Tony Lindgren wrote: > * Laurent Pinchart [160909 13:21]: > > On Friday 09 Sep 2016 13:08:03 Tony Lindgren wrote: > > > This patch has a side effect of fixing the issue by breaking PM > > > runtime, not a good fix as discussed. > > > > How exactly is it worse breaking runtime PM than breaking USB > > gadget completely ? :-) > > Yeah sorry to break it, I obviously did not test it on all > platforms :( I'm mostly using omap3 with the 2430 glue layer and > am335x for the dsps glue layer and did not know that omap4 is broken. > I guess I've recently just used the EHCI ports on panda. > > > The issue here is that the .disable() platform operation is called > > by musb with the PHY already powered off, leading to the PHY power > > reference count becoming negative. The next call to the .enable() > > operation restores the reference count to 0 without enabling the > > PHY. > > Well for the phy-twl4030-usb.c, AFAIK the right fix is to fix the PHY > driver as done in "[PATCH v2] phy-twl4030-usb: initialize > charging-related stuff via pm_runtime". I suspect something similar > is happening here also with the omap4 legacy phy. > No, the fix is for making charging work independant of musb. Gadget is working because charging is enabled and enables all parts in the phy needed for it. And you can charge without musb (only musb_hdrc for the mailbox but not the omap2430 glue module). We have two independant things: 1. phy-twl4030-usb (and perhaps others) do not enable the phy enough to allow charging on pm_runtime_get(). That is fixed by my phy-related patches. 2. phy_power_off/on() in called in an unbalanced way if it is called behind musb_platform_enable()/disable() as it happens in omap2430.c. Two ways to fix it: a) prevent phy_power_off()/on() to be called in an unbalanced way in omap240.c b) prevent musb_platform_enable() musb_platform_disable() to be called in an unbalanced way by fixing musb_core.c Fixing 1. is enough on gta04 to fix charging and hide 2. enough to have gadget working for the most common usecases. (not using twl4030-charger would not work yet) But in the longer term 2. has to be fixed too. Regards, Andreas Kemnade