From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752865AbdLKNbr (ORCPT ); Mon, 11 Dec 2017 08:31:47 -0500 Received: from mail-lf0-f67.google.com ([209.85.215.67]:36409 "EHLO mail-lf0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751871AbdLKNbn (ORCPT ); Mon, 11 Dec 2017 08:31:43 -0500 X-Google-Smtp-Source: ACJfBou9JhkA4H39H1DYVnoxPnPjAfhWnumQDMH6MtCxgQMkCudNvAnhtU95/UUFBzZSGisYJQ722Q== Subject: Re: [PATCH v1 2/2] usb: tegra: Move UTMI-pads reset from ehci-tegra to tegra-phy To: Thierry Reding Cc: Felipe Balbi , Alan Stern , Greg Kroah-Hartman , Jonathan Hunter , linux-usb@vger.kernel.org, linux-tegra@vger.kernel.org, linux-kernel@vger.kernel.org References: <853ce44924e396b907332d4f3ad4ae70eae9bbcc.1512946782.git.digetx@gmail.com> <20171211102523.GH10671@ulmo> From: Dmitry Osipenko Message-ID: <886b6cfe-1691-508b-335b-6f015747dd40@gmail.com> Date: Mon, 11 Dec 2017 16:31:39 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.5.0 MIME-Version: 1.0 In-Reply-To: <20171211102523.GH10671@ulmo> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 11.12.2017 13:25, Thierry Reding wrote: > On Mon, Dec 11, 2017 at 02:07:38AM +0300, Dmitry Osipenko wrote: >> UTMI pads are shared by USB controllers and reset of UTMI pads is shared >> with the reset of USB1 controller. Currently reset of UTMI pads is done by >> the EHCI driver and ChipIdea UDC works because EHCI driver always happen >> to be probed first. Move reset controls from ehci-tegra to tegra-phy in >> order to resolve the problem. >> >> Signed-off-by: Dmitry Osipenko >> --- >> drivers/usb/host/ehci-tegra.c | 87 ++++++++++++++++++--------------------- >> drivers/usb/phy/phy-tegra-usb.c | 46 +++++++++++++++++++++ >> include/linux/usb/tegra_usb_phy.h | 2 + >> 3 files changed, 87 insertions(+), 48 deletions(-) > > I don't think we can do this. For one I don't think shared resets are > going to work here because you really won't ever be able to reset after > two devices have requested the same reset. Ah, indeed. Originally I had the reset being done in the probe, but then changed it in the last minute without proper testing. Good catch! I'll revert back patch to the origin. Second, utmip_pad_close() > could be called at any point and it will have the side-effect of either > not doing a reset at all (because it is shared) or resetting the USBD > controller at the same time. utmip_pad_close() is only called on tegra-phy driver removal, so it is absolutely fine. > We've been over this code a great deal over the years. I'd love it to be > simpler, but every time we tried to simplify it, things broke. Well, the current code is already broken quite severely because now we have two users of the tegra-phy: ehci-tegra and chipidea-tegra. Things brake if host driver is loaded after the UDC because host would reset the UDC. And also pads won't be reset if ehci-tegra isn't loaded at all. Shared reset seems to be a perfect solution for us and of course it requires extra carefulness.