From patchwork Thu Oct 13 15:14:35 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Xu Yang X-Patchwork-Id: 13005697 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2F943C433FE for ; Thu, 13 Oct 2022 07:12:47 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229599AbiJMHMq (ORCPT ); Thu, 13 Oct 2022 03:12:46 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36274 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229545AbiJMHMo (ORCPT ); Thu, 13 Oct 2022 03:12:44 -0400 Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-eopbgr70050.outbound.protection.outlook.com [40.107.7.50]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8B467FF8D1 for ; Thu, 13 Oct 2022 00:12:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=RsklKexm6KVpe4Tq8thqV5bzcKQhh7rguFrHpTuXBCXV465H0a1JXBAz/cJ0aM2BbXZBh1QB2V8pJ4c2dN8noxoXgpfEaM7qHcrJPiU0InK/BSAo86FKCh7Sptxkkf+HVfzZ5iY3LAICgYpM5PhaRh1MeUKqMRiluV9AHVL7QlPlaZ5R3IfbNwYjbBJ7fHsl0rLyriTo59LBMTM991zyTzfmPkkuqKDoorCrSh8ClRdGnkN/JyA+mTz+wTL1HPcf0qEfCJd9GEZkkidszLoNIwm2MYhvAjiwvyAiMKgqLytwugZgS7/5T95puZQmBytiN+zxcSokiVLhh8XcXWMIqQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=zfr8uR5zlqTwzz4sp4GX3CWRVHjNBWd6bsjciZTifvg=; b=WygR1PXI97YuGljzNl7nTN9+Nkt8EH8ZNsdrp4Muh8R7xoQR6iOCd38MQe8xwvEE3u+UrzDBlabdntgyd/hWRolXk8jS7SKl6rZfIthtzuZIEi/Hl5/lwEY6kBgxgWyvrKINtugxTh8yrX0CppmUTacmGDeoAMZxgj6N6b/hyFt0kXI1Hrz0rKGjhuc2R+LFYjLmpxuml6P9fQkAZpg+VSj+ylqQuTH9ImMfRXkn/UGnTDzoKA/L7rxordn04BqIYaAdFOFd5+B6LsGlZ2b9fS202Di4tLzmfC0FAaUXEzo8bGPj276ghaC8BCIXZRAI0bepUsr5TsoVfywA02fDtA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=zfr8uR5zlqTwzz4sp4GX3CWRVHjNBWd6bsjciZTifvg=; b=SCQhh2DLFD2WCX6N5sHUKDRSWqCGTzUbYMzCUbUtjgKlIUGJrTvhA+Klea2uviK7kxwoahUOJVEldHR4+xw4RB0PGXkBfBKpxrXcCBFMCfqNxWmKbF3tyn8c9oitCz1T+ttjWONSnGtDg3Dyi6wqekSp8X62HJl8vmZKqzliIaQ= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXPR04MB8784.eurprd04.prod.outlook.com (2603:10a6:102:20f::23) by PAXPR04MB8444.eurprd04.prod.outlook.com (2603:10a6:102:1db::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5654.26; Thu, 13 Oct 2022 07:12:40 +0000 Received: from PAXPR04MB8784.eurprd04.prod.outlook.com ([fe80::855c:7884:639:f875]) by PAXPR04MB8784.eurprd04.prod.outlook.com ([fe80::855c:7884:639:f875%7]) with mapi id 15.20.5723.026; Thu, 13 Oct 2022 07:12:40 +0000 From: Xu Yang To: peter.chen@kernel.org, jun.li@nxp.com Cc: gregkh@linuxfoundation.org, linux-usb@vger.kernel.org, linux-imx@nxp.com Subject: [PATCH v2 1/8] usb: chipidea: core: add controller resume support when controller is powered off Date: Thu, 13 Oct 2022 23:14:35 +0800 Message-Id: <20221013151442.3262951-2-xu.yang_2@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221013151442.3262951-1-xu.yang_2@nxp.com> References: <20221013151442.3262951-1-xu.yang_2@nxp.com> X-ClientProxiedBy: SG2PR02CA0091.apcprd02.prod.outlook.com (2603:1096:4:90::31) To AM9PR04MB8777.eurprd04.prod.outlook.com (2603:10a6:20b:408::20) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB8784:EE_|PAXPR04MB8444:EE_ X-MS-Office365-Filtering-Correlation-Id: 911d9ec3-c01b-4cda-366d-08daacea50e1 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: f/pYrwvBLAjcuU60wP/l4x6QypMovNUSAmZ/wM1anX6jCwXCdMhi6kzGVyIW+8w36l6A4XhWQYpjupx1lKF/tZb9cbJSZZk73KLKg67HtO1x7+/Jo8vEBBanZZ4Q2+QmeneAASPcP/pHC6KB9f8cV4YyMYq/dickRgMHuyfzMqH4968cKP4EKjBMY7DT3cUb3WEYs2a0cWxK42ZkY/gswqMSqy2+RrXNFc80UVaAR/Dz8O75rDezs1aIWRK+VMgSZ1NkToV4X+mFYXy/EyGCEfNFWbRlakV5noOT4SB5mppGwb7QSl+hHzln9S76M5Ik97K2J+7N5iJpHP4NeC0IR+eObbZIef3KowYF4pELixd7rGyQUlTgSfcgqIQM3k567Xm0UJ8m3IBRgJGwDJJ6yf0udKRivOu2tTGeAMelPYcEuPXFswTA7VVIdEFELu/fbPwKKBrAB/Qii97Hlkl+g9e5sGxs5wUgy8GAOgA+YxQ0hn6gcgMiGihYi3wJHLI0IXiYjagC7qcvy0ICyKptczZXaGM+dl6RQBO9OO2XasHkruIHg7ix/DeVQi7sv1d9PrnruSrfGlLEOPehr83eN0evA41yn6/L7iDcPJigM92dunlG0hm9VNGJi9uBHnO+GBnwpFUkiwwNZByRfY9lnb5f8UNSzvjBCTVhnIjRv4HIE5t+CrXOEaElxsQpzFBQA7Qm3Ts5creLgtKnpxm6c2JK/2qB98LgjSrNz+51ppUztdU7091GHGbBiKjsSX6CIB1RTKGx7WJF/pE1NEhq9g== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXPR04MB8784.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(136003)(346002)(366004)(396003)(39860400002)(376002)(451199015)(41300700001)(26005)(6512007)(36756003)(6666004)(478600001)(6506007)(52116002)(6486002)(38100700002)(316002)(38350700002)(186003)(6636002)(4326008)(86362001)(66476007)(8676002)(83380400001)(2906002)(66946007)(1076003)(8936002)(2616005)(5660300002)(66556008);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 3veGTA6f0Pa9LArxAXs4h4/2mZj73/EccskqXGqivu3ewT5jMuTwmhr2pP/Kk56XMBUlooEP041FulhoaaHDDA6i7Y69Le80PYmwPDnPE4AJ4ucnq8R/Q2wkOuL0HlIlYh9MjyyA/YLhDpzYAmLdM0U1XbWPvHfAC57uBrjlO80NVQcfdgS5Sjr8Yj/4VKUCEQClicZ6YqvCjxXDR9WHK5c4kACsRAYPntheQn4fSx4QzWJYX5l/kmv+LKp7QI0idzRR+fRYBx5prsnkCzBRIhWV9iiv6kR1968iThX81WTJjtvH6D0TC2j0ltBB1RXf8rTXtC32B7TUmbXDCBHDF3vr0c7mT1gJf0QNuRJqRKyONrJT+Q9RgiCMgvZg8pxIeu65kxDCDUSMy8Sr96pDJHQHcAr6kSm9OLT5jyMV+qC3SAEbXmRrwu9W3F09isd1KRzGw86AZPX3MwNS+tLYU24xb290fT5JAkMjPzbc4vYIepFZdcwz/kFlqescNBofGmjBJ1e6in28e08WiSRz6fREwX8Ekt1iknKCtlGG9/Enqt3OfXbUbj1OMUg6zZUiJqaOWwLngzWKbM3vuWyxLeF4ORg+rHzi1nXAcxjADgwIRyYhaJkpJzOE9Q8oeBTBXF5FKiVfu8njndSVqtab7843Eyq4+jglKzI0nRPyfTG87F9CY/ZE9T7JeGcPJvBmHe8QBvTdPPlq+ewNQg8eKuQEkyNyVAZW6Qu1zqOvvmamRWjy18DHQaXHR5EHKIINjrTtCu5D8RvLaqq1CAcGki/Eg5HZW7UiIcscq7jwd5/nIMDiWi70Gziru8XmMb1jAA+FdXze4GMx5gf7mmcGr770o2IY20CqzOfGhb8h/GRhrfm3Keh80ELfCbDiER79F+MPcuxYRp+Ry3hesEHeUI6DFT+0tzEHFykJdt4WG5a95qxT9ApfggMooaXcr2jmWiXjMHaAUyXCEAEbub635vOVfI2o7iLCqajOYqCUTcozLzdqWCND3dahnseihOdR8gGBNV/wt4wvBwlWaH2ijz0t/flIkakHdAB54P4aR/Ssq4Up8eN6/8+NSIix1GTQmzYr8cFilHktL9E0iIM82jvhZe2sIBDDrJRADHkmbds5yutNSnpny+/DIzvlO1TznF9muTTUk24plaMizW9nKHd6xF51hGEWUXoWlyp9nFNHOKFTV52lYL9bpCtImyOl2x4YCIzrnEjl2PKq6H51m/C6XfyPseQLYBUBV6CIuGJ0jPf3B9gvTWU1VV5dYg+88eBTZ5+H5jSc4ItukcA0KZAk8rag4eq9Mhrqy1ClrK2GR2UnAGs1hgMnZI/ehjiyJOMxFauqeQ0qG3ZxRy/pAq35L64nouGsz1Wo76Ql9/6VJ89BOC3W+hCnv24Ff392jPOIlLo1tv/SWI5EgowUxIDumqmQnQpEbkIH0vQBi2u2SSGrCI3uV1GIHArrx2essLwQNfPuA/UPOLKNkCRsCUnLqnLAIZYa4RKMuBS+DIzzglbwIEL/3qrj6RVraR7fYn8hu+ET4OEV0okMHKghB1BDZNyFF3Q4DS3rsP2P/9xNoA1pdL1FIfIZfGJ/9xSq X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 911d9ec3-c01b-4cda-366d-08daacea50e1 X-MS-Exchange-CrossTenant-AuthSource: AM9PR04MB8777.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Oct 2022 07:12:40.8392 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 9IJSJ8GFt/FbqiAhukDcO0+YXa/wTyKd9CshPKbdd2WNNzwcfg5n0io5lWCtGHViKP6RDvaKdiqKDdnKzXd6wg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8444 Precedence: bulk List-ID: X-Mailing-List: linux-usb@vger.kernel.org For some SoCs, the controler's power will be off during the system suspend, and it needs some recovery operation to let the system back to workable. We add this support in this patch. Signed-off-by: Xu Yang Acked-by: Peter Chen --- Changes since v1: - add static modifer for ci_handle_power_lost(). --- drivers/usb/chipidea/core.c | 80 ++++++++++++++++++++++++++++--------- drivers/usb/chipidea/otg.c | 2 +- drivers/usb/chipidea/otg.h | 1 + 3 files changed, 63 insertions(+), 20 deletions(-) diff --git a/drivers/usb/chipidea/core.c b/drivers/usb/chipidea/core.c index ae90fee75a32..80267b973c26 100644 --- a/drivers/usb/chipidea/core.c +++ b/drivers/usb/chipidea/core.c @@ -637,6 +637,49 @@ static int ci_usb_role_switch_set(struct usb_role_switch *sw, return 0; } +static enum ci_role ci_get_role(struct ci_hdrc *ci) +{ + enum ci_role role; + + if (ci->roles[CI_ROLE_HOST] && ci->roles[CI_ROLE_GADGET]) { + if (ci->is_otg) { + role = ci_otg_role(ci); + hw_write_otgsc(ci, OTGSC_IDIE, OTGSC_IDIE); + } else { + /* + * If the controller is not OTG capable, but support + * role switch, the defalt role is gadget, and the + * user can switch it through debugfs. + */ + role = CI_ROLE_GADGET; + } + } else { + role = ci->roles[CI_ROLE_HOST] ? CI_ROLE_HOST + : CI_ROLE_GADGET; + } + + return role; +} + +static void ci_handle_power_lost(struct ci_hdrc *ci) +{ + enum ci_role role; + + disable_irq_nosync(ci->irq); + if (!ci_otg_is_fsm_mode(ci)) { + role = ci_get_role(ci); + + if (ci->role != role) { + ci_handle_id_switch(ci); + } else if (role == CI_ROLE_GADGET) { + if (ci->is_otg && hw_read_otgsc(ci, OTGSC_BSV)) + usb_gadget_vbus_connect(&ci->gadget); + } + } + + enable_irq(ci->irq); +} + static struct usb_role_switch_desc ci_role_switch = { .set = ci_usb_role_switch_set, .get = ci_usb_role_switch_get, @@ -1134,25 +1177,7 @@ static int ci_hdrc_probe(struct platform_device *pdev) } } - if (ci->roles[CI_ROLE_HOST] && ci->roles[CI_ROLE_GADGET]) { - if (ci->is_otg) { - ci->role = ci_otg_role(ci); - /* Enable ID change irq */ - hw_write_otgsc(ci, OTGSC_IDIE, OTGSC_IDIE); - } else { - /* - * If the controller is not OTG capable, but support - * role switch, the defalt role is gadget, and the - * user can switch it through debugfs. - */ - ci->role = CI_ROLE_GADGET; - } - } else { - ci->role = ci->roles[CI_ROLE_HOST] - ? CI_ROLE_HOST - : CI_ROLE_GADGET; - } - + ci->role = ci_get_role(ci); if (!ci_otg_is_fsm_mode(ci)) { /* only update vbus status for peripheral */ if (ci->role == CI_ROLE_GADGET) { @@ -1374,8 +1399,16 @@ static int ci_suspend(struct device *dev) static int ci_resume(struct device *dev) { struct ci_hdrc *ci = dev_get_drvdata(dev); + bool power_lost; int ret; + /* Since ASYNCLISTADDR (host mode) and ENDPTLISTADDR (device + * mode) share the same register address. We can check if + * controller resume from power lost based on this address + * due to this register will be reset after power lost. + */ + power_lost = !hw_read(ci, OP_ENDPTLISTADDR, ~0); + if (device_may_wakeup(dev)) disable_irq_wake(ci->irq); @@ -1383,6 +1416,15 @@ static int ci_resume(struct device *dev) if (ret) return ret; + if (power_lost) { + /* shutdown and re-init for phy */ + ci_usb_phy_exit(ci); + ci_usb_phy_init(ci); + } + + if (power_lost) + ci_handle_power_lost(ci); + if (ci->supports_runtime_pm) { pm_runtime_disable(dev); pm_runtime_set_active(dev); diff --git a/drivers/usb/chipidea/otg.c b/drivers/usb/chipidea/otg.c index 7b53274ef966..622c3b68aa1e 100644 --- a/drivers/usb/chipidea/otg.c +++ b/drivers/usb/chipidea/otg.c @@ -165,7 +165,7 @@ static int hw_wait_vbus_lower_bsv(struct ci_hdrc *ci) return 0; } -static void ci_handle_id_switch(struct ci_hdrc *ci) +void ci_handle_id_switch(struct ci_hdrc *ci) { enum ci_role role = ci_otg_role(ci); diff --git a/drivers/usb/chipidea/otg.h b/drivers/usb/chipidea/otg.h index 5e7a6e571dd2..87629b81e03e 100644 --- a/drivers/usb/chipidea/otg.h +++ b/drivers/usb/chipidea/otg.h @@ -14,6 +14,7 @@ int ci_hdrc_otg_init(struct ci_hdrc *ci); void ci_hdrc_otg_destroy(struct ci_hdrc *ci); enum ci_role ci_otg_role(struct ci_hdrc *ci); void ci_handle_vbus_change(struct ci_hdrc *ci); +void ci_handle_id_switch(struct ci_hdrc *ci); static inline void ci_otg_queue_work(struct ci_hdrc *ci) { disable_irq_nosync(ci->irq); From patchwork Thu Oct 13 15:14:36 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Xu Yang X-Patchwork-Id: 13005698 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8B93FC433FE for ; Thu, 13 Oct 2022 07:12:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229676AbiJMHMs (ORCPT ); Thu, 13 Oct 2022 03:12:48 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36324 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229545AbiJMHMq (ORCPT ); Thu, 13 Oct 2022 03:12:46 -0400 Received: from EUR03-AM7-obe.outbound.protection.outlook.com (mail-am7eur03on2049.outbound.protection.outlook.com [40.107.105.49]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DC8B6FFF9E for ; Thu, 13 Oct 2022 00:12:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=j61Kr2WLGU6F2IAWFqh1KSKmoWdgPIEUph+nBRnsKWq4gvdnyzw8g38JZWNtOedeK51GG0pZiw3TRbF9oj7p4y5oGWbpieTP0Q6C4gy9RmnCykZsiZjV4L/cpg58OeAvVTPkQBXq3t02dob4NBVB5WcTYm12HdtrnXSrMLlx8036SRzk314byO8kPxmpxhKecU9oWZ/YcZDVwiSwj4+NAw6ijJdVnt/iJv1EX5qLn7w7nQqir3xfd508bWq/x6o02VuoPhDZzKV5kuBzGiC9su2Q4NVRX998rj08M/mKpNGnE2pW4vfocvu8QbzjkXdl4UGxm5CFvjPirDiMsHt36g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=WM5HCoDBRq2Rdwg53v786EuELZBcN932DmTQ25bUfxk=; b=UDimFJjXF95LqL+koKSGd2mP3iIBtn1d/N0g9UVsV0r8rCRhkK2S6RQLYtXqJmOszBAgR90k83FrBRzP6b0vry3L+4FtwSjzj6SJSalV9oWlcPfSJw3ny5iQU6Pcnr285SXhxayLTHwh3XoMXbD0KLyGPvNCa4SZ5rRU0hh3Vxy/a58vOGHGfTyUf7icTW6RYsnD7kuG0wF+GgZgE3wl7M1iBJTGO78Sj7kyhy2Ekw6rVGFESbbNgZxUkmIw++nXTMsUv4gGiWby1vXbJ6KvZ3t3qh8+KajKxCMfYMKuz/ws9l78aAnt/N8huQmlWoP+ViHQD8leAtPFEC8i+8viWQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=WM5HCoDBRq2Rdwg53v786EuELZBcN932DmTQ25bUfxk=; b=CC3EZ/H1YrsdYfd2lG67VpVEbac6IzggInQInW3q3Yk/lAGXdT8Cyjo7ZiGkWGOoIC/EUBAW6pVo3mhAZad2/8xCfPjF0mODORykGGq0iWHzx2SehTGEtYLBZ4ZLWzCYadwE9XRIqOKYLvnRIeSol5Ao+CPQNzuIT9dy+VgFI0E= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXPR04MB8784.eurprd04.prod.outlook.com (2603:10a6:102:20f::23) by GV1PR04MB9151.eurprd04.prod.outlook.com (2603:10a6:150:26::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5709.21; Thu, 13 Oct 2022 07:12:43 +0000 Received: from PAXPR04MB8784.eurprd04.prod.outlook.com ([fe80::855c:7884:639:f875]) by PAXPR04MB8784.eurprd04.prod.outlook.com ([fe80::855c:7884:639:f875%7]) with mapi id 15.20.5723.026; Thu, 13 Oct 2022 07:12:43 +0000 From: Xu Yang To: peter.chen@kernel.org, jun.li@nxp.com Cc: gregkh@linuxfoundation.org, linux-usb@vger.kernel.org, linux-imx@nxp.com Subject: [PATCH v2 2/8] usb: chipidea: core: handle suspend/resume for each role Date: Thu, 13 Oct 2022 23:14:36 +0800 Message-Id: <20221013151442.3262951-3-xu.yang_2@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221013151442.3262951-1-xu.yang_2@nxp.com> References: <20221013151442.3262951-1-xu.yang_2@nxp.com> X-ClientProxiedBy: SG2PR02CA0091.apcprd02.prod.outlook.com (2603:1096:4:90::31) To AM9PR04MB8777.eurprd04.prod.outlook.com (2603:10a6:20b:408::20) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB8784:EE_|GV1PR04MB9151:EE_ X-MS-Office365-Filtering-Correlation-Id: 73694c24-0272-470b-41a1-08daacea523f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: NBZwvxMzlSVEW2242QrMdtu16w9uoRiNeqFOJ+XSaHKUezXm2kz8spbUMB2IefSCjT3zFkn8qa0aSKB5dYwP04OKDvT3PERn/QhqOgfpWYJdHpbug0DilxPY60ZGCC596cVaZHZuXTWFN0NWIBwcrkft69/T5GbPKPtxQa2GBozIupYpSqUUZTpKivPlfMmlJqPWk4Y0unJdr36fgbWY4lGmIYgZbatuZiuS1rplYJFHdPG36wyug77rXcTYz6FtFdA75p5e3ufy8Eg7Xx2OGNqMZyzFCMXUQw4lr+dzLGQ5NYRcfxrv/VJVzsTa8+wLc1nrqV4h3CPBC22yirl4Cc/xq+aDmAy6kX/emzjiV0/ueRnFRKQjZOszzNyyCrjc+AfYRRUQqm8rZop8gYmJSaTQN5e73yM5j2hIPi+1ahYW0d02q8YZg7oGbHh2ZLxnGeCCb9/JBHQztfJ8XSeIfN5gGvPu3FBsscbVhOJgUuL5UrovfCDkwtRbIpyVSSNZvIfVWBtiSGe7h4JYvAj7o8Ro6oiQxIkrpf2+IHC++3ERvp72hvgGLnrJNCg5sydYhbzhuEk7NwDqZhgac63KjxbtuKN6m7YYcv+M1YMqKONKz9S7u1Vaj8Mkgne/04fxyY7qnBQ7l5bBpSXxE3MF5dIyhOS64kQKgO9MbDgnw/djVTMFo20h19Gjpv12l0Ya0JiIWAaDDBBpLnIzaArkA7yB857YU0vT7pLoBmpXw6Fo3t8HuME6KL8BwSZkmbKSPKPXwJ3QyWA72igldLolyg== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXPR04MB8784.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(396003)(39860400002)(366004)(136003)(346002)(376002)(451199015)(6636002)(316002)(38350700002)(66946007)(8936002)(38100700002)(15650500001)(2906002)(41300700001)(4326008)(66476007)(66556008)(8676002)(5660300002)(6512007)(186003)(6506007)(52116002)(6666004)(26005)(1076003)(2616005)(83380400001)(478600001)(6486002)(86362001)(36756003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: qb3kLtaWKHL3Kd7xnHy+RGn7BDDDhcuvr83RVOvOV8sK4IjdufZomRDz4kau0hB7+21fxy/R66eaWRbPwgaJQDZ6qdbvkrOx++X4xZRHTlDRYoOP2e/FtJlOF7UJaKtRF/9j0NG3MdD3KQ+5ygnBW8abEYsBhGyoNjcbsmWXedBKiV7g4GzJHlphlzMqhRk/aFrXLz6F5N9pNMe/nBi5Wtpyb4MffZ/PzSzB4csaYRI8pFwbKxSUVg9THEzm4ANyFZipxZVS6PhI7bj/JUL9e57Vw+jeBpGxGOqsQkPt9uKnk9HjG29HfLbpZzPf6Sfrts8r1WzgYA8RBoIC7qNJeRERYo/4fTSpXL/efP10qZWqibgtV4vTCfAMbSSUnzPFf69/Su4UOGmIQRdpUF2Vkry7lIv7/pVxEN/SM/YyMFKgwjhb45Z9DLjPX+kQubZ/Z1yGgxYN4X/CaQstoIjbRWoujyeViPz0b/KaXmleoJFkKMXQpgWtofeKscxDFRzBSwFzLeYFUEqu0L3ePa64b4YbzASOy8PueeDLnpOUK+zq6M5zxdPpwELVYXXT8x4XCf0juiYM4UTjvEX73/GOPRvLGJBlooCt3H9IU8i4azVgP8dIV7LptzdbOxk2KOlwjSO3p24Pf6hx0L1rHCJRLOA5rhxTcpUdcuDkdKq2onmwfJSI+6nCnlanf0EUq/ju5AqlKJnM/ACAW8NhHKmucMzd5eRZMTMB1xiHt3/Y83sWLS1kXMqazOB6Gkmkm8TztU0toiPXADtXxp4BnyJLPwbFn9npCoeOrBJ5spyOYR7cRC+QqfI2qcpGONdX713YtPJZdSq/aVNb4dc3xslEnDcKf+UBXNurqT1axzKiPqwXgzWU56XUrc0yJzmzIUCyCwDbnSvvgY0lfVT2JAX7C3AVPa3Q5kfzwHpNtGbCkKYmJByx2HxLK0q7IWYDyV/AWsQkABhiOKJK5x1HO48qhU3cya3GJQQ88o6w6JtkF68doSbZftLjpoa6hquBMma+Oa9IPWL0Y2N7F6HkpyjQoNhVmK86KtbwrbPrZz+RcNOGfuQEjX6gMhDwcVgNd84DNnCRvcim7QGqOpDqBeshf9a3nHNP1+Q12oLvUuDiSNEzFDnBge7PnoK+hDagGgdcd3Z7p865IxzbdS3JMiQP4evzuLygdz3MjpsIJbrXwhJ/O8S6MUSBTaQ7XcWb33ZvpBRxprSseS5GDdVTh6FFaoKeYcL2Y7F1icjcWNZStF2hyP11pkPRfh7x8FBJlfRGGHonYgNWlyrCUn4aoZpem53l49ockHIaSWwj6gbuf3nCiJPo9oMnWiQ2DYZgxtKrsHt6ionD7p1+Aa9ou56Gg+TecZdPxuwpicmPDk+yBZrbuvmQwwneImMvoaxKAj/q6cbCfXhwSgQjszZp49JkpL4hoLwpLUO7iq6iBtLd84I1MSlXkhBiPka1kCzIDljZv+4DFY57weZcEDtWeCL97ToOg0FKg7byhMEf2Hn282RHbD0cKYxbQObpjfOBLfyCotNIdssOWAqFYwK1Hgrel8uxTK7wXjsyGpMgMzYj7Rv+/lIZZnun5VmZZ5PfRkdP X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 73694c24-0272-470b-41a1-08daacea523f X-MS-Exchange-CrossTenant-AuthSource: AM9PR04MB8777.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Oct 2022 07:12:43.3725 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: puipm1PtxEEKDYhyaCav/WMYPaDWXJzz5wj7jzMCrr0xmKQYvWqynTFDImEwvuTt/rUfTAalwHNfzjOWVkvCng== X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR04MB9151 Precedence: bulk List-ID: X-Mailing-List: linux-usb@vger.kernel.org There may be a need to handle suspend/resume per role. This patch will add this support. Signed-off-by: Xu Yang Acked-by: Peter Chen --- Changes since v1: - No changes. --- drivers/usb/chipidea/ci.h | 4 ++++ drivers/usb/chipidea/core.c | 8 ++++++++ 2 files changed, 12 insertions(+) diff --git a/drivers/usb/chipidea/ci.h b/drivers/usb/chipidea/ci.h index a4a3be049910..005c67cb3afb 100644 --- a/drivers/usb/chipidea/ci.h +++ b/drivers/usb/chipidea/ci.h @@ -127,12 +127,16 @@ enum ci_revision { * struct ci_role_driver - host/gadget role driver * @start: start this role * @stop: stop this role + * @suspend: system suspend handler for this role + * @resume: system resume handler for this role * @irq: irq handler for this role * @name: role name string (host/gadget) */ struct ci_role_driver { int (*start)(struct ci_hdrc *); void (*stop)(struct ci_hdrc *); + void (*suspend)(struct ci_hdrc *ci); + void (*resume)(struct ci_hdrc *ci, bool power_lost); irqreturn_t (*irq)(struct ci_hdrc *); const char *name; }; diff --git a/drivers/usb/chipidea/core.c b/drivers/usb/chipidea/core.c index 80267b973c26..2b170b434d01 100644 --- a/drivers/usb/chipidea/core.c +++ b/drivers/usb/chipidea/core.c @@ -1383,6 +1383,10 @@ static int ci_suspend(struct device *dev) return 0; } + /* Extra routine per role before system suspend */ + if (ci->role != CI_ROLE_END && ci_role(ci)->suspend) + ci_role(ci)->suspend(ci); + if (device_may_wakeup(dev)) { if (ci_otg_is_fsm_mode(ci)) ci_otg_fsm_suspend_for_srp(ci); @@ -1422,6 +1426,10 @@ static int ci_resume(struct device *dev) ci_usb_phy_init(ci); } + /* Extra routine per role after system resume */ + if (ci->role != CI_ROLE_END && ci_role(ci)->resume) + ci_role(ci)->resume(ci, power_lost); + if (power_lost) ci_handle_power_lost(ci); From patchwork Thu Oct 13 15:14:37 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Xu Yang X-Patchwork-Id: 13005699 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id D5EC1C4332F for ; Thu, 13 Oct 2022 07:12:52 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229618AbiJMHMu (ORCPT ); Thu, 13 Oct 2022 03:12:50 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36372 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229663AbiJMHMs (ORCPT ); Thu, 13 Oct 2022 03:12:48 -0400 Received: from EUR03-AM7-obe.outbound.protection.outlook.com (mail-am7eur03on2049.outbound.protection.outlook.com [40.107.105.49]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0DF20FF8D9 for ; Thu, 13 Oct 2022 00:12:47 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Bu4DpN4LJzPak0EqptqWFoB7C5ou688zRcm1zZwv/ddNSv3IGAUbzRiupfZAOotThkAZQ/k2gYeJ+KfNEiYp8svRX66fHR6E+9sjdAA6RztjykfuD2dNNx9ICQfpbYZ04/BQOzDsnV/AG7ocHNSzqVHFfuK4gFtkoKpQOtPA9o2sek5x/VxCu9G8ADLJVoh5//dvpEWaTe2sTP/MIEClwl+cZcil7l3k9PGfFL3Sii9zjxbSSbhmUfoMK5XKWV3JTBnEOLYrFMAcZLlne+suCMOqLysj7hXInMvNvBuBX8Ba3EY1A/40MotwKMyMo9AHYai7OI+HwOENc9doV04dSg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=SUpR4uRS1DZzx0OzrwfstvoQHQkSSU9yC7liSc80kEw=; b=NwsJJZgNQqSXjKe4Qitbhk6cXR29w3n+152359YB2uE4KrjU98nD6ilWFXF+l3oUkYsNFWvI7KxIkKeYvZaLEyGWb7z+boi2YCVAcVv6gqnbSQ9QhQQEYL1MgSFAlGe7Y2wTBKD86wh3MkMrKVg+DCuD72WtzOJLvcu/gINEpVZhYvWELYbqqrnUNyU73SiW5krdV1vxnipGnPFBVnbLyuNDY0WjXnLfnRzX8kXVWcihxBusNpteEgh1io58niKIpOBA0H2nmIisyDfgOI9lWor6Irb7hdw5dgNVB1tDLN2Cltf18hxyZ6aZKHfn7Hlv/tn4evA3jOnMvzywc0v1XQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=SUpR4uRS1DZzx0OzrwfstvoQHQkSSU9yC7liSc80kEw=; b=aFFQ0fKhJjz+GPImVZ26PJCWiLaAfijPlNga4h/XXUu8wJBCPJdCuCvT8ehC3qdCZ+IpZdDmUntQujiLn+VXifNShiivz2FBn+1Q7vz9kmgPP0auLGgbHtORz1XIur0pn4XSPEutM1Fuc3cq/OVZvr8LfyOfoC0mwT25We2tLxg= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXPR04MB8784.eurprd04.prod.outlook.com (2603:10a6:102:20f::23) by GV1PR04MB9151.eurprd04.prod.outlook.com (2603:10a6:150:26::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5709.21; Thu, 13 Oct 2022 07:12:45 +0000 Received: from PAXPR04MB8784.eurprd04.prod.outlook.com ([fe80::855c:7884:639:f875]) by PAXPR04MB8784.eurprd04.prod.outlook.com ([fe80::855c:7884:639:f875%7]) with mapi id 15.20.5723.026; Thu, 13 Oct 2022 07:12:45 +0000 From: Xu Yang To: peter.chen@kernel.org, jun.li@nxp.com Cc: gregkh@linuxfoundation.org, linux-usb@vger.kernel.org, linux-imx@nxp.com Subject: [PATCH v2 3/8] usb: chipidea: host: add suspend/resume support for host controller Date: Thu, 13 Oct 2022 23:14:37 +0800 Message-Id: <20221013151442.3262951-4-xu.yang_2@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221013151442.3262951-1-xu.yang_2@nxp.com> References: <20221013151442.3262951-1-xu.yang_2@nxp.com> X-ClientProxiedBy: SG2PR02CA0091.apcprd02.prod.outlook.com (2603:1096:4:90::31) To AM9PR04MB8777.eurprd04.prod.outlook.com (2603:10a6:20b:408::20) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB8784:EE_|GV1PR04MB9151:EE_ X-MS-Office365-Filtering-Correlation-Id: 6e744b56-2a6a-4c37-aae9-08daacea53c1 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: yShExSoZwlYLk21H5tL4VaMMje8+b7kzA5/8W65gyxJCiZde6MaFvmt6fDgme0e0Qmz4BZre6/jr/0zLPhXKnSGOmqGHwswqBtBgZzOMe2RZ23fBVQj9hBOexpaMEggt1SoN1+QZ/ROtfUsCyqzLQrFYi8WKwW6iWUqgK7QXqoFjdIkXMKl0nw4M1eUJFF8c6TSd0eTWCXpBAe9StstA1+CTEqFUlkI+FKuxa9h7YfPjMjoBeebGBCW+1t00JQ2izXDXBuYF2sV5XmCT89Hmmk40pZ/dgWDntpOkNRN3zOz603h3//+svAh6tI2xAI8DHoQzlB6d5ANhOcYMkelgSF8MqkZGumqhw79E4927qLPfkknE3seMzJZ8oPBPRso36WP7/Ypsmn4f1ySmx7Gaap2MMK2rXowq4pEZWd7aJbnImPCp3SXKFzfCO4ZT3CTjbOfRmsHOOqY80FqyvhRL/WBsIePxzE9A6n0LwcKgsu5bHv22DjA6Tueu7oKwXetWeYcnq+a2WwGzSTTThTWxWyRnOro6jbyKiXgKn2Sd9K7FMNeGuNUmr1UPzYDcvWQWU3JohXNoS3M0YIv1NIVgMpCGZ+mZCCqfjxAR8GvC4sOnSPWZSFMKLeLYyllOtSewc4g9qSJf8fjityP6uGJxnRu5uEaKNWrQOVpLrCVop5iMX83uPXRqBw+iAnUfglkEBWMG5WOZebSGCNqctlfq4i9rrfJ283JluT4Kb10SR6FzwiBrH1vQClLsNCoQWJJThFTA0MCE/kK9jKE78BQF0Q== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXPR04MB8784.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(396003)(39860400002)(366004)(136003)(346002)(376002)(451199015)(6636002)(316002)(38350700002)(66946007)(8936002)(38100700002)(15650500001)(2906002)(41300700001)(4326008)(66476007)(66556008)(8676002)(5660300002)(6512007)(186003)(6506007)(52116002)(6666004)(26005)(1076003)(2616005)(83380400001)(478600001)(6486002)(86362001)(36756003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: WTBz+Z5CY/wwTEkljDtCr/4Oj2OsDMLcBO1813LQ8r5GVLTHjjZ114ORy+XvOqcZiigcT3TDGZLc7cw+VYOjX5Vf8IJA9tGV3DNeo7NyMPrQbb92uDwshoGY4de8E72LpgHg2B+NpcAeAQXhc63jEnoH9jHtN/d/NLCW7PKF1sxx4AffAq1x4tHO+JCeICT3cGRifWsUoufRLlGwTrw3XKJ+VFyIU1rQ2uVIhaQOUrevxfXBunTXgyWA5oSS7l2rDLS6eoTwTLrx4QwgPnP2/STE25VqeQm3JhGNfnDuiWpQTxjCJyq4WaC+uOLpBLC1pgXVrQF0g+xgkiAJpQ8LOhjhv4OQO6Jz28h0tKkX/ywkR4LS1GlN0kX7cYRvgXxPTnR1m70W1lm62fP4P/VjwD3+ysmZ6yEcYIYhG6uENsgzCis8gLjZeWCqo2m4co93MYPqiI9D8kompC9O3ayrkmky3TLg++rXOp9FSvBMVzWx72DNN9Bv41U3IA8noWVjwnP1b6v4JBiOJK1xZeW1DOwkniuD/pE38uZMaKaXs3smkKt6gfsPAifcVB0tlWgOUtqaXLizc4cz2ZpEJ6d1azWEiwzQkIzSC0Kd9FYngSAYGScIgLCulJoL/OAk1T9lkCK6zFfqA7Xm8QCU3lHqtvz4O6fDS15av47dsCEmtfHLYW+86oqg/aIyJcn/qbPY5hOIEiV/6FmkhJiQfX3piF+PBXQCgRQrrdkgg8KI6uaiR46Cx11O8RrOsx2HdJVeD7nLllnyTCeLhA0M9kBKWpCR3xnY1g7G+jRhidnSGLNI6PqT1JCML7pTSPxQGfzeH/Bi7i1r7yDn8Eey9Rwml41KAjnceDSFRJUpZ8kcwYFBd0MQoJKbte8N6sLRJRUPzYVi3nNiBFWVDlvZ3DHuFZorTWwsmF1UmyIIS8g40On3l5st5AZB7n8ksMOgL20YuitGumHrJyEJxilO6GrbAIio0xJj3bSnkvaU0Kc/GZCp7XakLvieK5qJbSIuO4XIbsE5W3eQZwb7USqPrKSa9PNVpb0atkllOMbGqul7BVSk+wDnAerKknxoynHl/tHoqCZVbIjjzT5FFH5K1eQBlWT1hXWsRNYvij5Xvx+YyVkO0DcI2i3EycUrAa5wtbNiPbUgOuSGpkfXC12Q2/t2DhALfEgMSekjkF6XyGeRWRjpfoy+vrr1mYFRSi/kUg2Ae8s34n6/wg1FGjUfpGOY1s3uAc2wcvJUJVVsS0FGXtg0T71nfhjfBVdkWPHUwFztpbrELR3FlJoKN8xBcw8DUwkPZrCSrUZR6SlJD4KizGNdYMWXDwdQTfiLQGo2NWGb7wGVYH8Rcx/yww0F17sRbN7wZ4K4pdPfrB92rEEOb5wjIUxnKWvI/wMYVpwA2XvXKYDjA4CoQmhoQYsHnJH/Gu/pa04FIHRHP9j0HrmwvchWL6OdLQX+h/Zt9WXD2gwjQWjyFUadLgQn3ZkZm54aq41MIafhXyWXVjHV5HvuZExA17X1/zyfcyTdSac6zdynh6Ko83d5td4xkoQ/ZS6RLLACgx6pgWHrfN7Ayj7FDurm8BcXZRIE0sz/hN3K2CAF X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6e744b56-2a6a-4c37-aae9-08daacea53c1 X-MS-Exchange-CrossTenant-AuthSource: AM9PR04MB8777.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Oct 2022 07:12:45.7803 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: xqUPLNxABQcT2WJIig34z13Tsc7o+lSV0n116zrR2PPz7CAXnJEzRQEMpZJ0yeboMAVUlQs16nJTHaBkNIQrpQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR04MB9151 Precedence: bulk List-ID: X-Mailing-List: linux-usb@vger.kernel.org The controller's power may be powered off during system suspend. This will add suspend/resume support when the controller suffers power lost. Signed-off-by: Xu Yang --- Changes since v1: - wrap suspend/resume functions with CONFIG_PM_SLEEP. --- drivers/usb/chipidea/host.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/drivers/usb/chipidea/host.c b/drivers/usb/chipidea/host.c index bc3634a54c6b..ebe7400243b1 100644 --- a/drivers/usb/chipidea/host.c +++ b/drivers/usb/chipidea/host.c @@ -459,6 +459,18 @@ static void ci_hdrc_unmap_urb_for_dma(struct usb_hcd *hcd, struct urb *urb) ci_hdrc_free_dma_aligned_buffer(urb); } +#ifdef CONFIG_PM_SLEEP +static void ci_hdrc_host_suspend(struct ci_hdrc *ci) +{ + ehci_suspend(ci->hcd, device_may_wakeup(ci->dev)); +} + +static void ci_hdrc_host_resume(struct ci_hdrc *ci, bool power_lost) +{ + ehci_resume(ci->hcd, power_lost); +} +#endif + int ci_hdrc_host_init(struct ci_hdrc *ci) { struct ci_role_driver *rdrv; @@ -472,6 +484,10 @@ int ci_hdrc_host_init(struct ci_hdrc *ci) rdrv->start = host_start; rdrv->stop = host_stop; +#ifdef CONFIG_PM_SLEEP + rdrv->suspend = ci_hdrc_host_suspend; + rdrv->resume = ci_hdrc_host_resume; +#endif rdrv->irq = host_irq; rdrv->name = "host"; ci->roles[CI_ROLE_HOST] = rdrv; From patchwork Thu Oct 13 15:14:38 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Xu Yang X-Patchwork-Id: 13005700 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2D018C433FE for ; Thu, 13 Oct 2022 07:12:56 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229663AbiJMHMy (ORCPT ); Thu, 13 Oct 2022 03:12:54 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36430 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229537AbiJMHMw (ORCPT ); Thu, 13 Oct 2022 03:12:52 -0400 Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-eopbgr70053.outbound.protection.outlook.com [40.107.7.53]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 40C01FFFA8 for ; Thu, 13 Oct 2022 00:12:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=SAJKGb4D3SGvFQATs8SOpKt+M/Ab+gEdb6w0nh5Qk2c1tTo1dd5T5eYg2v4683noaptRGjXuhTOzYyGztbxJEYzrj/vWPKcYizQuuXqrk5gCjZZTzdtqSz2J4SaoZkQyccu1knUJ5dkId9xcN+YoZcOs2YrBzXp170XtkCJ6HGjxZCzSm3vmc4aVjiqldfXG/Le12u5q1ji8G9QY+PIUVsWIUCdvegh7LxZ/Ykkjvny3RTelv/NYtcPzvs2ZGyygthUqNcnuCeka9i7l7uLM7lukIYqUoxzO58mMKLhv1J2R6ipn7hqzQTp1z0kmkvytO888vA26ZmEBobxdoz3CQw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=GfYA+GIHOeQcAxj9ExW37cHUeUtzEjYUOWy088eb/00=; b=elOBQM0wsClRIEyGr51DMk2cJiJG3jvizky8fPT19L1XXptYN5v+oJN2/L955RxqfYFhPZ699Xr7bMCEE53d5tXnw372rUm1d8iH4XBM41ATOkbj0LbwfZ6i7d78uXG+ulUEg2PVSHVBUY3iEYq+cg/pBQyTiyYwFqlj+pU2Xfrj7E2QY1Btce9hu1UQTDdD82fcSfyWbsCWqoEom35ymyxyVBfWn60ghUFltBOW2GbyPe0qvht76qZGnH3YUCh+cMBCBcXKQ1B8p6BW0LE3CpZ0kE5mns/Adl4dU/DtsmUjYnQM12vh5ng4ADZelTsA8ufQSxWY16Dm7kBSm03ZPQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=GfYA+GIHOeQcAxj9ExW37cHUeUtzEjYUOWy088eb/00=; b=E+gpk7/ybgzmliN/TQ7fIu6bDVt2xGNpWPvt/hShW1lqo9p1JYdxTWzk5CTyBiAFuCrHDOdLWCbWGBpaCelT1YJRgilu3W1pqYgp9B5S6GQY6KRmykEEL/ao+0mYBsFwegMjla8/y91Jfqycl2wVrwb3jP+XZIhpsc4M8UNK4eA= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXPR04MB8784.eurprd04.prod.outlook.com (2603:10a6:102:20f::23) by PAXPR04MB8444.eurprd04.prod.outlook.com (2603:10a6:102:1db::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5654.26; Thu, 13 Oct 2022 07:12:48 +0000 Received: from PAXPR04MB8784.eurprd04.prod.outlook.com ([fe80::855c:7884:639:f875]) by PAXPR04MB8784.eurprd04.prod.outlook.com ([fe80::855c:7884:639:f875%7]) with mapi id 15.20.5723.026; Thu, 13 Oct 2022 07:12:48 +0000 From: Xu Yang To: peter.chen@kernel.org, jun.li@nxp.com Cc: gregkh@linuxfoundation.org, linux-usb@vger.kernel.org, linux-imx@nxp.com Subject: [PATCH v2 4/8] usb: chipidea: udc: add suspend/resume support for device controller Date: Thu, 13 Oct 2022 23:14:38 +0800 Message-Id: <20221013151442.3262951-5-xu.yang_2@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221013151442.3262951-1-xu.yang_2@nxp.com> References: <20221013151442.3262951-1-xu.yang_2@nxp.com> X-ClientProxiedBy: SG2PR02CA0091.apcprd02.prod.outlook.com (2603:1096:4:90::31) To AM9PR04MB8777.eurprd04.prod.outlook.com (2603:10a6:20b:408::20) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB8784:EE_|PAXPR04MB8444:EE_ X-MS-Office365-Filtering-Correlation-Id: 47f20dd4-3b81-47aa-31de-08daacea5571 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: zfEApHOq0DrGwnw9JHaoYu2ZM22jOsL78X661vEhu+BQZ8gY7hpcqk0cJMva30CFvmfRsqDFfPvhnxXG+xCLlpvQg/Wrj1bE6EbK2NgjGrIF1ObwrBmDrIogsCzOfORRMPJwZp4MTe4XqP/wGhpjFiTAghosgtTbqzgvKBkvYLjp3Rg75pJNr2Op0RkVfnsjE89DUKbb9uzZvTBYLTYj70eMgv55BAfUoDL51RvBBI9HNY2jESVeh/ZcNYippy0v2ehWJkHKvAPBv3dscUdeKPjqZgHJu7bFVeNJdKEnRkomRiIlbOpzMQNoRefmu4Z7WJZbHUBj36jRZnK4dK+iXzGCrEh0OpA5U659fhC3yu7fUqZOOv3WK+1pCwel0Ck1J+PRyvaBugzzvS+Qd1sGVIaEWLVTjtoD99OeB8FdWABVZz/phu92W9zfyq+7ucFzwCpREVcnxT3/U7DBuV7uvOVMbbqaCWpfBdoWgtF/d4n4eML6YevFifRQ/RgJGccYq4WzQCcopF4soFLs84KIcnmwnaWBHR6EkJbtxTUN6rnyLDt/TH16/f/XFUhEJweYR0lFi6a/ROl2OBqhGXaDPcx4x9da1Cw7R4ZFmELB8t4UV2ojajitTv5oR+0K7knAsiHFwcypLCaL+19WSFQLJ4t7Ndz8YR1et0Y+nLsSu3MZUPtm8pUYiUpYmgYUcbpzJJmDe40jfHiUE29Ev9OvFKI0HhHKeXIMymfcOuG6DyUgmdQoYw/Y0wGkPZSZhoKZ X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXPR04MB8784.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(136003)(346002)(366004)(396003)(39860400002)(376002)(451199015)(41300700001)(26005)(6512007)(36756003)(6666004)(478600001)(6506007)(52116002)(6486002)(38100700002)(316002)(38350700002)(186003)(6636002)(4326008)(86362001)(66476007)(8676002)(15650500001)(83380400001)(2906002)(66946007)(1076003)(8936002)(2616005)(5660300002)(66556008);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 5OlNpebN24989wBpOmnbL+zIT9BfNcEYxy4vgcxEZ4bdiy5mmNuuQDcZutW4HkUTgBRFSMcn5cTEaFA3jcPSrJjvNgtjPhsVPRHowVu8+qHMTLKV38kcZfQ1NBne2k77NVM7Ea5eI/RJNDMHxlGklbF1HRIVvNHr2YtJ2wgNaBFrrNMlLnNVPncMPgDY+UezbZv+FxKZuwHikxfD07Bs7rGoL5VrZWRV630y/sdJTD1v6aLJVRQRGfM4u56DvnQfRRNFaEgWyn9zLtcFRNJ+CvUlqzH+k2xs03hLSsUL2LCU3rc8X25mQxgFhDjTG/QCD4RrJMrckKVsUvwK62+YrAAt7E3QRL2obVEM4g/+YYMrJiNqjipVv+DhZWJBL5Kqtu7Lq0FVBvU7hJam9dmKmYGev3KqA79Dmr2/ZAQakfQQpfte1pEWxvJkrNQA3KfCCJYvuV2uT1LkbBDqDRNCYzFFiz7pDJ/Qcsi01sx+HIozdjCEWir5tmcmAK44mxPh+0AfxgzEE1lDNSwh3PReBDFWPRAUfc0VhNJlDXYVbSwQgtLZdXAlaQIb5nNH9o1FTBryJ3IxsrLA3bfuyOO49ZoX2wpsEDOg9JnnMrWxVKRq36U8njThzxFntYdd7egJN4PaTJvabfdiOrI4xdYnbMwwFAq520C+EYZiCqwQo+bqCiW/yaAGeorugsyJitBF2uMWQqKCbMLiISBlhjnJLEDog8D2M5k2hxY+UEkqEXWGwDiK6OxZHz/DXV2R7ghx2CEtc4ZKixk1SDk77VIqQjsXEvQX3REq/uMxBWv0iU0OJq+9q2WRHrSLLhzPimc4TQ80/nnFfktNWJkAaFn+x1L6SUWaTJYisywyzU+BnuuNTdXlBN280cykY4TJHyyGeSME2nFhHLyGc/8f4uAQiBixEIMjizJHGza4pdZP2GPLwxnkgfza0hRZ5g4eb6hoe8/0zPXCD9AGAtPBSQYel/ec2/oEB00YIaXvC93N4B5J8MKbqYxhCfb5v6SkHSMhxvuu/k0svVMQlk4f76w8WCuHhjHYq+ezydo68mrDKr7c7zmOMQcsvrhPFXIBiWW+mwMKI+IxXos1FmthGUfCp1Gbb3ioyRzuqE31SLwmC6nt7sS10cBFBqQg89XLf7sinQNqM0dnZt1OPkwe2BwKS6a+qDNWNuuzInapHNvMOQfHaWSUEerm3iPssFsnZ4ONs8GHzmgHZD7FilszRla82v+dL15AhIOZbYlJkxY5qPqeGBh2tmkzbu/7iRkPXjyh8c1Yu4nnuzrVlsxcLjEkosXYUCRIGPRco0O4W9cXQ18vdqHwGcERPGzWbA9lYg39Zph2RqmBR3PSXTdS3YvF1Ee7GP+Xap8UzTF1PdbMkwgZJJGfIzO68tMnOs9sE3QLSdjqv0QZ3W4I1uob36in7uSvk0FCVBhznN+GtVnLvYUWWxElC0mnLWJFeGSJQs7UL7HN3bY3uN9ok8ZYHL/y0agyZo1Teny+G6pws1xKWWmvJryiVXX7Fdv0otg6gOBx58NdLlBCkqN3ly1Cyi4feuJDiWDDC+/TeugJBvzk1eL/81XM0Us33qRu2kQA9u9G X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 47f20dd4-3b81-47aa-31de-08daacea5571 X-MS-Exchange-CrossTenant-AuthSource: AM9PR04MB8777.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Oct 2022 07:12:48.5468 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: dt7+WIWpJCKY12OLhUy+IoB/8cAS4kM9RbxEF9p0yNoL3sO0FWyjpmgSbDrV7oDCiTGTiCezi71yzRx19sJzag== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8444 Precedence: bulk List-ID: X-Mailing-List: linux-usb@vger.kernel.org The controller's power may be powered off during system suspend. This will add suspend/resume support when the controller suffers power lost. Signed-off-by: Xu Yang Acked-by: Peter Chen --- Changes since v1: - wrap suspend/resume functions with CONFIG_PM_SLEEP. --- drivers/usb/chipidea/udc.c | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/drivers/usb/chipidea/udc.c b/drivers/usb/chipidea/udc.c index 8c3e3a635ac2..54c09245ad05 100644 --- a/drivers/usb/chipidea/udc.c +++ b/drivers/usb/chipidea/udc.c @@ -2181,6 +2181,34 @@ static void udc_id_switch_for_host(struct ci_hdrc *ci) ci->platdata->pins_default); } +#ifdef CONFIG_PM_SLEEP +static void udc_suspend(struct ci_hdrc *ci) +{ + /* + * Set OP_ENDPTLISTADDR to be non-zero for + * checking if controller resume from power lost + * in non-host mode. + */ + if (hw_read(ci, OP_ENDPTLISTADDR, ~0) == 0) + hw_write(ci, OP_ENDPTLISTADDR, ~0, ~0); +} + +static void udc_resume(struct ci_hdrc *ci, bool power_lost) +{ + if (power_lost) { + if (ci->is_otg) + hw_write_otgsc(ci, OTGSC_BSVIS | OTGSC_BSVIE, + OTGSC_BSVIS | OTGSC_BSVIE); + if (ci->vbus_active) + usb_gadget_vbus_disconnect(&ci->gadget); + } + + /* Restore value 0 if it was set for power lost check */ + if (hw_read(ci, OP_ENDPTLISTADDR, ~0) == 0xFFFFFFFF) + hw_write(ci, OP_ENDPTLISTADDR, ~0, 0); +} +#endif + /** * ci_hdrc_gadget_init - initialize device related bits * @ci: the controller @@ -2201,6 +2229,10 @@ int ci_hdrc_gadget_init(struct ci_hdrc *ci) rdrv->start = udc_id_switch_for_device; rdrv->stop = udc_id_switch_for_host; +#ifdef CONFIG_PM_SLEEP + rdrv->suspend = udc_suspend; + rdrv->resume = udc_resume; +#endif rdrv->irq = udc_irq; rdrv->name = "gadget"; From patchwork Thu Oct 13 15:14:39 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Xu Yang X-Patchwork-Id: 13005701 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 04220C433FE for ; Thu, 13 Oct 2022 07:13:03 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229686AbiJMHNB (ORCPT ); Thu, 13 Oct 2022 03:13:01 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36446 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229683AbiJMHM5 (ORCPT ); Thu, 13 Oct 2022 03:12:57 -0400 Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-eopbgr80049.outbound.protection.outlook.com [40.107.8.49]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0173F1187AE for ; Thu, 13 Oct 2022 00:12:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lzOxKGkuCicNTtPcViPETRNu9aaaFeRO9cLTtCU/8gMcv9PI0vQ+tvc+uFxo1dlImzi+7oauVJ4pYn++O8wT1vnxiJ2GsYYi0YIGWHvY9GwsrUtCk6RJQ8sK3kQIZTIckBZXuN7jG38mgs8Nueaz/ltFiJLLGkTLvIB+KhzRU6MHI0f705pPkmQrNNURvw4uEpSXPnW9Lb4g9qRjuahNelI1hsdNXMqNOZBwo1VV0MtdtxNKMWI6/eyT4M0njCa1a6dGp5ZuPQemQoxDvAis8nQad0wLjOXCmFPeUGE8h61TF+vS5x9q1YeNwbSYN+EZQtbaJgkXKsK/DJwOms4lTw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=8j0LSJQe/oq+ZD9WEaYHaXW7MkzkP0kE1x+DT7vmTtI=; b=H2dlJbXybxezWjDnIWrmujF9iuCWRCJHJQMJkPlsKsrAMCPLTI1O5vIbbUe/8qjO7QwE2WUs2+4OKc700qlAUFn0/biUr+AsNIkPac6ex/mUi21XAu3ttkPZatEt5RgtmGAmr3COYlkOXZcggPfTAZqd6mJCrsoV9OmhB1GaCyItVJ24zsgcDtz8x1OnlOEqo0I7WrAoisBvC0hE7fQ1vQkS2NaWiI+7cphvENhJeYgHfj+vihQfKvY7EQuqJnuRjnBRSFce6vZVIScBDbVQZDnVS0Nv8WM6vGLVQ8neUMrI7wFyTkaygkdbDnZ3HyS87w1nPA8VxvGShe0rur1SDg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=8j0LSJQe/oq+ZD9WEaYHaXW7MkzkP0kE1x+DT7vmTtI=; b=L/Q5+zz6aBzJY8urr+N/2oMm4Nx0t03aPHgc+UwBv73+H9Y1Op6bDWoH1VVWmD1crvRMgkiY+A9DGbUsg/TouB9uSxhDv9BszilxoIS1nZC/jk8jg+Fhnqy/yFcKi1r7UfyV+FlYJuTUQ7mZWL4XgiDJe79bF7qppH1fAH3iBYc= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXPR04MB8784.eurprd04.prod.outlook.com (2603:10a6:102:20f::23) by GV1PR04MB9151.eurprd04.prod.outlook.com (2603:10a6:150:26::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5709.21; Thu, 13 Oct 2022 07:12:51 +0000 Received: from PAXPR04MB8784.eurprd04.prod.outlook.com ([fe80::855c:7884:639:f875]) by PAXPR04MB8784.eurprd04.prod.outlook.com ([fe80::855c:7884:639:f875%7]) with mapi id 15.20.5723.026; Thu, 13 Oct 2022 07:12:51 +0000 From: Xu Yang To: peter.chen@kernel.org, jun.li@nxp.com Cc: gregkh@linuxfoundation.org, linux-usb@vger.kernel.org, linux-imx@nxp.com Subject: [PATCH v2 5/8] usb: chipidea: usbmisc: group usbmisc operations for PM Date: Thu, 13 Oct 2022 23:14:39 +0800 Message-Id: <20221013151442.3262951-6-xu.yang_2@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221013151442.3262951-1-xu.yang_2@nxp.com> References: <20221013151442.3262951-1-xu.yang_2@nxp.com> X-ClientProxiedBy: SG2PR02CA0091.apcprd02.prod.outlook.com (2603:1096:4:90::31) To AM9PR04MB8777.eurprd04.prod.outlook.com (2603:10a6:20b:408::20) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB8784:EE_|GV1PR04MB9151:EE_ X-MS-Office365-Filtering-Correlation-Id: 55bc7df6-9aeb-4d7b-0c5a-08daacea56d9 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: jge8G/xd3e3d/97MS6q4LswgVKsb3/DR1otSa6TIqzvD0ixDZZITmxLAJukhdkSwOryYkL9R1N1lbVGazEwM1W7ySH7rruf+78dHanbn9b6igEu6NHP62s5pQScmd1BhslNeJt42r/Oo4TF+6+M8XNpjr59qbE6LaHuu/g4TJVmelNzhNHLYLStd48V75YBrkuCF0Xrw3Y1c1cEien0fSBLf9IUYfVK+8Flp0EI4ya9RC0yD0Z+2SKyD0YMOZk/H8PvP00AMALSiCerYLV0EvsP64QEIp4F4b11f+OVu4r/b3rbIIbuNJcgU3IClVITTjNPR2HDl4toJjtwTodiMhN+XF9sve10kisGhWz5h/iMjM4ozUwp9sii/hkyGVGzOrDfbijR2LD2cl22i4vMWse+PIEm2V26P0bDY2jvlCxBf/IREgazuPW9diQoI47wSfKcq2v++6srg8GrtpTWUsWF+SUVKrM4HkVQCfelw8Uu0LfhWQ1WRTEUClys6OkAyQ46e6qLUbkIXoqS6PLbnJvp7QVYBOeuRG3pkuArVBNUMLJiRZeDuNShPXaHsFnKD2AOSX3irwXVul8FIxDRTfOd3chyCiHN2tmIp5Is2OOiV0UYJHbq2QHuL5GkXaBPiPBcNA6Tpqy1EZ5cSTi9piAwyqV4WJhEAv7yaj+ZSXzHHWtiATPOj356c5jcFkNU0wV9mY8HJ7hGYxm7Ys//eGvonq5+Cgvr+bn5NVnWL/5ka7IAMms6YWnuYDAudpopJ X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXPR04MB8784.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(396003)(39860400002)(366004)(136003)(346002)(376002)(451199015)(6636002)(316002)(38350700002)(66946007)(8936002)(38100700002)(2906002)(41300700001)(4326008)(66476007)(66556008)(8676002)(5660300002)(6512007)(186003)(6506007)(52116002)(6666004)(26005)(1076003)(2616005)(83380400001)(478600001)(6486002)(86362001)(36756003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: uGFnbkWUHcb7OWRYMIsRwmpYvF1GhH4QFFdGjqGDbA0Vu9XW+SoGgUZkbPv+RGQlz5zLGu1zvTZ1oY8xfwCSsw/SDr3X+//p/6wjgU0m1oWOMDLNfgbEPSspKgk/p6Rm5H0ocXTYVzg4xAiW7UfMYnNNlbZSW2fKvuyMrUWHtmxgwIcxyaQF3lHAMGU/hZvBtAq4Ob7Qzm06qWTIv9JcfMLb12hdaS4mUuo4pgepmQjMaBRFVh9PqbnwYh0Bdq7a8wZZpOA95TVN6knQ0shsmYDEQDEPwnHSSzCuANB5so3aT54CzovfpUdZG4fDAPBHlEGkjjvfY8gEac+YKh/3EpGbFTDoxNgKLfaAXKBOzDV6/IjHNVXn/33Zfpw3nZqPb41VjK6J07dLywn6mS74qwwnrFghaWh7wJadc4u3qKCl8iowaWwFk/S9XDQD+8X3Gf/L+ej4rWg+81B6Kj2wY2XVjwTQVMMHa046nLG5HQeN8AMTr4KMcDQrXn38g6aXQ8wY4QWEOjVZ9bV6YvaHKxqHNqDKO0CaydyglKCvAu/IvTgVikfeFk/GPIUU01/lWOAsOuKWm6bHpEp8R042P0A9caiFN/wsoqcWJ9Zf3z5W+YxSmCfW3ZrEVr4C6AehSdFw9gc92wzSx17nZQ4xpZIHUW6IWd+xw2pj6XewvU7/ujA5Kx4dAC7LGsbTN93FNqexPCqs34rw0BNMkV0UxvFFlDvqRLtj8gxFC3GZUGyqt12I9dZ27E/u+9Pqn+jt7oRB39oaNXDcK+2ZUpZl/YVBFz4Gtr5NcBud3sWZB0Gz1cKUJzOMyupRE4LyVgZPM/0YhelZ/62ROSxLkqtZ+1OnZexqdLpPbg/2DqZG+xsQBu/+cXCJg0IHQHDL3bNeeQp++6OjLGpJWDRFSpnou13JJf8PXfQ3+611nzNHBv2tX2ej1tFfvLeTIzVISWLTJNVtQx5pNpqGl9nYuBaKwD1xtqjHn14zFeMdt0hGqSGfxm5OogTd4FDqlA21cdIzya7yXnaqvket0ruKxDtKtQBfKhZVajCuX3J/YKVdBL9rluaoNht/PrnebwdEvfl2OsviQlkJCLWwmbmmLSFQkzqqNerYmjmbxBI2wFV/5dz1MJsumXy2dxC0X3+KMg4K+w6I56aWRnGcw46ZG1RdT0/4vBio0FA/K6Zl0nzes7R4fiSN5RmyJD8SFA+KeShH020pmaU5xhgLxO0xv12mWjhaY6F7SMjMDDw4X5uoWNmXeMULhV11PX9u43x7PqnuEnKrFntsgNKBxvB6TIjqYuRVqCkOf5grre4QYuWTyilmIqrXBMVgElfWAQQ7FaHLsKHK2/WNaV9jjeEfls9ZUiZw6B1B/0R4R2PvXd9TOXwqfvIlwP+tTheazeiYyWEZl/afHBcljneAfWFmZ1lcW28jZ7E5RM6ZpTDy+4NhlCCXqyf8Yr2npoEcVRVpocNAhPQqSUkd4Bg9j70QFx8CDb+aEa/EHKDPQV89xU7GqKy1oi1x0OaNUjqg4HjFp5N/VuQNVP0tbHCXcpdeFz2gVGjysXdP8oB1XtReaWsjQr66lKfbYX/UjM/bdwSJ17PP X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 55bc7df6-9aeb-4d7b-0c5a-08daacea56d9 X-MS-Exchange-CrossTenant-AuthSource: AM9PR04MB8777.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Oct 2022 07:12:50.9840 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: ZWNOsJQCeucHeyXVY4/WMvclfOuQK7fkHfKGh7i9KGIZlY9ZVpX9tOYtvdI6JFRw9MAeiD5WiNRWwpAGeNHkzQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR04MB9151 Precedence: bulk List-ID: X-Mailing-List: linux-usb@vger.kernel.org From: Li Jun As there maybe more APIs of usbmisc for suspend and resume, group them into imx_usbmisc_suspend/resume. Besides, introduced .power_lost_check API, so that proper resume operations can be performed in power lost case. Signed-off-by: Li Jun --- Changes since v1: - No changes. --- drivers/usb/chipidea/ci_hdrc_imx.c | 49 ++++-------- drivers/usb/chipidea/ci_hdrc_imx.h | 4 +- drivers/usb/chipidea/usbmisc_imx.c | 119 +++++++++++++++++++++-------- 3 files changed, 106 insertions(+), 66 deletions(-) diff --git a/drivers/usb/chipidea/ci_hdrc_imx.c b/drivers/usb/chipidea/ci_hdrc_imx.c index 9ffcecd3058c..923f5c00a1d9 100644 --- a/drivers/usb/chipidea/ci_hdrc_imx.c +++ b/drivers/usb/chipidea/ci_hdrc_imx.c @@ -527,16 +527,19 @@ static void ci_hdrc_imx_shutdown(struct platform_device *pdev) ci_hdrc_imx_remove(pdev); } -static int __maybe_unused imx_controller_suspend(struct device *dev) +static int __maybe_unused imx_controller_suspend(struct device *dev, + pm_message_t msg) { struct ci_hdrc_imx_data *data = dev_get_drvdata(dev); int ret = 0; dev_dbg(dev, "at %s\n", __func__); - ret = imx_usbmisc_hsic_set_clk(data->usbmisc_data, false); + ret = imx_usbmisc_suspend(data->usbmisc_data, + PMSG_IS_AUTO(msg) || device_may_wakeup(dev)); if (ret) { - dev_err(dev, "usbmisc hsic_set_clk failed, ret=%d\n", ret); + dev_err(dev, + "usbmisc suspend failed, ret=%d\n", ret); return ret; } @@ -549,7 +552,8 @@ static int __maybe_unused imx_controller_suspend(struct device *dev) return 0; } -static int __maybe_unused imx_controller_resume(struct device *dev) +static int __maybe_unused imx_controller_resume(struct device *dev, + pm_message_t msg) { struct ci_hdrc_imx_data *data = dev_get_drvdata(dev); int ret = 0; @@ -570,22 +574,15 @@ static int __maybe_unused imx_controller_resume(struct device *dev) data->in_lpm = false; - ret = imx_usbmisc_set_wakeup(data->usbmisc_data, false); + ret = imx_usbmisc_resume(data->usbmisc_data, + PMSG_IS_AUTO(msg) || device_may_wakeup(dev)); if (ret) { - dev_err(dev, "usbmisc set_wakeup failed, ret=%d\n", ret); + dev_err(dev, "usbmisc resume failed, ret=%d\n", ret); goto clk_disable; } - ret = imx_usbmisc_hsic_set_clk(data->usbmisc_data, true); - if (ret) { - dev_err(dev, "usbmisc hsic_set_clk failed, ret=%d\n", ret); - goto hsic_set_clk_fail; - } - return 0; -hsic_set_clk_fail: - imx_usbmisc_set_wakeup(data->usbmisc_data, true); clk_disable: imx_disable_unprepare_clks(dev); return ret; @@ -601,16 +598,7 @@ static int __maybe_unused ci_hdrc_imx_suspend(struct device *dev) /* The core's suspend doesn't run */ return 0; - if (device_may_wakeup(dev)) { - ret = imx_usbmisc_set_wakeup(data->usbmisc_data, true); - if (ret) { - dev_err(dev, "usbmisc set_wakeup failed, ret=%d\n", - ret); - return ret; - } - } - - ret = imx_controller_suspend(dev); + ret = imx_controller_suspend(dev, PMSG_SUSPEND); if (ret) return ret; @@ -624,7 +612,7 @@ static int __maybe_unused ci_hdrc_imx_resume(struct device *dev) int ret; pinctrl_pm_select_default_state(dev); - ret = imx_controller_resume(dev); + ret = imx_controller_resume(dev, PMSG_RESUME); if (!ret && data->supports_runtime_pm) { pm_runtime_disable(dev); pm_runtime_set_active(dev); @@ -637,25 +625,18 @@ static int __maybe_unused ci_hdrc_imx_resume(struct device *dev) static int __maybe_unused ci_hdrc_imx_runtime_suspend(struct device *dev) { struct ci_hdrc_imx_data *data = dev_get_drvdata(dev); - int ret; if (data->in_lpm) { WARN_ON(1); return 0; } - ret = imx_usbmisc_set_wakeup(data->usbmisc_data, true); - if (ret) { - dev_err(dev, "usbmisc set_wakeup failed, ret=%d\n", ret); - return ret; - } - - return imx_controller_suspend(dev); + return imx_controller_suspend(dev, PMSG_AUTO_SUSPEND); } static int __maybe_unused ci_hdrc_imx_runtime_resume(struct device *dev) { - return imx_controller_resume(dev); + return imx_controller_resume(dev, PMSG_AUTO_RESUME); } static const struct dev_pm_ops ci_hdrc_imx_pm_ops = { diff --git a/drivers/usb/chipidea/ci_hdrc_imx.h b/drivers/usb/chipidea/ci_hdrc_imx.h index 7daccb9c5006..7135b9a5d913 100644 --- a/drivers/usb/chipidea/ci_hdrc_imx.h +++ b/drivers/usb/chipidea/ci_hdrc_imx.h @@ -32,9 +32,9 @@ struct imx_usbmisc_data { int imx_usbmisc_init(struct imx_usbmisc_data *data); int imx_usbmisc_init_post(struct imx_usbmisc_data *data); -int imx_usbmisc_set_wakeup(struct imx_usbmisc_data *data, bool enabled); int imx_usbmisc_hsic_set_connect(struct imx_usbmisc_data *data); -int imx_usbmisc_hsic_set_clk(struct imx_usbmisc_data *data, bool on); int imx_usbmisc_charger_detection(struct imx_usbmisc_data *data, bool connect); +int imx_usbmisc_suspend(struct imx_usbmisc_data *data, bool wakeup); +int imx_usbmisc_resume(struct imx_usbmisc_data *data, bool wakeup); #endif /* __DRIVER_USB_CHIPIDEA_CI_HDRC_IMX_H */ diff --git a/drivers/usb/chipidea/usbmisc_imx.c b/drivers/usb/chipidea/usbmisc_imx.c index bac0f5458cab..aa815f6d3fe9 100644 --- a/drivers/usb/chipidea/usbmisc_imx.c +++ b/drivers/usb/chipidea/usbmisc_imx.c @@ -150,6 +150,8 @@ struct usbmisc_ops { int (*hsic_set_clk)(struct imx_usbmisc_data *data, bool enabled); /* usb charger detection */ int (*charger_detection)(struct imx_usbmisc_data *data); + /* It's called when system resume from usb power lost */ + int (*power_lost_check)(struct imx_usbmisc_data *data); }; struct imx_usbmisc { @@ -1009,30 +1011,29 @@ EXPORT_SYMBOL_GPL(imx_usbmisc_init); int imx_usbmisc_init_post(struct imx_usbmisc_data *data) { struct imx_usbmisc *usbmisc; + int ret = 0; if (!data) return 0; usbmisc = dev_get_drvdata(data->dev); - if (!usbmisc->ops->post) - return 0; - return usbmisc->ops->post(data); -} -EXPORT_SYMBOL_GPL(imx_usbmisc_init_post); - -int imx_usbmisc_set_wakeup(struct imx_usbmisc_data *data, bool enabled) -{ - struct imx_usbmisc *usbmisc; + if (usbmisc->ops->post) + ret = usbmisc->ops->post(data); + if (ret) { + dev_err(data->dev, "post init failed, ret=%d\n", ret); + return ret; + } - if (!data) - return 0; + if (usbmisc->ops->set_wakeup) + ret = usbmisc->ops->set_wakeup(data, false); + if (ret) { + dev_err(data->dev, "set_wakeup failed, ret=%d\n", ret); + return ret; + } - usbmisc = dev_get_drvdata(data->dev); - if (!usbmisc->ops->set_wakeup) - return 0; - return usbmisc->ops->set_wakeup(data, enabled); + return 0; } -EXPORT_SYMBOL_GPL(imx_usbmisc_set_wakeup); +EXPORT_SYMBOL_GPL(imx_usbmisc_init_post); int imx_usbmisc_hsic_set_connect(struct imx_usbmisc_data *data) { @@ -1048,20 +1049,6 @@ int imx_usbmisc_hsic_set_connect(struct imx_usbmisc_data *data) } EXPORT_SYMBOL_GPL(imx_usbmisc_hsic_set_connect); -int imx_usbmisc_hsic_set_clk(struct imx_usbmisc_data *data, bool on) -{ - struct imx_usbmisc *usbmisc; - - if (!data) - return 0; - - usbmisc = dev_get_drvdata(data->dev); - if (!usbmisc->ops->hsic_set_clk || !data->hsic) - return 0; - return usbmisc->ops->hsic_set_clk(data, on); -} -EXPORT_SYMBOL_GPL(imx_usbmisc_hsic_set_clk); - int imx_usbmisc_charger_detection(struct imx_usbmisc_data *data, bool connect) { struct imx_usbmisc *usbmisc; @@ -1094,6 +1081,78 @@ int imx_usbmisc_charger_detection(struct imx_usbmisc_data *data, bool connect) } EXPORT_SYMBOL_GPL(imx_usbmisc_charger_detection); +int imx_usbmisc_suspend(struct imx_usbmisc_data *data, bool wakeup) +{ + struct imx_usbmisc *usbmisc; + int ret = 0; + + if (!data) + return 0; + + usbmisc = dev_get_drvdata(data->dev); + + if (wakeup && usbmisc->ops->set_wakeup) + ret = usbmisc->ops->set_wakeup(data, true); + if (ret) { + dev_err(data->dev, "set_wakeup failed, ret=%d\n", ret); + return ret; + } + + if (usbmisc->ops->hsic_set_clk && data->hsic) + ret = usbmisc->ops->hsic_set_clk(data, false); + if (ret) { + dev_err(data->dev, "set_wakeup failed, ret=%d\n", ret); + return ret; + } + + return ret; +} +EXPORT_SYMBOL_GPL(imx_usbmisc_suspend); + +int imx_usbmisc_resume(struct imx_usbmisc_data *data, bool wakeup) +{ + struct imx_usbmisc *usbmisc; + int ret = 0; + + if (!data) + return 0; + + usbmisc = dev_get_drvdata(data->dev); + + if (usbmisc->ops->power_lost_check) + ret = usbmisc->ops->power_lost_check(data); + if (ret > 0) { + /* re-init if resume from power lost */ + ret = imx_usbmisc_init(data); + if (ret) { + dev_err(data->dev, "re-init failed, ret=%d\n", ret); + return ret; + } + } + + if (wakeup && usbmisc->ops->set_wakeup) + ret = usbmisc->ops->set_wakeup(data, false); + if (ret) { + dev_err(data->dev, "set_wakeup failed, ret=%d\n", ret); + return ret; + } + + if (usbmisc->ops->hsic_set_clk && data->hsic) + ret = usbmisc->ops->hsic_set_clk(data, true); + if (ret) { + dev_err(data->dev, "set_wakeup failed, ret=%d\n", ret); + goto hsic_set_clk_fail; + } + + return 0; + +hsic_set_clk_fail: + if (wakeup && usbmisc->ops->set_wakeup) + usbmisc->ops->set_wakeup(data, true); + return ret; +} +EXPORT_SYMBOL_GPL(imx_usbmisc_resume); + static const struct of_device_id usbmisc_imx_dt_ids[] = { { .compatible = "fsl,imx25-usbmisc", From patchwork Thu Oct 13 15:14:40 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Xu Yang X-Patchwork-Id: 13005702 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id A3027C4332F for ; Thu, 13 Oct 2022 07:13:05 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229755AbiJMHNE (ORCPT ); Thu, 13 Oct 2022 03:13:04 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36578 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229700AbiJMHM7 (ORCPT ); Thu, 13 Oct 2022 03:12:59 -0400 Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-eopbgr80049.outbound.protection.outlook.com [40.107.8.49]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 915591162DC for ; Thu, 13 Oct 2022 00:12:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XI1nWKEF9OlStN2Dl5n21N1sYzUF+6LByz4hiEzrLju6hXNuAQwnR8tq2HkuAv2V1XVmufu1oM/wIyZeUx/UAUOAmR7Glqu7+a96jvUhqQfgGaSkP9h7HtCPb/0XUbH+z9qMXXBu07T1JqEhPCYNvh7JZAvtJlmmmJgLzxuiuBiaQWmoUJb5N9VVosmkZo9f+g8PEYcNrQpN0jGPM2j9UKD91HxWpuVYtk/aKnAkCXGFv+3aoDmb5EfeMJ0GG7I0X6SEl37sfW+Lez7EN25jHeEMVZXTAIbuMJEZX7nTRsCxTvVu851mjpgdgnfqlTzaHuEgpHqVg/ldzfJFSm7Tkw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=o7dqoBkoOg9b+6lS+qA2/PRHdtJ6lL98lbG6iVeNysQ=; b=E7rLujoehVvURmejuZkMJQFZfB4YL9ZOMWGVMWKeDhZQQcHpcxcIcDc3tbkXx1cy5ZeV1bs3BBGrVhjnlfbY/qJtRvSPFw0FIYbrlZovTws/yGxgCVM8qeXCL3XKbLVzeKK4AXNyfoqZF0bW8mqvVpsZuI56lsZNR7g8y2NGEN+3A/o00OPACMnAV1UhQoEA2yzSQ5uymXtFUtsTKwmdWaOvMPilVnOszj47sMde47xU0EC/tPR8PJQHQwuipzanml/3TdNz+lfx6T6oT1u5o/R0IXP4L6D7vLpf56pZ/+Kk2CZdK1WA42GXuz64AyehAuH7mNx3ijH0qJaXu+bUyA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=o7dqoBkoOg9b+6lS+qA2/PRHdtJ6lL98lbG6iVeNysQ=; b=cHPDtTZAGRA32xumHj5AcX7iUoo3d5u1pumIeh0Gj2Kr1PAM2jkT2BPeTfIKZaGcGFsIAJ5CCk/ESmpKnVL1rlt0RiiZnyVQ7YCjMUkQAALEG+3/s3MUBOOABxQ3SIwsk3nuQB6wOIjQEsxd8rH/cA6i1/ZrRhEdhu++gmYx30I= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXPR04MB8784.eurprd04.prod.outlook.com (2603:10a6:102:20f::23) by GV1PR04MB9151.eurprd04.prod.outlook.com (2603:10a6:150:26::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5709.21; Thu, 13 Oct 2022 07:12:53 +0000 Received: from PAXPR04MB8784.eurprd04.prod.outlook.com ([fe80::855c:7884:639:f875]) by PAXPR04MB8784.eurprd04.prod.outlook.com ([fe80::855c:7884:639:f875%7]) with mapi id 15.20.5723.026; Thu, 13 Oct 2022 07:12:53 +0000 From: Xu Yang To: peter.chen@kernel.org, jun.li@nxp.com Cc: gregkh@linuxfoundation.org, linux-usb@vger.kernel.org, linux-imx@nxp.com Subject: [PATCH v2 6/8] usb: chipidea: usbmisc: add power lost check for imx6sx Date: Thu, 13 Oct 2022 23:14:40 +0800 Message-Id: <20221013151442.3262951-7-xu.yang_2@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221013151442.3262951-1-xu.yang_2@nxp.com> References: <20221013151442.3262951-1-xu.yang_2@nxp.com> X-ClientProxiedBy: SG2PR02CA0091.apcprd02.prod.outlook.com (2603:1096:4:90::31) To AM9PR04MB8777.eurprd04.prod.outlook.com (2603:10a6:20b:408::20) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB8784:EE_|GV1PR04MB9151:EE_ X-MS-Office365-Filtering-Correlation-Id: 5435dec7-0cb3-4eaa-b151-08daacea584d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Dq5stG2dK54P7Lv+qjdPFYdJubg+azsR2MlYmbzlAsRyUTcmVX52oaohpabtCLLfYHnVWhCXkMns60TZqKFE3fkamLtBKH1wYw2tZ+t4Gd3wmR5xHWhlZsaYQDchBzD9K5i1MACjlOR28irNDsmTQnEfe5x7wFDvGzwNh5hg74UzTjEYYVRPDNswlMCVaIMnt3whtaIyDWmhEHQGRYJowLpBd67MZp4WOYTWnut4amg/swECatbALV9NkbUzOV9TfQE3l+OadvDTqA714ce7SsMRzSVjXSpd/nHcZrSAR+Y5SLwDYdvBHkbExFaH5Ilg2Caz8Slsph1WRch8i2Jkfmk5FC9BINw+MEg6z3iuixqhmcNv7VC3wiHgt3hU0u43pU6zgoJx/x7A/5zmnjwKf9jbNdI07EKaIeA4UWY2cFevaZ1Db9Vrc30oASLViSe1w9UMbo7nJ2P4j2wif3vALl1lZXDpLE9FAscEYNF6x/21TtR0d/L9V2UbKZSiK6Sw60A2+q7aSIUpKXNS6D5g2+cvkWpQ6K0Jfcnp9Y7drWTx8PPsvSDmuLPEoZnGEXpOHffZ7z+7j1a5T9Z+h27eH2ikTk2naFO9zKC0hhmc4kk2j9I4rg97pu7LSyIhHvHWeO+9JTeqjZXB2gnu1zCVt4xCJpHarGBZFf93t0h0qWQiVCSUTeO/5XZR2wDkXPGMHUelIdpubFqA/n4+ZocMwsxMf0/IxS6X7zl/fuW1dq3ZsKw4VQ16hRiOYXTBgHsOq/588g8+vI1cW1hokshfMkmZOQJQALWFN3Sdu4iI5uI= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXPR04MB8784.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(396003)(39860400002)(366004)(136003)(346002)(376002)(451199015)(6636002)(316002)(38350700002)(66946007)(8936002)(38100700002)(2906002)(41300700001)(4326008)(66476007)(66556008)(8676002)(5660300002)(6512007)(186003)(6506007)(52116002)(6666004)(26005)(1076003)(2616005)(83380400001)(478600001)(6486002)(86362001)(36756003)(32563001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Lcz8s8xqAm+sXuDE2KfW0yJ6f69q+wighAkbWzH6UKcGS5fxaF5e4neHcOZFSmH8qHYRVO6NTr45aYTqHqv8U1kxSjmEPKJifBsECWTpxRm0i4ATTy9UnV5zFVj47pnJckFUENY60D5t3F6bOkBgEuWUZ9IBcG3ksrvV60ep6VQ+nO2zKAH+Y4unWaR5KSJIqcv871dy12a72OVUWgndN7VQ+wYiV3MSrQ8K9O6TqLSA5aIU5sIZ9ch0k0nxZoiAMzNPwy0qs9kZUC0Wgsg+6uj4oUNwpWyt/3HD5XHcXHP4wMejsk4jSwsxSLLAQDAcxy9IRKB84IvHy9vJ1BVDgZox/v6D8cetNEgYbwfU7vFxUQhJYLCiupB5tq7CPI4kLE+oFGXQcgnPuMpp0FmHdo0x5EZHVGbZjHlFL9w4L1Jj0ZGut+OzA6/kvlqGv0w/ZnkYpDSk1KAAfzaw3cIOfwSuHGD4S/+TNyUIKTVZNRWhXpJkg5XjKN/n4xXHuvRWVKIAi5CqY/dyD2X/Pu19Hsmd4DqeYIEZBcoCYqeKkSH2+3WpANE6BWdc0vHtT64BdzIDvXfuM9UBCdUEh/FE3r2KwaE9ldLdeamnPrkgDIKbMhGLuBka1ZsJbP7TkEvmgubz3RLBGZriFPmyPEi69zNNSHuibf9U13cMErL1hc7QpywFPSJ2tyjBL7UwgErrOWjMUglG4TWxZg4BKJd8nCq+NQeBXu5sKrMYCL/dOvraTkaWyfNc/ZakVWem6BA/++eq3JtteraIy3PkHc3xBsU9+q1HEolrbG1/M8a4qhnRAIFzGLc5ZVHiQhVB0WZg3NHkcievbYQyPeZIIKZj1+raOWly94js4aLx69YMG08YNaOiGR+aFP1Mmw1t6C1UrS5ZwWqXRz95lgEKiXp7pEUUIW64D0k/58hzCnM6VUcXbx+5IxYyyer1DvEFOWA1KHM6YgArhspoj7TyDWcb6JdKbTNTCiZ+vtSbjP8qMCFSeAhXhLH6rsiwxFHai9w3g8RnI2fTbOf6+sHGGLABDA5IK9h8Cw1R0cWC0TgCvVL91fRIV9coms+chsPtB7tnKH8Hje03bXqHuqGtEz7OupoWGGMFYYDnwUJNxXfHuhtheBt/YT5cjUJ0t4eUsYgLIUIzJUmVqzzgiyZU4UOPhfN9QjOSwxkUH8zd5GsmVgiLzaSRgzuA7MRkisfZ9BnyF3bN5R7JNZS6MrdjuGxe3ophodiqI+WuN3Z9OVm/0XsOYDIxHoCJYpmEaQK9ItXYQVnN8UYhH4BnZcIc/nwrgklj9fVd2oSMsm8tj5yPHU8zo7v4Kv9v3B5l8wTdEE0qWxcubI7OCDNb5PHMazlf+hVXn1jce8dmWmnJgj9l6ZJ4NIyOlEgQQILkeSGi7usHu9QnE6zJz3Xlxtip/UIm/b1tIks1nwloXL95KSwuJchlu2UI8fWzym0m92cxy5xSab6q4Ft+6WedG8sSYU26ZHoVedpeJVVzmmSRcRvTUeJoktnb+KAxuGpJPdec++tUl4oU/8lWLO6wBD62ajawm1U86zDmum9BUahmXZeNRr0pxBhyn5vXNucXQ6C0yToO X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5435dec7-0cb3-4eaa-b151-08daacea584d X-MS-Exchange-CrossTenant-AuthSource: AM9PR04MB8777.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Oct 2022 07:12:53.2981 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: wsJS2Ymoz2WbDkXT4OnymiX77ruP2+88txXQVGNaGyY2pv46i3l53XJCGvyxCltuvwQbB4UOqF6XgQp59fpaxQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR04MB9151 Precedence: bulk List-ID: X-Mailing-List: linux-usb@vger.kernel.org From: Li Jun imx6sx mega off can shutdown domain power supply if none of peripheral in this domain is registered as wakeup source, this patch add related codes to check if power is lost. Signed-off-by: Li Jun --- Changes since v1: - No changes. --- drivers/usb/chipidea/usbmisc_imx.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/drivers/usb/chipidea/usbmisc_imx.c b/drivers/usb/chipidea/usbmisc_imx.c index aa815f6d3fe9..7bfbfc83cfe3 100644 --- a/drivers/usb/chipidea/usbmisc_imx.c +++ b/drivers/usb/chipidea/usbmisc_imx.c @@ -939,6 +939,25 @@ static int usbmisc_imx7ulp_init(struct imx_usbmisc_data *data) return 0; } +static int usbmisc_imx6sx_power_lost_check(struct imx_usbmisc_data *data) +{ + struct imx_usbmisc *usbmisc = dev_get_drvdata(data->dev); + unsigned long flags; + u32 val; + + spin_lock_irqsave(&usbmisc->lock, flags); + val = readl(usbmisc->base + data->index * 4); + spin_unlock_irqrestore(&usbmisc->lock, flags); + /* + * Here use a power on reset value to judge + * if the controller experienced a power lost + */ + if (val == 0x30001000) + return 1; + else + return 0; +} + static const struct usbmisc_ops imx25_usbmisc_ops = { .init = usbmisc_imx25_init, .post = usbmisc_imx25_post, @@ -972,6 +991,7 @@ static const struct usbmisc_ops imx6sx_usbmisc_ops = { .init = usbmisc_imx6sx_init, .hsic_set_connect = usbmisc_imx6_hsic_set_connect, .hsic_set_clk = usbmisc_imx6_hsic_set_clk, + .power_lost_check = usbmisc_imx6sx_power_lost_check, }; static const struct usbmisc_ops imx7d_usbmisc_ops = { From patchwork Thu Oct 13 15:14:41 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Xu Yang X-Patchwork-Id: 13005703 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3D8D8C433FE for ; Thu, 13 Oct 2022 07:13:08 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229545AbiJMHNH (ORCPT ); Thu, 13 Oct 2022 03:13:07 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36484 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229650AbiJMHNB (ORCPT ); Thu, 13 Oct 2022 03:13:01 -0400 Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-eopbgr80049.outbound.protection.outlook.com [40.107.8.49]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BEB4D11C274 for ; Thu, 13 Oct 2022 00:12:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FlnnC07k4xiZS7BoH/HkHOuaUt4WumeHrh8KP/ECFPv/mqjx8iRuXJUZ0h9cffLkfqiLYqiNov3GhiThMEnNUlZXYy+gHhJvmhIyFqZgyjWoWydvE6dtCinY3BvVUGRJdlfQsw6liqc/uzUXn54B0rcVg1cVz270HKJHaS1LINP0uI4Oeq9V4XiyZj4txeNUfzTILRM58Wwzlb8bmYAdOabtE8kl6l2EXdbiJz20GBKyvX2d2dFCCiUYgBvBmtYpYLpfoWRWH2ZEhERt69YHGNZiKP8sAARQN5jRerY6KDG1NCG56/UERhTW7JirbFeNSn+bB7GNygYIFW+QhyToLQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=TN+cvx+ULURZUHbvw5XloGjbk95OmrA50HDYsX2lD/o=; b=C/NxQHa3f+BuuO0fjRs/INbLIqz5YksRZt46dCXO40avVUxfKNb46ybrC4Eo3T08RAnquljUBCmv1C9yCRTEvCjG+Kga50x55ZMDv3emUY+i8nzDs6tosAIZENEU+Fb1MdGqnRc8UkShVe9TVeBjzhRirXqqIWfNDvrEXsgEYdZP3QQoAuCkfCnkzdseZe/P9runsF5qXAZxt3gM2UZ9ctMM8y92eiFMEQaiPGHihNgqSiC3qUxy1CSGbTIaMjd4QYE58V2XoGHc51Ey0Ag7ioEfGhQRTv6OAuJyIb5bmzCNU+GW4AosrG8LmpxoSSkBBBer/PGKZxFHs6SSVLkQUg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=TN+cvx+ULURZUHbvw5XloGjbk95OmrA50HDYsX2lD/o=; b=V5BTmi6oVLKC7OgnRrkkUMbleJnNSLMbszF0wE4UhmNwVqH9wnbG6PL2GfhcZy2TrJ1vaobLEQINdqqKJOxMVp5F61irCl7JEsUCQRw+wIYViP3Cc6TswiSY/Avkb5yAWFaM023GABUisaUBZ0lwwCR4zdcub1SsBbClrLcgutI= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXPR04MB8784.eurprd04.prod.outlook.com (2603:10a6:102:20f::23) by GV1PR04MB9151.eurprd04.prod.outlook.com (2603:10a6:150:26::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5709.21; Thu, 13 Oct 2022 07:12:55 +0000 Received: from PAXPR04MB8784.eurprd04.prod.outlook.com ([fe80::855c:7884:639:f875]) by PAXPR04MB8784.eurprd04.prod.outlook.com ([fe80::855c:7884:639:f875%7]) with mapi id 15.20.5723.026; Thu, 13 Oct 2022 07:12:55 +0000 From: Xu Yang To: peter.chen@kernel.org, jun.li@nxp.com Cc: gregkh@linuxfoundation.org, linux-usb@vger.kernel.org, linux-imx@nxp.com Subject: [PATCH v2 7/8] usb: chipidea: usbmisc: add power lost check for imx7d Date: Thu, 13 Oct 2022 23:14:41 +0800 Message-Id: <20221013151442.3262951-8-xu.yang_2@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221013151442.3262951-1-xu.yang_2@nxp.com> References: <20221013151442.3262951-1-xu.yang_2@nxp.com> X-ClientProxiedBy: SG2PR02CA0091.apcprd02.prod.outlook.com (2603:1096:4:90::31) To AM9PR04MB8777.eurprd04.prod.outlook.com (2603:10a6:20b:408::20) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB8784:EE_|GV1PR04MB9151:EE_ X-MS-Office365-Filtering-Correlation-Id: 4ea8a55f-d50b-4fb5-717f-08daacea59b3 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: cda7+kTjpfGIMw7sZnRMpEcm6TOa8gga5nhOFFO4zv2J4LbLb+PqoCSsPZgxsIPUaVrKLFQCGu68T4uDVjyXQLQJnoxw3pC3vA05rzC1Pqb86qP+X7XqrHCg83uFz3e7L794Om2Qg6uK9ygZ7HvrTb4Vf9YWT4WUVEXv5qP9YxqkltnXhQ2FbPb0pGLSPdBu1rLRHHZpDHpCYLAG7/GWDMkA+eTA1hl4f980KF/6mQAJhqNlsNc+faB7xeCrmJtWrsdS9tyP7YQ2Owbv9IaAw9Q3bbQdlWO6QmkdTLB00AtMuc2H+d6lGKA75Cf4qavtuzWWHPrItI2tTuRwkJF7h/ZWQYYjIuGnoL92zFI+ESx00fp4/ereRVwoFJAznzzpKTkZotOnU5WsE3KanydhMM2LZperTSLFbb6Ip50eXc90X45x5/OefFiJAdLPuoqPLiWPycQ4vXXrC1ReUusIlIN20ubFPDLfAnU0UScLub8kNdfeHp7BSwhwJKUST/lV3w4lEG2m9AKpYmoCcb2U5fLpAjkNhYDFWwt+cbpHD0xYV18NFIdeG5AC3ECTaGLNh4s2Cy5Gl8xFUYu0OQ7w23JZH9ttcwG6jxFsZZxnWfzxtuRdLP9aujJzocBZcM0RJcMog9FvZ6oFRa+qmrCJiho9GqvbhCh1QJA1CZpxOUC6VGo5rglgpqAaWXXN0Xvoa0MrrXICY/608c6Fh+OqzEV4dcQL0fgYpfc1rYCRsNxFpbiLL2QksDZf+3qKojj37HwmvJ3bxHzdU/Mu1B05kQ== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXPR04MB8784.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(396003)(39860400002)(366004)(136003)(346002)(376002)(451199015)(6636002)(316002)(38350700002)(66946007)(8936002)(38100700002)(2906002)(41300700001)(4326008)(66476007)(66556008)(8676002)(5660300002)(6512007)(186003)(6506007)(52116002)(6666004)(26005)(1076003)(2616005)(83380400001)(478600001)(6486002)(86362001)(36756003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: GrtiCTIgvxXJuM8BxaP5eNIuuVX2gBT2VGPPqscZNtscOMO3qMUB1O0vr8ugfM+7ngNLFd+wbaxDIs3eMAYa83qfeLMes1uZm8+4/qG6u+z1j4c4c9pv9mRjACbj3kZY8js6bSS4unjyFLJZe+5NgV6UXHosLs7XX1H1h6OWxWwmNPgeXS07MbJbuMTUKYXhfcAs0l0regGw6Zr7G1GPAASj3bRKQHiOyonUIIcJjREkYKZcr/Koqw5Bof39GnufI88GEiHZHQwcnc8Viu/RVa3fqnU3uYYfEHt7/Y5B41vEdoOzqNqbREsmNHB5q/9hgsYozlvX13FS/v22BV/H3OvFLIUQrPXXI9AIjjBdsSZT39zsozfneitzm5SNZzhJG2RrNgz4aL4k3sk4Tv6NUIAu+6QhO6U8f1by4EDD4IiTaIuCrhtB3BQsVu+73zb5KaB+Y2hBk0LQTFAaPYsmdCuRWaSrU6lP42616EOf1emYsjP9wwt5TxvAEBFrSD/HtK373vhDJgJ6bCvNJ421ByrFhjTQK8Zyuc/5p+yCLAXa8qr7FzC1Tj2hWDZQqIKbQxjh5Vo6jRZCwizXRJcjQ8/8WJtXCeANxZv8Gi2wV+YlkzsfCYxPn0dCKVc28xQZi15UM8dow58jUEaPuIaY+HPqL7YZLP66Tn9ZsQJCQB9pZwUFgYziAcv0gu6G/j1ptp76nD0S5tcpilvVG6t5owqK/L5aFBR+c9h+GC6r4mnMxx+yWHLv1nyLMPvfKPR1Pnag2DlchDROJCQ1MrF+HQEuJ8L3/xgDg0VO4xf3wj3FVbaRhxqaxLkDg/4O5pBkC4N+jPOI5v1qNiK0gQsII/3SERm9uAe+/+ElvaKxQ5JxdFCy2UIjknBPh2GFruZSggwKeB2umO+irUy/AKF6ZlrYzLhajRne8h0eIhlNLt/+UZBr+jYo6ZDd9p2sXvlYWZFw93gcq8BZxQfxlQpRSRgBQjFifWu5nKslUOR/YpgL+NhInmZghV9/5MKajS5kOsUSXuu6inaTeRDtYV4lu2fDmdSXzJCFCx82yN+dePqHr0SSi6sSzY08lpkpCAUS/2aAYOG9PXXGRa0y/O3cVIPSQ0GeP/fn98T1sOra6UyewduSQOQ0NKRYHK1CYuIyzP5ldMBH4leTPOdc4UgLAf7fvh9Y0/2o1iI9YJZiAzcebIJjjPx85Fhi5QpYGtSeJ4rTtV5zVTAtPifD2915V4P9UGhS+g87IMDoWhkng9q8nYfolFPLKnJ7jkqh/d5jLbcYv2OxbXQC7bH38QHNgOOUizdfCB3cEzqB/1fUUydJ12Z6EKHWlXRnTMukHnBGtdCJ6RCUaE1AQOtx679mFbAO8UlnhkmCQfWEgXfbot/fKhc5E8tLsaSyv+XXD4yHdZNPHZQNlH3W2sRWaF0X2mzX/Uax+EXZtQfqXc23mVlZpzaX47UuWOkuZM2oTibYe61vqkMUZCRAzD+R6N9VEImquBImtmfNXR+v4Xv9F2hm5aazKRc8kvSnc3iI96eqLFazKPNZZ90a49CjBSlk8IKI6kPKQs1waDdjIRQXlUeZun0US8r+ysuw+CoxIS5i X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4ea8a55f-d50b-4fb5-717f-08daacea59b3 X-MS-Exchange-CrossTenant-AuthSource: AM9PR04MB8777.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Oct 2022 07:12:55.7221 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: MaC/jx+mqEA649Uq54/XNQsx8jOVBrOEzqD7QdLipsQOsd8I6csg5Eun0SX7OnSHMSw6PAcZAeuE1a5UTs/iRw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR04MB9151 Precedence: bulk List-ID: X-Mailing-List: linux-usb@vger.kernel.org From: Li Jun imx7d can shutdown domain power supply if none of peripheral in this domain is registered as wakeup source, this patch add related codes to check if power is lost. Signed-off-by: Li Jun --- Changes since v1: - No changes. --- drivers/usb/chipidea/usbmisc_imx.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/drivers/usb/chipidea/usbmisc_imx.c b/drivers/usb/chipidea/usbmisc_imx.c index 7bfbfc83cfe3..cc17dcd97856 100644 --- a/drivers/usb/chipidea/usbmisc_imx.c +++ b/drivers/usb/chipidea/usbmisc_imx.c @@ -939,6 +939,25 @@ static int usbmisc_imx7ulp_init(struct imx_usbmisc_data *data) return 0; } +static int usbmisc_imx7d_power_lost_check(struct imx_usbmisc_data *data) +{ + struct imx_usbmisc *usbmisc = dev_get_drvdata(data->dev); + unsigned long flags; + u32 val; + + spin_lock_irqsave(&usbmisc->lock, flags); + val = readl(usbmisc->base); + spin_unlock_irqrestore(&usbmisc->lock, flags); + /* + * Here use a power on reset value to judge + * if the controller experienced a power lost + */ + if (val == 0x30001000) + return 1; + else + return 0; +} + static int usbmisc_imx6sx_power_lost_check(struct imx_usbmisc_data *data) { struct imx_usbmisc *usbmisc = dev_get_drvdata(data->dev); @@ -998,6 +1017,7 @@ static const struct usbmisc_ops imx7d_usbmisc_ops = { .init = usbmisc_imx7d_init, .set_wakeup = usbmisc_imx7d_set_wakeup, .charger_detection = imx7d_charger_detection, + .power_lost_check = usbmisc_imx7d_power_lost_check, }; static const struct usbmisc_ops imx7ulp_usbmisc_ops = { From patchwork Thu Oct 13 15:14:42 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Xu Yang X-Patchwork-Id: 13005704 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 17ED6C43217 for ; Thu, 13 Oct 2022 07:13:10 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229682AbiJMHNJ (ORCPT ); Thu, 13 Oct 2022 03:13:09 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36524 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229724AbiJMHNC (ORCPT ); Thu, 13 Oct 2022 03:13:02 -0400 Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-eopbgr80085.outbound.protection.outlook.com [40.107.8.85]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EB80D1187AE for ; Thu, 13 Oct 2022 00:13:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=g/tQlRZdPXz4gypBmwiPI7ODVpN13SGbSNJyjgZ5N+cdAwHYlGcTJXBmXNjce1MHtzTzmEMBtSHVmVjzAaLrpNRzbCIUY80u9s3aDzGbeke3OIguHBto7oPouJXlH36wVm2l5tl2+kDE8/vcK6mPaHRUjJsLpDL8BaKykSCIlQ8Kjima+qLbYTuj240sUf6cOCLjlKWl7f7Yif3Rb3rDspuz6VVeNSx6lwbbpQ7YACoPVT6aEFahrlsJQLDBikGLoNol3brOS0QDOfXtig1VuNTZIbAzXwvzJo6fhCPt21XeofyXh6FylGrMPGpb403qHpphdtEmuQcF8Ird0GglHg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=aVdiW0xtN0nwn4+0z3MqCOmCDrj+xsI9ox4QCiTgzTc=; b=BFEpXn4/UDo6AlDPoDMEkxnwvnpM+bLzupC5BlrmNs+hFBErbAEVwKldCtXp1P8bOdqxo+Iybg3QDHmnIughZeIsweRq4KdrNTgePVueO69D677MqKEDgbFLQrzKCeLkI327R+jealhKkTcX/YLF4U5boR8jnXMYaNKWaO8lY9A8N1q5m9rYVHSNTQzc++u9dGUV/Kc34MesrFTkIrgrVq6TjDryfyoP/VOMPpdMcT1i0aSbE/KAEv41IINMOQgcxg/j6Xub5rjcmU+xt01UR0wTC8E/GHxX6y1JvXPWZOmwMMEw3s/En3rTY6L7GXXTr9C68bhUa/dvQbu9jVvVtg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=aVdiW0xtN0nwn4+0z3MqCOmCDrj+xsI9ox4QCiTgzTc=; b=lJ03pNrlkH/MHNRCPaG9on2f26ulNSbPhTIYKHyACnfP0FZu7z112aM2crd6bKQfh1P3q1FxTDlYgLaa36J00tI3MMf69Ss6X73TFXN3c0C76ABvLRQfQzUYNJL0NFkc55vTAxi2R/eosNGGwqd0Lod4t1FnQFel7FzWD1fj7r4= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXPR04MB8784.eurprd04.prod.outlook.com (2603:10a6:102:20f::23) by PAXPR04MB8444.eurprd04.prod.outlook.com (2603:10a6:102:1db::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5654.26; Thu, 13 Oct 2022 07:12:58 +0000 Received: from PAXPR04MB8784.eurprd04.prod.outlook.com ([fe80::855c:7884:639:f875]) by PAXPR04MB8784.eurprd04.prod.outlook.com ([fe80::855c:7884:639:f875%7]) with mapi id 15.20.5723.026; Thu, 13 Oct 2022 07:12:58 +0000 From: Xu Yang To: peter.chen@kernel.org, jun.li@nxp.com Cc: gregkh@linuxfoundation.org, linux-usb@vger.kernel.org, linux-imx@nxp.com Subject: [PATCH v2 8/8] usb: chipidea: usbmisc: add power lost check for imx7ulp Date: Thu, 13 Oct 2022 23:14:42 +0800 Message-Id: <20221013151442.3262951-9-xu.yang_2@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221013151442.3262951-1-xu.yang_2@nxp.com> References: <20221013151442.3262951-1-xu.yang_2@nxp.com> X-ClientProxiedBy: SG2PR02CA0091.apcprd02.prod.outlook.com (2603:1096:4:90::31) To AM9PR04MB8777.eurprd04.prod.outlook.com (2603:10a6:20b:408::20) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB8784:EE_|PAXPR04MB8444:EE_ X-MS-Office365-Filtering-Correlation-Id: 5cd8b384-52a4-4cd9-65e2-08daacea5b59 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Aq2e24fr1fgUs5zfZVfcHqbjDXPAnDnKfogatoRwC+3JWzbepGbp2czvCQWQdtXxXIMiGKPTLXfaL3m2qDdpnYXwI+mTSBllRhY0vOFLRrl15X6a5CHvlbUWuWacxzuVT6uJTB9yjNdR8EC2Aq1tDl7/EQ4hkVo5rNNpa7nc2ap8uaXW+cCB8I5uxN87pil8bbyD5H5R7M56n0fqfua3m5J9b5NAOmQePv+HXE9CQzZZzBUZCy4bxQKQQD5PNE+xfDMQiAa+ID1RjQXb9kMvhyI0VDiUtHKZPOExf6MNy3HU3YChZ9eccQLZ1e0LaXWG9IM+FTZ/HccAS5or7NnSa4NUg9wOMLVSCeCDzIII/x4oYLxyr/lfFHkE3S9OYgV9bVL0rT1JXRstg87358aIgW+ix/XKCOaccWE5Gmtfb/KCl+aPgL18jN1GMWX+QpdwKSvvN7YuQlvshzRM0Rj7aM2W8jPM3fjosDz8Ekl9IVKv9LV8qLasvjgTfjUYleZTsfopW0Ik6GEMsV59xw9e2/8RalS8OMhl1i7V0bHEfE5bfOC1LR/vFRYXnRuM8GUuzxii4M/vFBbLw0Hg9bqnMK43gYzZG0A09BnxJ5zj+7psDF3PfdnBVO4O3I8DyZKQUyjGwz00gtPJGeBHZPFMT//ydAHWby5VTRDdqFXT2dmcBMsur+i0tNcc4MjMlOt8C0hdGZD7EXysraKV5qhcV7mGTmxTZTCqO2duBIxkeDwogSL4qRzKfTebBwCg+fhvZCSL2KqApCiyd7Bw8zhv8w== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXPR04MB8784.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(136003)(346002)(366004)(396003)(39860400002)(376002)(451199015)(41300700001)(26005)(6512007)(36756003)(6666004)(478600001)(6506007)(52116002)(6486002)(38100700002)(316002)(38350700002)(186003)(6636002)(4326008)(86362001)(66476007)(8676002)(2906002)(66946007)(1076003)(8936002)(4744005)(2616005)(5660300002)(66556008);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: xrQDYfGsLM6I080V4NBpNmZ48hwy2eT5rsprHhsYbciRu5rjMjytJ9fC+47m6cRpcG6JFJHTrUBsJRRjykdBTR+U/DaACD+btps4++kDO0jnPu2j2LqCggtjKIwYPd8RpMTolC/NOTrqAiEJskaWfj5F1dGLBMOuoAUlNkwALVwLwJgLIEzaQfhxHTNPwT1Pw1hMTq/0TIkK89p1Fw8wqEOZEd5WNSVZFFMcEVPU2231pmZxieDITeSf0pWthAKrVa+Q6KjAyrKqIZ4ue7LSUgqM9L8NYd6A2gjtrR7we0qqac3r7uie29QKACDCpbCoaZKGK1sx5QoB+ouMIiew53gVh39ZrIKpL6I7sCDsu8k/hk8YZEB/cz8sO/ZU9XICooQ3gHlH1jsowucroetgvKf5/21ppAiQTkIHINeMPjandNq1Jn1SfOEoW9+saeYa6r4pEbFz+yz3asq/6Aei5vDP1obWpt9GLfGu4rRJ/sWXwGDQqxkydTbjTEpGftBNfyWV5wHL1KL9yqzMDOz6d+OTRyqEZiN+92Am375NuK4HukgEChBRyrY89SJ4PxJe8hCWIbzpFNh3gY9b45Qc+TlQXiiGhwgZZGhGIqmHKCzv/KS3QaorOZoJl30S+BGOGApDakS0TCJaz7YoNuZsNmZ9psW58TwKA4yiZ82PvfF8tLGLVTai9U6+fEklpaukKnBbmnP9YTq5drCD+h5Tc7+iOnqilpuHPz0KG4+m79dLTmRlo73rvMbKpNk2XttK1CJO48UPoraWCpH7naFvXCF90OSzd+US1Oor+4Ed0nTgOOg2RpxK9IkG4mtRftBuEIxec73yxlaQlIPOiLoAnsfh/I0DFRYqXnSluwNua/3/7yVyKGFUhJ0Zy64kAy97Qxg1lFh4BJ3mgLtk0TnW5X1p7pgozn5lSGIJfhYTlihTMQKSrPrUvbEYDehtAjRfKzCHZi4sCROvbcd2RvVOYjnwJFgZqLimmfgasps0hWbhgo0s95gPQQRql6PyYki6SgAJTKyPA1rAAeBtxpImgAogkQyJYbPh8rX1G1w/DRnumYe5AN3yTlJVo3NiIdWSICUr5ayQoeLebg2ZzRJJIgUkwsaHFyX7Q2hgqIuwhJMlI73RDQxAb67iVwb1mVXIx3hhn/5TfbQBnLYHpUqDMh+q+UibsgMEaG/GmZTe/36lDqiro9ogAI+w+EOCYPXNduCz5BEWU+XHv06JnWA1YYhbgEN60eN1o9LNUJpgiERdx9CeSLQfqgVLLlnsL6foUr4vVVz17wZtFR9f4fFfBUyzAUZGnQOyyrn2gcJemb67nC7Lm476gC0FprT0dHzwpre4siYNsq+gMB9k9eEwIB6bD+kWLmAeowW3XzrreYRoc3JPa/3l+J0iVDG9HDqXkKxErUFGE4vdWH7cxomUvtNTkKYyT9ivvxAq9NU3VIYdqeGDFhKtW0uaRJQRVQUImLJuDUtF0YMshYV00A9R8gjGfygUodZC6G6qcMAsh4HX3axhD6T/d/vWZ/dTlXd1WPIOhnrPU92SXFYuQtOYxrWSW0FiwVA2I4aMKdhc65jjRADOXOykXlq9Ls+WCDcL X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5cd8b384-52a4-4cd9-65e2-08daacea5b59 X-MS-Exchange-CrossTenant-AuthSource: AM9PR04MB8777.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Oct 2022 07:12:58.6137 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: XkyUqsUgFMMgPenMUX7WfCSW7hcVz86/uDXwtloewWev6l6FhaAVnOhE+KFqBC63yxAV+7ftFAdMKSFFB8kjIA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8444 Precedence: bulk List-ID: X-Mailing-List: linux-usb@vger.kernel.org From: Li Jun imx7ulp can shutdown domain power supply if none of peripheral in this domain is registered as wakeup source, this patch add related power lost check API. Signed-off-by: Li Jun --- Changes since v1: - No changes. --- drivers/usb/chipidea/usbmisc_imx.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/usb/chipidea/usbmisc_imx.c b/drivers/usb/chipidea/usbmisc_imx.c index cc17dcd97856..acdb13316cd0 100644 --- a/drivers/usb/chipidea/usbmisc_imx.c +++ b/drivers/usb/chipidea/usbmisc_imx.c @@ -1025,6 +1025,7 @@ static const struct usbmisc_ops imx7ulp_usbmisc_ops = { .set_wakeup = usbmisc_imx7d_set_wakeup, .hsic_set_connect = usbmisc_imx6_hsic_set_connect, .hsic_set_clk = usbmisc_imx6_hsic_set_clk, + .power_lost_check = usbmisc_imx7d_power_lost_check, }; static inline bool is_imx53_usbmisc(struct imx_usbmisc_data *data)