From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-14.0 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B69DCC433DB for ; Fri, 19 Mar 2021 05:13:40 +0000 (UTC) Received: from desiato.infradead.org (desiato.infradead.org [90.155.92.199]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 26F3564F59 for ; Fri, 19 Mar 2021 05:13:40 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 26F3564F59 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=nxp.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding :Content-Type:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:In-Reply-To:References:Message-ID:Date: Subject:CC:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=R0sUaJuGd1rV/rvTrZ0yuPi02uW+Au1VvWrqYzQ1p+I=; b=Jjt9csgp9ic0l5pwp2U0jiFfX z8fhhpixpMyQBUb3W8KoE1r05bAxKOKH5WudWnnaH3vpEqeiPKXgy+ouspE5nMH0ByiMGb9XrW5zo aFvPooVmBddEMLbyaH95q6yXkDYFkuR92x66U6LzaM/71egIyN+UvBthXx44ETIyC6Kof27DCXBbs mfrsvpebSD3UmlaJ1C44XjdLTmF2wt3Xi+QXFCmhJ2NUTsBNjxvAi537RZg4WzIa3BvFKuTOXJpqQ 7eGevd02aiw6O2VrYTXonSgLJYQQCNrS+yQDcVCGfKCYB7mxp2d26aHZX1iioWl3H/XMKVbnTkjL8 hOTNQtNOA==; Received: from localhost ([::1] helo=desiato.infradead.org) by desiato.infradead.org with esmtp (Exim 4.94 #2 (Red Hat Linux)) id 1lN7QP-006XOS-6Q; Fri, 19 Mar 2021 05:11:56 +0000 Received: from mail-eopbgr20047.outbound.protection.outlook.com ([40.107.2.47] helo=EUR02-VE1-obe.outbound.protection.outlook.com) by desiato.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lN7QJ-006XMF-Ac for linux-arm-kernel@lists.infradead.org; Fri, 19 Mar 2021 05:11:49 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=SlQdgUtyPJidf6oguuDZhkZfcSSUeioYtXvjJrFjfuLNr/rb2TWvj496Rpf8FWWSO8VCKQtOXpo+WCtX5qzw8hD00/MKZkM4tR+BneJsjwhWw/4mFNNRtM/EoQiOWUCh/FCjO5YzXhwyPbZgirQmi/B1IpvYrAie2atXIAzO0LICF3d2NQcoN2SE4GrFORMG91hfpS3Uyd1Fc8OUZqz676qCyvIPBGygQLfIG01/yqMTbnqqwqcnvbQMyJgLphPD10n4OUw59sceQFojECi+SxQvNX/8CpI6Y2r2fthl92vvFUzGsQpEV1W67k3PHVD+glRAB7Qz3kAQGLt2NMo98w== 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-SenderADCheck; bh=fezm3eT4o4WsavgRd47ykBVuGvrQ430gg9A16uX0dxE=; b=U0NykaCo2e0TLBJ9n7xeCoQaVciw84nTk2IF1NVir+p2DcqQYiWT0U0tXdGqn1oZRTUx4+2ptmXkxJkpoz1G5VHonPPbyuoSDA8LutyAR5yNtEYbEheehA/VuUOoc1qFe2T632jePaapujFn30sONtF1M3IWRMWCIfvqwTavox6zdKszSvz73U3gIxUnNq8KnzFlcGZo+pyhk/FvRsEzAhXlUVqR2Gpu6TjqN1Hpq+bkEVz/NeRnBsmc3g7RtzpiXqPtMxaU4Ds2eXQGSPfNWFt2BqTnSfaTG6a+31ccTxqQb+L6q2NW8N013Mu7edSM1fcP1h2QK15mrX2oMsRlQQ== 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=fezm3eT4o4WsavgRd47ykBVuGvrQ430gg9A16uX0dxE=; b=mA6nslk0wuNFcTTO2Z9/wac+kc1EKGgMzmnwDD5G6HZIt1wku8yq+gY3joQRIzb+DyTYgkpyjxNQrWFVtQQQNxAp0q4psV+e9Xq28aAhHT9qNKnoB7/wNatMEVa31BTDoOY/xQOlPaS89le7DOtQnS7nV2cnCVfDPW21ovQAa6U= Received: from AM6PR04MB4966.eurprd04.prod.outlook.com (2603:10a6:20b:2::14) by AM6PR04MB6648.eurprd04.prod.outlook.com (2603:10a6:20b:f9::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3955.18; Fri, 19 Mar 2021 05:11:45 +0000 Received: from AM6PR04MB4966.eurprd04.prod.outlook.com ([fe80::ecad:ebb8:8eb0:d359]) by AM6PR04MB4966.eurprd04.prod.outlook.com ([fe80::ecad:ebb8:8eb0:d359%7]) with mapi id 15.20.3955.023; Fri, 19 Mar 2021 05:11:45 +0000 From: Aisheng Dong To: Clark Wang , "shawnguo@kernel.org" , "s.hauer@pengutronix.de" CC: "kernel@pengutronix.de" , "festevam@gmail.com" , dl-linux-imx , "sumit.semwal@linaro.org" , "christian.koenig@amd.com" , "linux-i2c@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , "linux-kernel@vger.kernel.org" Subject: RE: [PATCH 08/11] i2c: imx-lpi2c: add bus recovery feature Thread-Topic: [PATCH 08/11] i2c: imx-lpi2c: add bus recovery feature Thread-Index: AQHXGvpZIWTdsAPvyUqcSyKJTGyhVKqKxpyA Date: Fri, 19 Mar 2021 05:11:44 +0000 Message-ID: References: <20210317065359.3109394-1-xiaoning.wang@nxp.com> <20210317065359.3109394-9-xiaoning.wang@nxp.com> In-Reply-To: <20210317065359.3109394-9-xiaoning.wang@nxp.com> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: nxp.com; dkim=none (message not signed) header.d=none;nxp.com; dmarc=none action=none header.from=nxp.com; x-originating-ip: [119.31.174.67] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: b90d8fc6-e0e1-4202-e391-08d8ea957d8d x-ms-traffictypediagnostic: AM6PR04MB6648: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:6108; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: HNUz3Vi1Tb107AHqMIyCC9UpP3uu3OS/RAhp2OvAMH25x5NhX9QV0HMdh+vvlzSxgwQTVKQKfRNPW9B+fVZOLkbQHJP5HZniipcUad/6s1XgvkTm9XVgsCs3AXwsUeSs7CNQ/qlgD8no4J70dc5+gNrPem3jfmIBWg8avltggifZ/z/Wn59GQyZssGXGfA/9m1SnFE1ohELQZ+EQG5kw6ubJjmiXIopylP/W/2jUpFirTsbWMxIrhOeMSEu1M6PL0pW3IVvpcNHtQTuwLtCt3jX2sY/XT8W+WKtH53aHcxK28qyb99Wpk2nAHSfDngs2xhl6OFMPZg0zZrfB6lh1vYe1LaqFs+ntHfG3oIFmkKg3/2InAPVlVISGYkS0cBmABJRy879bXoTv8dQcgXH9NzbsJQUMjfgoY7f6ucE2kji9eHjZ+Dh/cq8ZymN9MTCA3y7dnx/xzejhHGil0EAci2oa2EyNmDa/ejCb4+SNz295/b/MGN1a07KtpcSd+u1MFmTXJ1S3VgQL79BcMRqx2UugBrzwMKQyBCYXh1BOU7Z5HBGfYezO3fIqGvyBOUMxHHfvg9RpYkn8DRJ61jHQaSDCfwZDuZPuSDYx3Wc7sNDfPoraeuoRYWdIHrQOysola/uAj9yPiBXT090ueL1F3+HUhXI5l13NApOBPUlSTXQ= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM6PR04MB4966.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(39860400002)(366004)(346002)(376002)(136003)(396003)(8676002)(6506007)(8936002)(478600001)(52536014)(33656002)(83380400001)(110136005)(54906003)(38100700001)(26005)(186003)(4326008)(86362001)(7696005)(66476007)(44832011)(316002)(66946007)(66556008)(55016002)(9686003)(5660300002)(66446008)(64756008)(76116006)(71200400001)(2906002); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: =?utf-8?B?VFFKbHNmL3RxK2lXRythajdTTlFFOWN3Z1N6M3E4VEU3Y2dWcmRrMU9zS1la?= =?utf-8?B?bUhDSHR6K0dyYVRQZjRDQ2ZMNWlDd3cxOGozeHRrbTFFN2t1d05aL1MwTTBK?= =?utf-8?B?NzNES1d6SmwwbXZuQ0NILysyS1dTdE92cmh5MHFkTCt2Z05LQWYraVRDRDBP?= =?utf-8?B?b1VoZTN4d2ZZK2k3L3UxVGhySHRlOWl4WGg5VVBhOHNtVDhmeklOVE1WR3or?= =?utf-8?B?Z1ZqdkNFSXdxU05zT2o4ZTMySUFJZDQ3SVhKWEIweGsvZXpNd0Rkenp0cEV1?= =?utf-8?B?cXpLUnRuaEQ1RnBpSC92bzdNZ2tEM1Q0UVVVQTlxRmRnUk5XVlk1NTJTK24r?= =?utf-8?B?RVZLd0V1c1Q5L2Z0RkNTNU1uMVJKT1psNzdDZEdRTXFDN2dsSGJ3QTRQNkh6?= =?utf-8?B?ZEUvUyttbktJOUZmaTlQTkdnOEdZTW1sNjJwVkZJK2g2anhEUXdLM2E0V0cw?= =?utf-8?B?SnhVOVI2RXRmaGd2cjQ0OUJHd3o1WXhHendBWmVxZmpEdWNKS2xXS3o4SVQx?= =?utf-8?B?UTRXcHVpcXB4NzV1akN3cnkvMitnSThPbnN6ME41eUNCdjlHai9wV1g0M3pi?= =?utf-8?B?cThzR09BMzE3czdQVFgvT0ZVVC9jMVZZM3lmcFNDZ3dOeURXUE5ZZk9Cc3ZX?= =?utf-8?B?QS9XSXVtUUora1BFTmF3N2xsVDY1SWZKbUxtcnREVmNoSDF0RXVucmZuR2dM?= =?utf-8?B?NWpmUFFyeUt2ZlhTM1RhWkxxTVFoZmQ4QWJ3ZVBZdXZTajlyei8ralpLdHdL?= =?utf-8?B?cGRSM3g0dFlESFMydXpkbEQvenNmY2N0Z2duSVUyT1JHQXhhNW56QUVvTUxN?= =?utf-8?B?eDFaTWZmNXhzT0ttTEtwME9vUmtkZG5ET0hhRFYwOGU2N2d2WjRNeE5vUER6?= =?utf-8?B?NCtyYVJ1bU1mM0EzYXltNzNXOW8zdDdkTllCOUhNNjA0STZpOGNKS0hoeWdo?= =?utf-8?B?NVBNeTRjSG40UVdrRXZwWXVLWW1qdnpVcE1QTUxwY2xxMGhwZ1hRT0J6THhn?= =?utf-8?B?bTcvTWJhOVpLRGFsY3A0MW9Gd0JHVWplZkFGNE5JbktKRWRuSzFGYVpCaVZp?= =?utf-8?B?a0ZzdmtrK0Q5bTFzNTZXU25pTEdZdXlwSFdzQXVvSnZkd25FZDZpOG85ZEpp?= =?utf-8?B?ZXVuZnlPNVBZMjZ3UWt5a1NHVy9UNmZYVlY3WDdQQ0pFQUhpZDNNekw1eFR2?= =?utf-8?B?Unk4a21VdzJKNGc0cHpRb3lRK2l1TnBmNXhGS3hFY3JDcG11T2E0QmtaVGha?= =?utf-8?B?Nll1S2ZBWG1kWWZSczA1RSt6d1lGd0pMQzVFa3Vjd1dwUXFjWW9kUk92dFFy?= =?utf-8?B?Vk1yNUxBK2hvMko1WWdzZVIxM1dIWWROTmJOZTZKVXN3MjVsd1V1eFVFc1p2?= =?utf-8?B?QW5sNGxlUTQ4dWhKeEMycHM0Z3lESFIzYzMwVWhiNjEwcmJlK1NtQTVPK1hI?= =?utf-8?B?RG94cTIzZmE5djBmL3U5ZlBNc0lDMVdnU3ZkdHEvODRQQ2Q0dVUvRVgvNWtF?= =?utf-8?B?eTJUdFFkMndOWFRPNC8xZFArUG5iSW9TUHNmMjJiQ2l2RTI0VEJWM0Z2RmJS?= =?utf-8?B?U3hPL0xqWnArOWw1M1d1ekFCTlZWYW5IbG1ZcWlNejdaNWRMSE5lVUJ5SVEz?= =?utf-8?B?V1k1dDBCdGJXQ0JzczNPTWlBQ2JFOEdVRjU1dVJCc0FiZHJGeTJScmlJT0hK?= =?utf-8?B?cjl1L1VPU0dVc3l0OUVqcUFlZVE1b3NDMGh4VEZCQ1hmRHJ1cFpNd1NKMXhL?= =?utf-8?Q?DNXqQGT7ousKzyk2NyFodxAiuA11MDTYsJajeu2?= MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: AM6PR04MB4966.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: b90d8fc6-e0e1-4202-e391-08d8ea957d8d X-MS-Exchange-CrossTenant-originalarrivaltime: 19 Mar 2021 05:11:44.8710 (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: zXqrlTH1k6CYy/3W1JkZuCHsrcstr5gOtoCAixIHB3XsQLDPgsaKiR7cqvaoh5OvllJ4nbaFj2QlhW2jmbLfDw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR04MB6648 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210319_051147_494286_049F1912 X-CRM114-Status: GOOD ( 26.93 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org > From: Clark Wang > Sent: Wednesday, March 17, 2021 2:54 PM > > Add bus recovery feature for LPI2C. > Need add gpio pinctrl, scl-gpios and sda-gpios configuration in dts. > Pls also update dt-binding first > Signed-off-by: Clark Wang > --- > drivers/i2c/busses/i2c-imx-lpi2c.c | 83 ++++++++++++++++++++++++++++++ > 1 file changed, 83 insertions(+) > > diff --git a/drivers/i2c/busses/i2c-imx-lpi2c.c > b/drivers/i2c/busses/i2c-imx-lpi2c.c > index c0cb77c66090..7216a393095d 100644 > --- a/drivers/i2c/busses/i2c-imx-lpi2c.c > +++ b/drivers/i2c/busses/i2c-imx-lpi2c.c > @@ -18,6 +18,7 @@ > #include > #include > #include > +#include > #include > #include > #include > @@ -108,6 +109,11 @@ struct lpi2c_imx_struct { > unsigned int txfifosize; > unsigned int rxfifosize; > enum lpi2c_imx_mode mode; > + > + struct i2c_bus_recovery_info rinfo; > + struct pinctrl *pinctrl; > + struct pinctrl_state *pinctrl_pins_default; > + struct pinctrl_state *pinctrl_pins_gpio; > }; > > static void lpi2c_imx_intctrl(struct lpi2c_imx_struct *lpi2c_imx, @@ -135,6 > +141,8 @@ static int lpi2c_imx_bus_busy(struct lpi2c_imx_struct *lpi2c_imx) > > if (time_after(jiffies, orig_jiffies + msecs_to_jiffies(500))) { > dev_dbg(&lpi2c_imx->adapter.dev, "bus not work\n"); > + if (lpi2c_imx->adapter.bus_recovery_info) > + i2c_recover_bus(&lpi2c_imx->adapter); > return -ETIMEDOUT; > } > schedule(); > @@ -192,6 +200,8 @@ static void lpi2c_imx_stop(struct lpi2c_imx_struct > *lpi2c_imx) > > if (time_after(jiffies, orig_jiffies + msecs_to_jiffies(500))) { > dev_dbg(&lpi2c_imx->adapter.dev, "stop timeout\n"); > + if (lpi2c_imx->adapter.bus_recovery_info) > + i2c_recover_bus(&lpi2c_imx->adapter); > break; > } > schedule(); > @@ -329,6 +339,8 @@ static int lpi2c_imx_txfifo_empty(struct > lpi2c_imx_struct *lpi2c_imx) > > if (time_after(jiffies, orig_jiffies + msecs_to_jiffies(500))) { > dev_dbg(&lpi2c_imx->adapter.dev, "txfifo empty timeout\n"); > + if (lpi2c_imx->adapter.bus_recovery_info) > + i2c_recover_bus(&lpi2c_imx->adapter); > return -ETIMEDOUT; > } > schedule(); > @@ -528,6 +540,71 @@ static irqreturn_t lpi2c_imx_isr(int irq, void *dev_id) > return IRQ_HANDLED; > } > > +static void lpi2c_imx_prepare_recovery(struct i2c_adapter *adap) { > + struct lpi2c_imx_struct *lpi2c_imx; > + > + lpi2c_imx = container_of(adap, struct lpi2c_imx_struct, adapter); > + > + pinctrl_select_state(lpi2c_imx->pinctrl, > +lpi2c_imx->pinctrl_pins_gpio); } > + > +static void lpi2c_imx_unprepare_recovery(struct i2c_adapter *adap) { > + struct lpi2c_imx_struct *lpi2c_imx; > + > + lpi2c_imx = container_of(adap, struct lpi2c_imx_struct, adapter); > + > + pinctrl_select_state(lpi2c_imx->pinctrl, > +lpi2c_imx->pinctrl_pins_default); } > + > +/* > + * We switch SCL and SDA to their GPIO function and do some bitbanging > + * for bus recovery. These alternative pinmux settings can be > + * described in the device tree by a separate pinctrl state "gpio". If > + * this is missing this is not a big problem, the only implication is > + * that we can't do bus recovery. > + */ > +static int lpi2c_imx_init_recovery_info(struct lpi2c_imx_struct *lpi2c_imx, > + struct platform_device *pdev) > +{ > + struct i2c_bus_recovery_info *rinfo = &lpi2c_imx->rinfo; > + > + lpi2c_imx->pinctrl = devm_pinctrl_get(&pdev->dev); > + if (!lpi2c_imx->pinctrl || IS_ERR(lpi2c_imx->pinctrl)) { > + dev_info(&pdev->dev, "can't get pinctrl, bus recovery not > supported\n"); > + return PTR_ERR(lpi2c_imx->pinctrl); > + } > + > + lpi2c_imx->pinctrl_pins_default = pinctrl_lookup_state(lpi2c_imx->pinctrl, > + PINCTRL_STATE_DEFAULT); > + lpi2c_imx->pinctrl_pins_gpio = pinctrl_lookup_state(lpi2c_imx->pinctrl, > + "gpio"); > + rinfo->sda_gpiod = devm_gpiod_get(&pdev->dev, "sda", GPIOD_IN); > + rinfo->scl_gpiod = devm_gpiod_get(&pdev->dev, "scl", > +GPIOD_OUT_HIGH_OPEN_DRAIN); > + > + if (PTR_ERR(rinfo->sda_gpiod) == -EPROBE_DEFER || > + PTR_ERR(rinfo->scl_gpiod) == -EPROBE_DEFER) { > + return -EPROBE_DEFER; > + } else if (IS_ERR(rinfo->sda_gpiod) || > + IS_ERR(rinfo->scl_gpiod) || > + IS_ERR(lpi2c_imx->pinctrl_pins_default) || > + IS_ERR(lpi2c_imx->pinctrl_pins_gpio)) { > + dev_dbg(&pdev->dev, "recovery information incomplete\n"); > + return 0; > + } > + > + dev_info(&pdev->dev, "using scl%s for recovery\n", > + rinfo->sda_gpiod ? ",sda" : ""); > + > + rinfo->prepare_recovery = lpi2c_imx_prepare_recovery; > + rinfo->unprepare_recovery = lpi2c_imx_unprepare_recovery; > + rinfo->recover_bus = i2c_generic_scl_recovery; > + lpi2c_imx->adapter.bus_recovery_info = rinfo; > + > + return 0; > +} > + > static u32 lpi2c_imx_func(struct i2c_adapter *adapter) { > return I2C_FUNC_I2C | I2C_FUNC_SMBUS_EMUL | @@ -607,6 +684,12 > @@ static int lpi2c_imx_probe(struct platform_device *pdev) > > pm_runtime_put(&pdev->dev); > > + /* Init optional bus recovery function */ > + ret = lpi2c_imx_init_recovery_info(lpi2c_imx, pdev); > + /* Give it another chance if pinctrl used is not ready yet */ > + if (ret == -EPROBE_DEFER) > + goto rpm_disable; > + > ret = i2c_add_adapter(&lpi2c_imx->adapter); > if (ret) > goto rpm_disable; > -- > 2.25.1 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel