From patchwork Wed Sep 27 20:25:58 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakob Hauser X-Patchwork-Id: 13401647 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 DDB55E82CD5 for ; Wed, 27 Sep 2023 20:26:27 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229816AbjI0U01 (ORCPT ); Wed, 27 Sep 2023 16:26:27 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36630 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229804AbjI0U0W (ORCPT ); Wed, 27 Sep 2023 16:26:22 -0400 Received: from sonic308-18.consmr.mail.ir2.yahoo.com (sonic308-18.consmr.mail.ir2.yahoo.com [77.238.178.146]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 37A29122 for ; Wed, 27 Sep 2023 13:26:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rocketmail.com; s=s2048; t=1695846378; bh=hDLUWsH8joUkniff0C3Oe9ygMa4HUYwvyG5RfpCwNKk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From:Subject:Reply-To; b=dYgBHngpECMSoY3J0VqWvCvGpW0qLj7Yjqab69mXSqBv71dgAY/LF/paDiKcX3l/adKTRye4ric8zqbuw34ncYZuyXxM47TiMTJ6ES3Ym71qtluS1cPzxyqy1WdOE0kRqZD85uk6cmHVIkYfH/96hnxXD28v6FHOWJRwRCH1mUWtw1xftd4arbHnYEYB+1iwV2dxdAU5eIjg8qpnGKCIUwgrVFEPkE6vGfJ+DxmBwpmAUHuwJ0zxOAY7Hun6SruHfKSs5wvA9GBwjGaWPmR3RDWrKELybIPsGMbi90evEsVKSrMe5rAf1agJYMFqD4XTr+UjXRIMMuoVI2LSwe7Zzw== X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1695846378; bh=t95m5vtyc+f4iBpd/P6oUkVMpieetX/nhdphSx07AfP=; h=X-Sonic-MF:From:To:Subject:Date:From:Subject; b=XOcoyTsgGBC7/VsOhKsFHYveUlGq6dDxhyEVsKCd4OHM+mofzLFSdFIkkXI+oW+mWkBIZ0DTiia9hto4ifmCvZBQuaRi1ozgJLyNMkYo9hqsaggYLUoIDMxK9kGYuYBXLak+hbGPdUkV0Z/UhZHWFOziTh4t+4fXPPad///HgATHIo4SY/PU95MdQdwHkTUspcUa3JZtrj1CVjQq08eYo3ZkP7bhVCDrByCTsCoibVkkL9XFoX36HX3dyqjc/chccY1hPuo7oEoadJ7JnHIEQErvP6GmzkeCwazar+8yX3Y2Yshb1k6bsLcq771R6MvQMfQTqLL7wARuuhZV1aBYeA== X-YMail-OSG: zqPgAlMVM1kU6AbOKSVhjKhg_KR3wO76QoDwTYPxk83xyBiWjvmKBSHkVTsfe_D HcAix9mup_yIXleW8nsymEgkXr3f37Dfuo7M9.J_1oJS2O_QatbExH1bGcFLP8_RGb17yMSROtdv nOG5inpm24j5N8y0XnPqnVZDSUHOuHNWi5xNa4fmd6N8jjaiC5QWvHkPmdcHVdzh_Aj6ZT8Cofg4 DRpQsAtp3usHC.JlftPsRpVPEwIA8ZSwTG3utNIO_pZ1wuKe98m_VvqUc9py0Ic2bWx8Y9zQw_Uw 4sIQ6BILUCV0J05euqA4h2JDcnGhuYY0wpkK72vsAASaq2MlxPIlEg6KNKX.4fsAtGlUqSEimpE_ MbKHEbSNl5Z_rFOnsXudASFDmjbQAiDnQyje1OItTVEt2coXu9CfYRCaUR9gsm9wDKoyj07i9tst eA1DqsGGnK4h7x66jhfVlwYu3lW628QYlwOSHGP95b1944Jo6PYxtq4AGE6hXKcjRPGcjJCu6dC9 LDayAqJMfN8asflhTgEEx41T.KAJ_GxmXwGvAhdw2.nKlmx2sejwmgvrVOA9lTNq7ap2NTxZfhdD 5RLeWa14Hx8JjdLXRHKTMI0RZlENmhFzM9cip1cL_DWqyYKSFmblVkqOGeosCFZkYSfkJX3bWDpu b9cB.tHKhZu2zoaZeK7tmLANkvd0CUgPnH4v99HlUmBvcCakkiPVydsoI2sc7K2dyAhmmBOJjrCN XjOc8.Dceydl.aQfX4taJOs3R9FD_FrCgL.H0rbFEJ.NBTy8_Zg.nXGhZxNTx5MqXl5eVnjXffeJ 0oqHDr7xOamE2799GcgKAj_YyyqVkWLjkBrHndJkcz9hTKvMnn_szIEWCtzhYP3dURApsk5n_I3m CQ8arxBg5.B0hiNqTNt0HkT3s.NwS7jcaZZTM6BRJAEBzX_54ci86ljhYtaOGxY9KEvsUKMke.iH 0dSG88HO04UvGsyUkxdLXdC98ibxmoXauyisl0_pRUoKbKytsZWxKjwsCl1h2BUh2gstiL4dQXAO oRj3j9s7nB7_SKs5i6mt8kGKJZvGCZChbgHMsUI3PL7mK43IpSyGHh4XU9bt3gBxlhm2ly1XqzPc mQvTg3.RewpTRT1.8zJmR1.SCE9hxDWZQwrDiYbaFBngpAw4OEx5b0FOr5mH7JyF9x_WiTShmhYn 2feHIaxnqPFXkIHpzxgYl0ByegFHyWgIrbVR74qtY2BSaREXkGiqerre35sAq990qZxdZM..MFE5 rJJxe4OPCbYiWcPYlh94HbTVqbne5EmNFR_tAtbXB.itJKEnrgbc3Oayj5dqPz9V53MXi5Rswflj 53EOAkFgEJQRLix6Y50LnNmn4ZgENKpEBnA8kHTWZvbsq1oTRpdAQ8TPRoHaTl44j4htn9uBQ9eb gXY2aN5tQbrLbeZoVvyGF0gIWBdCK8gMm1edEGb5YhCBXatk0dj_wRua4hxFUb156uYOALfJrIsP 67qaobjAnm677TTgUUTWh32sNNyJuOb7ODeeDpOL3emL1l_TiIW8KFCcMwke7SI2TR4ykYlj_5EQ m7sz8U6KXjrqBjW84STQ8eGjk_d84UD3pQVo4ofO7PC89K2fyZY3U_bx.0Cm0pnsEn6qExz7AC03 SdDc2ZO.5k7beGqW_Cxy5nDG5ndzbm.JGOrolw5zqHt4MKv6EqJAYDUKYxgO8X5ng6GaSPwIDOmr Z1PiT7aq2MASospDf.6bkP60lgWpfDtqPim5fFwer3LPzQ90a7pVhkuoaJL5.y8XeI1sAhieVwjV JxOuG11SYnkk9BGgG2HaHStjobTGi2fkuG9J_ntceshxushyWHc74GwNbK2oKviVBj1AIxFv4vPY IU0_u_zGeJrito5wxu4g6Y3nBObJFWKTFirPPWEP4oEOAIKh2xWjSI9QeopirPgacN6UbnPFmttI jA9e0vtjNADxF2bJz0AqI4Sr2rZURIglrVP3Vjo1kFxgmsfrByzxByLYycpozIFfgaxOb3.Prrig XKSk9prSrHRqRiHvznbEjxk_LY5m5KmZEFANK4.CrgFSYqF5WTX44JfVOGgQtVQ8tY0_89p_JLGe qrhYuyouAL8lfg.A1VemMvgyLxlTSO0GZddSmXG9VhQDXb7hetZN0Pm6u1AGQONTwShRv4trh2.Q 4xmuZuYkJz0zl9hFp_lLbGI4GXsH_vO6jm6pWp_95_nbDLMaX1U_zhqns4XU0c.70oNQ1bgjegAi cF0fbZPLl9HYVKzU.yIxd32wvAlQjIqgaoZT7jZ.99ov66ZxD1gn9bzrQmbZrpFW_apcikMpqDem s.pNey4DUYq4hjLphIrQCips1lIoZE.Q- X-Sonic-MF: X-Sonic-ID: 69e5c1cf-7177-458f-94d7-9af5f35ebc00 Received: from sonic.gate.mail.ne1.yahoo.com by sonic308.consmr.mail.ir2.yahoo.com with HTTP; Wed, 27 Sep 2023 20:26:18 +0000 Received: by hermes--production-ir2-55db9d9d5-5hvhf (Yahoo Inc. Hermes SMTP Server) with ESMTPA ID 1d998f486e26fd309cd8d11c694d3a2b; Wed, 27 Sep 2023 20:26:15 +0000 (UTC) From: Jakob Hauser To: Sebastian Reichel Cc: Lee Jones , Stephen Rothwell , Yang Yingliang , Christophe Jaillet , Stephan Gerhold , Raymond Hackley , Henrik Grimler , linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, ~postmarketos/upstreaming@lists.sr.ht, Jakob Hauser Subject: [PATCH 1/5] fixup for "power: Explicitly include correct DT includes" Date: Wed, 27 Sep 2023 22:25:58 +0200 Message-Id: X-Mailer: git-send-email 2.39.2 In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org From: Stephen Rothwell interacting with commit 12cc585f36b8 ("power: supply: rt5033_charger: Add cable detection and USB OTG supply") Signed-off-by: Stephen Rothwell Signed-off-by: Jakob Hauser --- drivers/power/supply/rt5033_charger.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/power/supply/rt5033_charger.c b/drivers/power/supply/rt5033_charger.c index c0c516f22c66..57a0dc631e85 100644 --- a/drivers/power/supply/rt5033_charger.c +++ b/drivers/power/supply/rt5033_charger.c @@ -8,6 +8,7 @@ #include #include +#include #include #include #include From patchwork Wed Sep 27 20:25:59 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakob Hauser X-Patchwork-Id: 13401651 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 60834E82CD3 for ; Wed, 27 Sep 2023 20:26:30 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229830AbjI0U03 (ORCPT ); Wed, 27 Sep 2023 16:26:29 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46912 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229879AbjI0U00 (ORCPT ); Wed, 27 Sep 2023 16:26:26 -0400 Received: from sonic309-25.consmr.mail.ir2.yahoo.com (sonic309-25.consmr.mail.ir2.yahoo.com [77.238.179.83]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CF87F194 for ; Wed, 27 Sep 2023 13:26:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rocketmail.com; s=s2048; t=1695846381; bh=9liyMz7dI1f+ZL0FPhVqZI8KcCxBwUJ44/9Y4J+NCAs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From:Subject:Reply-To; b=WVg6RslXc2qnSULPWmT+6JOcThZxRvZ+t+4j5fOS0/zIh/TBtadYWynO59F4H2pRewwFkidgl90TNnFNzV3gcB4P25Ltl4f7Qq8fqBjsEjfuh/27HWxXKYm69mOVs/fP6+GkGnK4MfF/eq+z7weCPaf4c/0bKsoMOR/XyL28uS95mpeTyeKtAKU5+OI6QxP/sMOrHFAR98MoBP22wrwEYI3hdNyDsuxXgxSYfEINn/GRAimYKJj4118kNpZ7g/D/7tWpYLjCnxvOPuqEwu8caChvi9UJ6QPR8FD5M1YbnsFKtmDtwijqZb6gv18MxbzUf6JGll0X/TgYWL24gEKIzw== X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1695846381; bh=fg7zFwGRmLa8czAJVDF4rudTssn6wSYGSaIg21XlQKK=; h=X-Sonic-MF:From:To:Subject:Date:From:Subject; b=kBAdqHBu0RNE4YupUErDaFB2UFI5sO8GNH63iDJMvMMXqZbGK95qiwLYDZ5/Mni4dJMorhfP3wyAy1t4Lku5QH6HEYwnwal44jAdMK2TomsT0cdg7e++vD5QINpYeBOKUDHQzIJZ7LA3ZR2IPYNZpNACrz7CL+jwchamrKPGDKQRKIt1LLCzltMfD+d/5DQvuey+wliL8tkDuwVp2kVDiDDPTj0rw58rw6KPkUPRAaOn5YAPbJ+NRYBw4dRXza/rgJQmmnMJaye1fkk/rEbRmBO+NXEbEgDhRfHFCR/AkQuGiaV/Rv/+JgVyQftk2eqm6znS0IcIbqb0CxHQNm3NMA== X-YMail-OSG: UnrsOS0VM1nFQQ5w7LbiOI5L1tY0WRw.YpLT5lkYdAMjFpyUCy_wp9QwmHncOND _PrTfHq94_RkB0SHB7oCUFJhiZ6jCK2aXdc7gfwByVsXSvUBGXUUs.63pqkTs9R2jSTfh5HMvL3H 4Jqi0VJbY2Mfn2eOh5cuWSz0JUFOu3kl1M9NHpMDk76_SZeJuuVZucFUZPhd3cjtG01WWRHJ7AEJ Tlmgsr0Z7oXor881B.ZNq5mFw5jEXstIdtVFmu7rKhlgB9zbcs7oKUkeGR.wZrMmbRMIsdfsfKhg TREJ9huCgm56cUe2YG_EMqcr7KrGXdS1YN_AQVIoGGlrza9VWthGxEL55_4r7N.ZN8jG0KFmP1Bn AllKB5IIUYqjvKK_5VnREWv3fWdMbUtAQudoXH6Em5cAHGTKZsEe4RLfOZyc9eY3oHdmUYsT8BkZ 6Nm_Bo6DhlDflWRLcW_041ytizWwLrfBKeiHnLsf5Txn4g_pILZi8zNdyTXOQFvdcnNu7IyRnsDR C75KJ6KFFIfIenzArGFqpWUbT82tAPO.6O18PbL4Adh1BvmjfJefjR0CsmU1XQNsRCjZRYJg8pQq G_4bDPSRUKM5.urI13wNU7iCmpgGuynmKliNAnvoCwQDO1vXaPpMGOpYVA0byML6IApsf45b7ofk .qA1QGygSs8QJ_ZejtgFkKxWAzDeb5BjQ0VXuli9ER_baR0GznJ1dtg7zgxmk2ZCUkaPacMccK5Z w2Y3qUcN7mSVpqecW0h7GBhXu3UIm..PXslN4KD3YBj_1jkDaeQpwph6DikdXQSgQ3.dI7DPTihf OjIlHK6PCCUyNqpxoc_qXzMsjD8YYF1BMWcv5axn81LFMRoUoHhrohFGWLhZc5BI_45MPaQ5gptn 3xpAV88CinYLDP2GXi6zFyPzEP8Gr90kbq11aGiqgH3h7x2F0UZZiDclzzgLM4b24Icf7zQucjTw 8RdArWVxVZzvYlhaiEKY_V3YvWN.0BDI5nG8LWu6jhP8H16.HJiuqt2KK362OpFH54xv70B8Iv2j xCXmP3mPNYDjqAGbGplHzPEGqccAAnEyl8D.nyjGGTl3usT.Ze5JeO_4VVs4KHpKtDyeMkNeTfg. MZg_OK0_4CDppnWHEgnGgWqeu7U9YrDkOLctDiqlTCRQeyzdJ18LTzjCSwgtVx70HHtyKxPBH49_ 9o6DgzN_XrsyALsyzHN.PeCSV_adsevnbyIL7rmFFRdvZO0wffJHEbordIhd3vTUbYlWvFY62R8c gQl7kE2kQT22jSPAHanNY0ViyHCQkOdT3UfQP3DIEH5Br9j.DJdnmwIvi5C1V5wOCmRPRVhpyxqP s1tPBHuu5GaqChNhw2bAkd3d1YoEwjO0YR_szBtER8aP_0Twymy5Bf4c5Rs6ahR0QSRYYOp.1tOZ Jjuq5VNfhbAUBuhNFIxQQcvgCKIn1ggbdwTU1B9I_eK_9_B9XlRdrz787JnJlqt6GeE_7PmOaXpY keNyXxJe4f7At6Q16YvvkhG.nhFH7ZFkur8.KbsGJCsn1YeBdwiKcq5RwWGIjScQ8HVLsfi5MhfF 5Dic2ali.3A2sft3Hp2zIhtYB.0QZRR.fuWe1B2DQM9z130i0VULAJYasoOcTTQcTByHRUTGSsMz WcRouMHb_rc9.r4ex_Jm9a1OZNAo1pq0dmk1c6dLMbaaVKN5eiicj1_obnuP5rBKX.daT_lfA_nM T5CBCBDVJKOINeu1MaaXgp9nPTXnZw4I2EapJ5b7H7cnhsc9wPfxfOq5PXpOUVLqMg0ptDUav9ak pcYhIF_wn9bjqljp6x8ZqePe4GjYsXuQLucUoCUYlY4NX6UiJXFyFTiMdn3lDjQtd4X6abfz0gCV 2aq0GFRYy637AzglLOCAYVPKQ5ZJTwlGPneQFVzoiG2KeBbuvPptIyV.TE3aKoDGpOaKymQV2rBr AJ01fkele2rFYt3Rz3Odtw_G3d2UmvghCdJxyzlIF.fmLCLL0sWKEJ.NEFvG0SV6ZEyHufXP4Lgg gBAm6OGGClmzzUugy9LXNRPqZlDqCOIiUQxgWEc4jqfMe4JrkmQM4bB_4qEVWxXkOYD8pGLe6.ZH WALE9uMIcwe2kUOD_g4A8_cmg0Dinxgcw1_NfF0yTZxVZaxlQzRyf2BEMPmD813lVnG5kS5.7WLc 7DFxqEdAF5Uymts6qn6DbccsAuQoPLBV52YnpoDTrPIrET3nA62i2Y1MUD2Zihprs11YQZt4ElgB _xvCarOIYq1AMY9Lfdg3.XuP0rB1cpzh2m7am1V17nxemnPdRPhWttsqSVRLccuYiwXl_445rX56 2YPsd44KwP6RRK2wMtkfK6LA1SNLdiSOq X-Sonic-MF: X-Sonic-ID: 29f307a1-56a3-490b-baca-1e117cd0e593 Received: from sonic.gate.mail.ne1.yahoo.com by sonic309.consmr.mail.ir2.yahoo.com with HTTP; Wed, 27 Sep 2023 20:26:21 +0000 Received: by hermes--production-ir2-55db9d9d5-5hvhf (Yahoo Inc. Hermes SMTP Server) with ESMTPA ID 1d998f486e26fd309cd8d11c694d3a2b; Wed, 27 Sep 2023 20:26:16 +0000 (UTC) From: Jakob Hauser To: Sebastian Reichel Cc: Lee Jones , Stephen Rothwell , Yang Yingliang , Christophe Jaillet , Stephan Gerhold , Raymond Hackley , Henrik Grimler , linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, ~postmarketos/upstreaming@lists.sr.ht, Jakob Hauser , Sebastian Reichel Subject: [PATCH 2/5] power: supply: rt5033_charger: Add cable detection and USB OTG supply Date: Wed, 27 Sep 2023 22:25:59 +0200 Message-Id: X-Mailer: git-send-email 2.39.2 In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org Implement cable detection by extcon and handle the driver according to the connector type. There are basically three types of action: "set_charging", "set_otg" and "set_disconnect". A forth helper function to "unset_otg" was added because this is used in both "set_charging" and "set_disconnect". In the first case it covers the rather rare event that someone changes from OTG to charging without disconnect. In the second case, when disconnecting, the values are set back to the ones from initialization to return into a defined state. Additionally, there is "set_mivr". When connecting to e.g. a laptop/PC, the minimum input voltage regulation (MIVR) shall prevent a voltage drop if the cable or the supply is weak. The MIVR value is set to 4600MV, same as in the Android driver [1]. When disconnecting, MIVR is set back to DISABLED. In the function rt5033_get_charger_state(): When in OTG mode, the chip reports status "charging". Change this to "discharging" because there is no charging going on in OTG mode [2]. [1] https://github.com/msm8916-mainline/linux-downstream/blob/GT-I9195I/drivers/battery/rt5033_charger.c#L499 [2] https://github.com/msm8916-mainline/linux-downstream/blob/GT-I9195I/drivers/battery/rt5033_charger.c#L686-L687 Tested-by: Raymond Hackley Signed-off-by: Jakob Hauser Acked-by: Sebastian Reichel --- drivers/power/supply/rt5033_charger.c | 276 +++++++++++++++++++++++++- 1 file changed, 274 insertions(+), 2 deletions(-) diff --git a/drivers/power/supply/rt5033_charger.c b/drivers/power/supply/rt5033_charger.c index 57a0dc631e85..2c2073b8979d 100644 --- a/drivers/power/supply/rt5033_charger.c +++ b/drivers/power/supply/rt5033_charger.c @@ -6,8 +6,11 @@ * Author: Beomho Seo */ +#include +#include #include #include +#include #include #include #include @@ -27,6 +30,14 @@ struct rt5033_charger { struct regmap *regmap; struct power_supply *psy; struct rt5033_charger_data *chg; + struct extcon_dev *edev; + struct notifier_block extcon_nb; + struct work_struct extcon_work; + struct mutex lock; + bool online; + bool otg; + bool mivr_enabled; + u8 cv_regval; }; static int rt5033_get_charger_state(struct rt5033_charger *charger) @@ -57,6 +68,10 @@ static int rt5033_get_charger_state(struct rt5033_charger *charger) state = POWER_SUPPLY_STATUS_UNKNOWN; } + /* For OTG mode, RT5033 would still report "charging" */ + if (charger->otg) + state = POWER_SUPPLY_STATUS_DISCHARGING; + return state; } @@ -148,6 +163,9 @@ static inline int rt5033_init_const_charge(struct rt5033_charger *charger) return -EINVAL; } + /* Store that value for later usage */ + charger->cv_regval = reg_data; + /* Set end of charge current */ if (chg->eoc_uamp < RT5033_CHARGER_EOC_MIN || chg->eoc_uamp > RT5033_CHARGER_EOC_MAX) { @@ -331,6 +349,152 @@ static int rt5033_charger_reg_init(struct rt5033_charger *charger) return 0; } +static int rt5033_charger_set_otg(struct rt5033_charger *charger) +{ + int ret; + + mutex_lock(&charger->lock); + + /* Set OTG boost v_out to 5 volts */ + ret = regmap_update_bits(charger->regmap, RT5033_REG_CHG_CTRL2, + RT5033_CHGCTRL2_CV_MASK, + 0x37 << RT5033_CHGCTRL2_CV_SHIFT); + if (ret) { + dev_err(charger->dev, "Failed set OTG boost v_out\n"); + return -EINVAL; + } + + /* Set operation mode to OTG */ + ret = regmap_update_bits(charger->regmap, RT5033_REG_CHG_CTRL1, + RT5033_CHGCTRL1_MODE_MASK, RT5033_BOOST_MODE); + if (ret) { + dev_err(charger->dev, "Failed to update OTG mode.\n"); + return -EINVAL; + } + + /* In case someone switched from charging to OTG directly */ + if (charger->online) + charger->online = false; + + charger->otg = true; + + mutex_unlock(&charger->lock); + + return 0; +} + +static int rt5033_charger_unset_otg(struct rt5033_charger *charger) +{ + int ret; + u8 data; + + /* Restore constant voltage for charging */ + data = charger->cv_regval; + ret = regmap_update_bits(charger->regmap, RT5033_REG_CHG_CTRL2, + RT5033_CHGCTRL2_CV_MASK, + data << RT5033_CHGCTRL2_CV_SHIFT); + if (ret) { + dev_err(charger->dev, "Failed to restore constant voltage\n"); + return -EINVAL; + } + + /* Set operation mode to charging */ + ret = regmap_update_bits(charger->regmap, RT5033_REG_CHG_CTRL1, + RT5033_CHGCTRL1_MODE_MASK, RT5033_CHARGER_MODE); + if (ret) { + dev_err(charger->dev, "Failed to update charger mode.\n"); + return -EINVAL; + } + + charger->otg = false; + + return 0; +} + +static int rt5033_charger_set_charging(struct rt5033_charger *charger) +{ + int ret; + + mutex_lock(&charger->lock); + + /* In case someone switched from OTG to charging directly */ + if (charger->otg) { + ret = rt5033_charger_unset_otg(charger); + if (ret) + return -EINVAL; + } + + charger->online = true; + + mutex_unlock(&charger->lock); + + return 0; +} + +static int rt5033_charger_set_mivr(struct rt5033_charger *charger) +{ + int ret; + + mutex_lock(&charger->lock); + + /* + * When connected via USB connector type SDP (Standard Downstream Port), + * the minimum input voltage regulation (MIVR) should be enabled. It + * prevents an input voltage drop due to insufficient current provided + * by the adapter or USB input. As a downside, it may reduces the + * charging current and thus slows the charging. + */ + ret = regmap_update_bits(charger->regmap, RT5033_REG_CHG_CTRL4, + RT5033_CHGCTRL4_MIVR_MASK, RT5033_CHARGER_MIVR_4600MV); + if (ret) { + dev_err(charger->dev, "Failed to set MIVR level.\n"); + return -EINVAL; + } + + charger->mivr_enabled = true; + + mutex_unlock(&charger->lock); + + /* Beyond this, do the same steps like setting charging */ + rt5033_charger_set_charging(charger); + + return 0; +} + +static int rt5033_charger_set_disconnect(struct rt5033_charger *charger) +{ + int ret; + + mutex_lock(&charger->lock); + + /* Disable MIVR if enabled */ + if (charger->mivr_enabled) { + ret = regmap_update_bits(charger->regmap, + RT5033_REG_CHG_CTRL4, + RT5033_CHGCTRL4_MIVR_MASK, + RT5033_CHARGER_MIVR_DISABLE); + if (ret) { + dev_err(charger->dev, "Failed to disable MIVR.\n"); + return -EINVAL; + } + + charger->mivr_enabled = false; + } + + if (charger->otg) { + ret = rt5033_charger_unset_otg(charger); + if (ret) + return -EINVAL; + } + + if (charger->online) + charger->online = false; + + mutex_unlock(&charger->lock); + + return 0; +} + static enum power_supply_property rt5033_charger_props[] = { POWER_SUPPLY_PROP_STATUS, POWER_SUPPLY_PROP_CHARGE_TYPE, @@ -367,8 +531,7 @@ static int rt5033_charger_get_property(struct power_supply *psy, val->strval = RT5033_MANUFACTURER; break; case POWER_SUPPLY_PROP_ONLINE: - val->intval = (rt5033_get_charger_state(charger) == - POWER_SUPPLY_STATUS_CHARGING); + val->intval = charger->online; break; default: return -EINVAL; @@ -403,6 +566,86 @@ static struct rt5033_charger_data *rt5033_charger_dt_init( return chg; } +static void rt5033_charger_extcon_work(struct work_struct *work) +{ + struct rt5033_charger *charger = + container_of(work, struct rt5033_charger, extcon_work); + struct extcon_dev *edev = charger->edev; + int connector, state; + int ret; + + for (connector = EXTCON_USB_HOST; connector <= EXTCON_CHG_USB_PD; + connector++) { + state = extcon_get_state(edev, connector); + if (state == 1) + break; + } + + /* + * Adding a delay between extcon notification and extcon action. This + * makes extcon action execution more reliable. Without the delay the + * execution sometimes fails, possibly because the chip is busy or not + * ready. + */ + msleep(100); + + switch (connector) { + case EXTCON_CHG_USB_SDP: + ret = rt5033_charger_set_mivr(charger); + if (ret) { + dev_err(charger->dev, "failed to set USB mode\n"); + break; + } + dev_info(charger->dev, "USB mode. connector type: %d\n", + connector); + break; + case EXTCON_CHG_USB_DCP: + case EXTCON_CHG_USB_CDP: + case EXTCON_CHG_USB_ACA: + case EXTCON_CHG_USB_FAST: + case EXTCON_CHG_USB_SLOW: + case EXTCON_CHG_WPT: + case EXTCON_CHG_USB_PD: + ret = rt5033_charger_set_charging(charger); + if (ret) { + dev_err(charger->dev, "failed to set charging\n"); + break; + } + dev_info(charger->dev, "charging. connector type: %d\n", + connector); + break; + case EXTCON_USB_HOST: + ret = rt5033_charger_set_otg(charger); + if (ret) { + dev_err(charger->dev, "failed to set OTG\n"); + break; + } + dev_info(charger->dev, "OTG enabled\n"); + break; + default: + ret = rt5033_charger_set_disconnect(charger); + if (ret) { + dev_err(charger->dev, "failed to set disconnect\n"); + break; + } + dev_info(charger->dev, "disconnected\n"); + break; + } + + power_supply_changed(charger->psy); +} + +static int rt5033_charger_extcon_notifier(struct notifier_block *nb, + unsigned long event, void *param) +{ + struct rt5033_charger *charger = + container_of(nb, struct rt5033_charger, extcon_nb); + + schedule_work(&charger->extcon_work); + + return NOTIFY_OK; +} + static const struct power_supply_desc rt5033_charger_desc = { .name = "rt5033-charger", .type = POWER_SUPPLY_TYPE_USB, @@ -415,6 +658,7 @@ static int rt5033_charger_probe(struct platform_device *pdev) { struct rt5033_charger *charger; struct power_supply_config psy_cfg = {}; + struct device_node *np_conn, *np_edev; int ret; charger = devm_kzalloc(&pdev->dev, sizeof(*charger), GFP_KERNEL); @@ -424,6 +668,7 @@ static int rt5033_charger_probe(struct platform_device *pdev) platform_set_drvdata(pdev, charger); charger->dev = &pdev->dev; charger->regmap = dev_get_regmap(pdev->dev.parent, NULL); + mutex_init(&charger->lock); psy_cfg.of_node = pdev->dev.of_node; psy_cfg.drv_data = charger; @@ -443,6 +688,33 @@ static int rt5033_charger_probe(struct platform_device *pdev) if (ret) return ret; + /* + * Extcon support is not vital for the charger to work. If no extcon + * is available, just emit a warning and leave the probe function. + */ + np_conn = of_parse_phandle(pdev->dev.of_node, "richtek,usb-connector", 0); + np_edev = of_get_parent(np_conn); + charger->edev = extcon_find_edev_by_node(np_edev); + if (IS_ERR(charger->edev)) { + dev_warn(&pdev->dev, "no extcon device found in device-tree\n"); + goto out; + } + + ret = devm_work_autocancel(&pdev->dev, &charger->extcon_work, + rt5033_charger_extcon_work); + if (ret) { + dev_err(&pdev->dev, "failed to initialize extcon work\n"); + return ret; + } + + charger->extcon_nb.notifier_call = rt5033_charger_extcon_notifier; + ret = devm_extcon_register_notifier_all(&pdev->dev, charger->edev, + &charger->extcon_nb); + if (ret) { + dev_err(&pdev->dev, "failed to register extcon notifier\n"); + return ret; + } +out: return 0; } From patchwork Wed Sep 27 20:26:00 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakob Hauser X-Patchwork-Id: 13401646 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 BE25FE82CD3 for ; Wed, 27 Sep 2023 20:26:25 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229771AbjI0U0Y (ORCPT ); Wed, 27 Sep 2023 16:26:24 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36658 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229796AbjI0U0W (ORCPT ); Wed, 27 Sep 2023 16:26:22 -0400 Received: from sonic301-22.consmr.mail.ir2.yahoo.com (sonic301-22.consmr.mail.ir2.yahoo.com [77.238.176.99]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AA91B13A for ; Wed, 27 Sep 2023 13:26:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rocketmail.com; s=s2048; t=1695846378; bh=hS9XRL4UjV0H2cpjxdGbKe5r7XpEbOe3UCWMjzVSxnQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From:Subject:Reply-To; b=CaNAj+cCuGb6YyJQlBRadGA9ofythS8P1VjyawDuhrmlK2WHuqE0kGl/NE50+lR6j1SW7IlDdUj0cvLgOCVi5MtT9mjG/MJGIDR1Yfyk1MEb5K3lmwF08yx6THd4O3vfIXYnlGqqj2NBP8wv6WhjE1UEpHcGlq0EfEgvF/e3HMt/CFyjtEoCndmjASButUyC2yDudRBhsUC++4f9amR19Vm2XmCCcsl8MUFbaG5rhOZvZdBq61MX9aFawsSwwlNml4s0ozwg6TQzCPwGJG3e9255W5KdPrNOAzPXK9dNMyUYgfHwv+GIl7A19wRUSgVfodRqSILDoo2tvBI0vTkpeQ== X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1695846378; bh=t/vll2PBhzBw/8NYoeZg9NA6vDIZhTGXTDI9AT675Mi=; h=X-Sonic-MF:From:To:Subject:Date:From:Subject; b=fTyshhS1q/k6oIcAZhXqs804VMSQSfQyxU+AY74cKsl++uy71VrMXrhgaq6zD+pWJuJMBsS9iF97oXo9hRaoeeBLjlP2Y30i3KZGc/j0XXps0RmNXHB9O5MYjPLw7xxOKUexDuvMoRIN4AQnJz7gdPFvJa42jsjYhzXf3AhBHCYfwOLafsZgO03Pi+9io6/0IeE9iDDDVvij2na5WZc2rlbgvJn3Dxnym+2ZlrVeX8/faPyLnIBvJiS4lGG3ATY2NVdrJHOpuyOT3CwJJWA00VMauDPiSpL0n7956nw/AEnZbRSGHoNIhdXkHn7t/3Ybs+WARu5oArwn9d/d3Nrt5Q== X-YMail-OSG: _nsoIn8VM1kOsSRaPAUiVcczyE53v_u81cS_14xp6hERYTppEVgojnH3BoyqTeN zsS7oHQQD7ujh.gLBQ6Ds2GrdnbyOc28k4OScDC72RerMwbQoKKdgSm4NOFQKOMpHLXnVxW8z0id tvuBnsGZ.ufkRqCpMRTh5UoCwGOK9nqFa1xlv.1htsuHIyytxGqfgl57YEzYw68toTKHumVK57ub cumkk0Lsmdt.MAVEavtgSbY8qmOKnMV81SwCLaqTygonLe6rpeUS2pV2xw4wD74ajCLwsHbGY48f ZiycaY6n1EPu4YnHSfPcfegv2y7vEom6cxBELcBMv0ndKLEC4VUnkOVq54sS7h3j65OyCxJnsiuc noS_fDWswLXvo7kGsB0iMScJxuE4iCOe22Apj9uP1ZlOn9IcXYHHukR8..nZoX7jarsLUcz.ziG9 oJNHUHXMrX06xBMTJ1GsJRL2JdybGIZywlOlqHo_GamJ2.1Ge95h6Pu7IJVVCcggTJ0Q4avqSGWk PpNtvYdu5eu3hCHThDpe5PyV41374eOOyHmp8BeD6pYYpakuBxChOW2EA.1bPNgKskqg9JtbSFMQ wI3.jZ9kyqP186xecKhF12B8H4qMW7BerNPiyk.Jyw2IQFI4UgPB5T3Om.qBJE7pp3UPckYsNcw0 yTpdTIKOWbrxhfXjsl9ysnJhqaU8Khfu5kBC_VRaYDmji_Z1bLxszIssHmC2fZNXA7BaiKKGmd9w q4B.5SBuLpxt51ZVSTTx66.4VjEReUJ_aZq5rYBRapRFzy2tjgXDvUEwtZcR4khZWzuFBy1z89G5 oCcNu3_UdTxTEOexNY_9rGO1thcx_adboXXZ2tsrGYos_W2QdOe6kn4aVZCvTP36r87DiutrXAr. IGWuEjp3Pec2UM3zVFh3gwkGGfNVBzedxDylSTePEmKhwJwRRfwfBG0LOqKyqm4UURY4NmAqmpPz rvcbN8ksR2bYFMdDXVtarxk3VzYKlxHVbiW1TSAWVxsEQZxXQtUSIItTw3JH3YSFY90FHr0Dh84X Zp5_LtQtzYHWxLW3j9lhTFbA_6L.zTKQHZQBBdUWZSFmar1zeUiC0ittgnIYbZHj8Pp_WISkXGGi sqVFeB2Vq72yYTxdvpaXlxjKJq5Hwwa9h.P4eGVFX0FfZRxhMkdR.mB4_GiO.7GILKcIS0VXDTI6 Ze_CbjS..czcyRVIo.RPY9mEDv2.Rct4FmRMA0qO5f96S9fbduyngjXz6279qWmiQAlzNXVOrkxZ 0yTXWv1NgYb9Zv6BtVdTPoW2AOz5a.1qkP.5_4cWfMdakUEFlSUFItX6fsvzQn5NcmHa0himOZZ0 FqJYXRJ_p7eKpJeSnq4ooA9CoRjGbZLHulMTqmDDKJtZIKHAYZLQxaGtxny5haNWG0a9WTi3I6gv XSZN9Yao.XCTLRaaaI9n__ieZXTukCjVsPsroaNzyGi_3s1yuBJu7prUa7rWijce.r3ssyQUvefa TTksggQY8om9UkSaw4UDnSn3tHxLdBStMgjvsXUBOsfvLFNX573DFBB467fa95Dm0qRpJ6RGItob K2kbbpJRqdRNbkxw2XX0ACaMm8nqGBY3bI51xv_O5pDjqNRf4jQe.5L.3QomPUIbJLDAPRzimIXM VGvtfTjElOMOSWIJw2ksDmmxQTibnTCCDLRAcTNwHXs_1NZYicnUrJN7m_2cTG1Ds_1648OX.CqB u71msiTGJdUa0KQ0f8Kf6p6qkM0ZmG1M5.lLizJlsQVq3.b5_tRODl9Q5_HmO31U3aqhlKdp9HaK VtZ7wPzmoLfElNoY3SHKnQ6sVCsxsW2uxoXHrSD9pXOA6GRmBHXwArd9VCIsvLPn0bdqXmSOBDTd JpcU2A_ZWSW8sSz7cpHK20ganKGcZheuoL5KskDndSlukPGW8zDGInXOF9TDp3H8M.z3tnIOS9I0 64NLEmgNfh_3u_LpdOObLC8kJtahSnOjMXuv_gT0B4U5H6tWKAMHNzKADFAFFPhnD64wkFVVjAoo XqOmpBuN9eHLhe2T0MT.190F_OFw2xkKiEDGJM0pS9K4UJBhl_d33cTx9N.qSTT44od12mY_j9k7 eUn7clBafHMGXgjVk9z8a3ARI5hQluBI_VkM67bsGK9CpX2tYPP1_qm.YMPHIxS2cwhSNQHX4s7V 0zjJ6NexmEKS7j92kID9N2QdqxzE_qgA2G_9WHd3gLOj1GA8ae.wZSJwxuRqJzEysr9zOlCIwS89 CeiXtAkRoxQJoJlW7UytSdCuI1G.S9dLgMc8XUzzuSCJfLyJnQHJuu4YhnqzfyFNMboYA9mnnR3Z tCuESas4vpouU2OHQoERySZRC0riMd_E- X-Sonic-MF: X-Sonic-ID: b130448e-4358-44c0-b48a-0e54654458f6 Received: from sonic.gate.mail.ne1.yahoo.com by sonic301.consmr.mail.ir2.yahoo.com with HTTP; Wed, 27 Sep 2023 20:26:18 +0000 Received: by hermes--production-ir2-55db9d9d5-5hvhf (Yahoo Inc. Hermes SMTP Server) with ESMTPA ID 1d998f486e26fd309cd8d11c694d3a2b; Wed, 27 Sep 2023 20:26:17 +0000 (UTC) From: Jakob Hauser To: Sebastian Reichel Cc: Lee Jones , Stephen Rothwell , Yang Yingliang , Christophe Jaillet , Stephan Gerhold , Raymond Hackley , Henrik Grimler , linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, ~postmarketos/upstreaming@lists.sr.ht, Jakob Hauser Subject: [PATCH 3/5] power: supply: rt5033_charger: fix missing unlock Date: Wed, 27 Sep 2023 22:26:00 +0200 Message-Id: X-Mailer: git-send-email 2.39.2 In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org From: Yang Yingliang Fix missing mutex_unlock() in some error path. Fixes: 12cc585f36b8 ("power: supply: rt5033_charger: Add cable detection and USB OTG supply") Signed-off-by: Yang Yingliang Signed-off-by: Jakob Hauser --- drivers/power/supply/rt5033_charger.c | 28 ++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/drivers/power/supply/rt5033_charger.c b/drivers/power/supply/rt5033_charger.c index 2c2073b8979d..091ca4a21f29 100644 --- a/drivers/power/supply/rt5033_charger.c +++ b/drivers/power/supply/rt5033_charger.c @@ -361,7 +361,8 @@ static int rt5033_charger_set_otg(struct rt5033_charger *charger) 0x37 << RT5033_CHGCTRL2_CV_SHIFT); if (ret) { dev_err(charger->dev, "Failed set OTG boost v_out\n"); - return -EINVAL; + ret = -EINVAL; + goto out_unlock; } /* Set operation mode to OTG */ @@ -369,7 +370,8 @@ static int rt5033_charger_set_otg(struct rt5033_charger *charger) RT5033_CHGCTRL1_MODE_MASK, RT5033_BOOST_MODE); if (ret) { dev_err(charger->dev, "Failed to update OTG mode.\n"); - return -EINVAL; + ret = -EINVAL; + goto out_unlock; } /* In case someone switched from charging to OTG directly */ @@ -378,9 +380,10 @@ static int rt5033_charger_set_otg(struct rt5033_charger *charger) charger->otg = true; +out_unlock: mutex_unlock(&charger->lock); - return 0; + return ret; } static int rt5033_charger_unset_otg(struct rt5033_charger *charger) @@ -420,8 +423,10 @@ static int rt5033_charger_set_charging(struct rt5033_charger *charger) /* In case someone switched from OTG to charging directly */ if (charger->otg) { ret = rt5033_charger_unset_otg(charger); - if (ret) + if (ret) { + mutex_unlock(&charger->lock); return -EINVAL; + } } charger->online = true; @@ -448,6 +453,7 @@ static int rt5033_charger_set_mivr(struct rt5033_charger *charger) RT5033_CHGCTRL4_MIVR_MASK, RT5033_CHARGER_MIVR_4600MV); if (ret) { dev_err(charger->dev, "Failed to set MIVR level.\n"); + mutex_unlock(&charger->lock); return -EINVAL; } @@ -463,7 +469,7 @@ static int rt5033_charger_set_mivr(struct rt5033_charger *charger) static int rt5033_charger_set_disconnect(struct rt5033_charger *charger) { - int ret; + int ret = 0; mutex_lock(&charger->lock); @@ -475,7 +481,8 @@ static int rt5033_charger_set_disconnect(struct rt5033_charger *charger) RT5033_CHARGER_MIVR_DISABLE); if (ret) { dev_err(charger->dev, "Failed to disable MIVR.\n"); - return -EINVAL; + ret = -EINVAL; + goto out_unlock; } charger->mivr_enabled = false; @@ -483,16 +490,19 @@ static int rt5033_charger_set_disconnect(struct rt5033_charger *charger) if (charger->otg) { ret = rt5033_charger_unset_otg(charger); - if (ret) - return -EINVAL; + if (ret) { + ret = -EINVAL; + goto out_unlock; + } } if (charger->online) charger->online = false; +out_unlock: mutex_unlock(&charger->lock); - return 0; + return ret; } static enum power_supply_property rt5033_charger_props[] = { From patchwork Wed Sep 27 20:26:01 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakob Hauser X-Patchwork-Id: 13401650 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 AEEF0E82CD7 for ; Wed, 27 Sep 2023 20:26:30 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229862AbjI0U03 (ORCPT ); Wed, 27 Sep 2023 16:26:29 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46946 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229634AbjI0U00 (ORCPT ); Wed, 27 Sep 2023 16:26:26 -0400 Received: from sonic307-54.consmr.mail.ir2.yahoo.com (sonic307-54.consmr.mail.ir2.yahoo.com [87.248.110.31]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B23A011F for ; Wed, 27 Sep 2023 13:26:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rocketmail.com; s=s2048; t=1695846381; bh=5xyF+KReJNWWxWCi7Ez3mVy/VMtqQScvdho4KTEIt0E=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From:Subject:Reply-To; b=A1ki3GZ2UgkUpg4cmRNHiLh8DOeQPyz4SQiEWjFd42AzVz7UGlWLG/yIncW8Ml/7TeSKl/o/SrqQam9a6gWkt0rdtP1dfbZUJ+etWzfHxmiu8PfAVrrzK0QXwEqqbeUBb0qUP7q23Y1p2RXyNBS8ANnloAjN0zKcr5GYGqpOjf+TnhYv7uULaibD+hHqdfCr5Ad1ZJ5K9E3FPvXOBf7PlSfaW4OGU1STkte+i8afkVvy5zU4IC59ObIo8JcRbf4PGevDIKR7/Ot8WOBOUWF1kxQ4qcFmEjAi1zqmUmtccptG2wGJCzD6xNzM66y9/ftW/y4s65h91WGsbGESy/gt3g== X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1695846381; bh=Wb28mO+t+8IOr2hAdJHoSdh7nqXlI4Bo3bWZKM9csLN=; h=X-Sonic-MF:From:To:Subject:Date:From:Subject; b=CNDM5w0hsc/zHlvtktGuWlk1R60RfOnMaDJE7aSLes9xYLHH1jGhPcNN0eA4Oisyhr43jyIeljg1+Nd2lWBQOUZeKeyl0ldktUvPDFIi4p6cHhfqImRh9Mwsi9ZAX2t1U8ZCsi4y1EIhkHb+RyOo2DNk6LkjgfbByPLZX12kOWQISe6GPIuep928A1QoCBhqTS4Ae9+MjwbMgBbYDN7iu4S7PZrK/kSo0LTZl03pT+qWLyaTab+Uh6hgSjsPX4TB5jDp4lvgLZ4u+1EM4sbNeZ/oHrEXAzDJyWGmR0NHQLnO7pbxW6EGowULbOAl5RKXzgvVE4FwP/giVManZacRVw== X-YMail-OSG: AjIJuBAVM1kZPklCHWy5Oyjwcn2GSbjO9mG2xFZmrET9esIggxY4Z3CjGKtY5Ux JdmRPG0Aa7sdD90NOIrZjYK2PdMbsPCgmkycv4wwNqa6f6xDvXKZ7h6GUI_K1nbj5zuTMmed3dpx JxyTxW_8ffG92oQCWnrgD9oVbmGhJgCMasBsP6zmIwN4lvUBeWy187hBxuy07DSS.b8KBBELlC55 K4zdvIna4H_Lf8rPlcZDuDnB5hOmpCCQLN5nyjd1OTSlx_kko27N3eVmvnwsr2jrY5tEFvJR4k.N 70zvcPraWieuzp20gymXeLbDWcy_zQEZjzWFx30Otx5hV6zWttccnQbX37IXtM1Nr3IK6qCowESk 09EbFXQgiTtD0cV0E6ej8C58qX8KyuYTpwXYTnx_WsBqQ7qUFGdi6LEdbdq91sJJrZRQBOHzGAcI Qz4KgBjkB8YaChz_juDTGy6C5UcMTccvnAV4Ao7vZDWLI5dcIbibl0SorteqxyHkjRWHminVanw_ 2dSlUNs93IQYaC3zAjT6s3PVFOYjMgHaAmRKyz8Yc32_bse4ALdTgStLqXcG5z1_oLrCiZXhdKxB hedju1c16rQK6L6xAV8Lx9kHv7wZmb.kyh4c_kFlm2i6dHdS_yM8U37EOru4gFzgbTy5poJwRxu0 11Dc2iAEy3wGAxm0cOCpv9tbpfVvvzMVer_ATff5x8a95.i55vHuAEWRr0qGrHlpsrwC2uA176wU Q007zV1wD8wzkSuiClVFrvgV85GzZi4yGONnv1sTf2i9iuryvMSxPn2qZNK3XkCxzjC2W6BHESDR _SnUxR8TUDBOtLfnACEYjiboCBJoMktBlu.b8WBSCO_6yhRCgAOCHRDAw3ci3MfGcmNKzscPPzAJ nGn1bEQ1V8J6caQHAGXVLNxYYMj5cshK2pO0gKgLld_bUK9v0Uu8k2ReYbVA7Xhvf10vDy3hPQWH kb4CIED6TOlLRo8jy3MtxHZ4FPmO98mu0SpnEfXk3o7cQJDE0v9jaTMqq2SYwdgRx1POUG9q.A.7 y9lh6obMCXJzm9yfgLBalQcrta.uHtgtezvCTzDkXpPTDRS6opkAAizRHgdWQJuIkVqZd5W1W8X3 HWj_DEP4fyxtmbv78WXuM5KTohRI90_bp58snAP3uacjBGeSVg8WpEnQmOfcez3dRrm7tRATtSXR iwJ_1iUHVXFk6czieak0j_rmp4O17dUq2k9aumgYQjN8NP54bmqN24nZJhKv3D4zPFLWv2QoovAo nqRTfB.F47XNO.nQqwOypfQsPxzLh6oKDS.rgj0UIZesIKlaWwDSFlwIPTV69fyaDwM75RqOIcKa UJQiH0OV7CqBJzN56SAVBEAdmGaCXW0QyLv3vUguMAKUN3Eceixp2pIN1tVCjztjdJfZStjCifSq sc1b_yf_sFHZNo9n7EqJAHrgmxj2V8JeVuW7lV.RVjVpxPP3NqO7BvXtl00e76t.EVA6kOYJ0deX 3IquNVQmX01oo4JvP1DNioDBBHFm65ko3dG7iX54QDlggXPTTEwKnD0pZGnG_h4M7VDAHBVesOPY 7Qxcb1ktLvJmvdfxKo6pqHiQWEGRLJyxvTQK9Atng__uDCd0BwNAfQwswCQCpgexeV4u7QEYPFgR _EfOfrQf8xMoqTOvxFnwoBEckAWdbAwbCyNNAH5B_kAFbcJ5LqzFYQ4zzithr_dzmytSn6ptnB2y k59.AdWW.CD6wiUggybt7fJbxPrjPwSfZCZIeWTvRbqMsLiVQ3tuFU4a08XQyyDeqytQSHzzsIPu CxFjWBON7tL_cVGGKmcbz3CpaYBMBSnu9vJpZ7uNkgrH5F1GLyp.Rdmt.uaO5FRX94YKWYvL9ERa uO6Boa1Xfa.J2bvkhKq1BXxDx0DKSugWakEt424Xw.oGUDPNEV1h19THCdtSTG7s_xYdyW6LlnG0 2ib6.HRbTyo4ZiPUCGBhcBfOt9S3CpuoSkDR_xiCkVKJWGizvu9TxZYbdDqDzTQvTLSVL5e.FcO4 cyhVFndB4NcLCURsN_y_izOUOx8jwgOdS7qCnQ9foteqWBgrzLI6funIdTYVeaIJ1bGyTJDyWe4o BMzbid7h.vZHPJTndQ9WTXKaHpdedi_ScAJ_i5rOGel62gjWjRGm.yO4fcYOL9HJ9lOyljFNDdUe SNeC1TxBEU8fUTpjX5PiM4Ugd.qgV08wIwRnuV9PeWqXSD5b_UGF7__GnJn7aWllLmHa5BJlwy87 JpFx6UOb.WoNskA.OomzjKd6m3L.80aiggwzXmH5ehQl4N2mnbjL3mXpM1tKBEF6jk4UaCbq_XSM EjmfYn9JDKIg8g18flKokyHXMmJ2Lbnns.OiT X-Sonic-MF: X-Sonic-ID: dc664729-052d-4421-9fec-a3471547cf86 Received: from sonic.gate.mail.ne1.yahoo.com by sonic307.consmr.mail.ir2.yahoo.com with HTTP; Wed, 27 Sep 2023 20:26:21 +0000 Received: by hermes--production-ir2-55db9d9d5-5hvhf (Yahoo Inc. Hermes SMTP Server) with ESMTPA ID 1d998f486e26fd309cd8d11c694d3a2b; Wed, 27 Sep 2023 20:26:18 +0000 (UTC) From: Jakob Hauser To: Sebastian Reichel Cc: Lee Jones , Stephen Rothwell , Yang Yingliang , Christophe Jaillet , Stephan Gerhold , Raymond Hackley , Henrik Grimler , linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, ~postmarketos/upstreaming@lists.sr.ht, Jakob Hauser Subject: [PATCH 4/5] power: supply: rt5033_charger: Simplify initialization of rt5033_charger_data Date: Wed, 27 Sep 2023 22:26:01 +0200 Message-Id: <95e236e16e25978d1a0280302cecd3bf59687e98.1695844349.git.jahau@rocketmail.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org Currently the struct "rt5033_charger_data" is initialized rather complicated. The cause lies inside of the struct "rt5033_charger", where struct "rt5033_charger_data" is implemented as a pointer *chg. Therefore, inside of struct "rt5033_charger" change the struct "rt5033_charger_data" to non-pointer "chg". It is then initialized right away and can be accessed more easily. Signed-off-by: Jakob Hauser --- drivers/power/supply/rt5033_charger.c | 29 +++++++++++---------------- 1 file changed, 12 insertions(+), 17 deletions(-) diff --git a/drivers/power/supply/rt5033_charger.c b/drivers/power/supply/rt5033_charger.c index 091ca4a21f29..b34ef0ea6f8a 100644 --- a/drivers/power/supply/rt5033_charger.c +++ b/drivers/power/supply/rt5033_charger.c @@ -29,7 +29,7 @@ struct rt5033_charger { struct device *dev; struct regmap *regmap; struct power_supply *psy; - struct rt5033_charger_data *chg; + struct rt5033_charger_data chg; struct extcon_dev *edev; struct notifier_block extcon_nb; struct work_struct extcon_work; @@ -131,7 +131,7 @@ static int rt5033_get_charger_const_voltage(struct rt5033_charger *charger) static inline int rt5033_init_const_charge(struct rt5033_charger *charger) { - struct rt5033_charger_data *chg = charger->chg; + struct rt5033_charger_data *chg = &charger->chg; int ret; unsigned int val; u8 reg_data; @@ -205,7 +205,7 @@ static inline int rt5033_init_const_charge(struct rt5033_charger *charger) static inline int rt5033_init_fast_charge(struct rt5033_charger *charger) { - struct rt5033_charger_data *chg = charger->chg; + struct rt5033_charger_data *chg = &charger->chg; int ret; unsigned int val; u8 reg_data; @@ -250,7 +250,7 @@ static inline int rt5033_init_fast_charge(struct rt5033_charger *charger) static inline int rt5033_init_pre_charge(struct rt5033_charger *charger) { - struct rt5033_charger_data *chg = charger->chg; + struct rt5033_charger_data *chg = &charger->chg; int ret; unsigned int val; u8 reg_data; @@ -550,21 +550,16 @@ static int rt5033_charger_get_property(struct power_supply *psy, return 0; } -static struct rt5033_charger_data *rt5033_charger_dt_init( - struct rt5033_charger *charger) +static int rt5033_charger_dt_init(struct rt5033_charger *charger) { - struct rt5033_charger_data *chg; + struct rt5033_charger_data *chg = &charger->chg; struct power_supply_battery_info *info; int ret; - chg = devm_kzalloc(charger->dev, sizeof(*chg), GFP_KERNEL); - if (!chg) - return ERR_PTR(-ENOMEM); - ret = power_supply_get_battery_info(charger->psy, &info); if (ret) - return ERR_PTR(dev_err_probe(charger->dev, -EINVAL, - "missing battery info\n")); + return dev_err_probe(charger->dev, -EINVAL, + "missing battery info\n"); /* Assign data. Validity will be checked in the init functions. */ chg->pre_uamp = info->precharge_current_ua; @@ -573,7 +568,7 @@ static struct rt5033_charger_data *rt5033_charger_dt_init( chg->pre_uvolt = info->precharge_voltage_max_uv; chg->const_uvolt = info->constant_charge_voltage_max_uv; - return chg; + return 0; } static void rt5033_charger_extcon_work(struct work_struct *work) @@ -690,9 +685,9 @@ static int rt5033_charger_probe(struct platform_device *pdev) return dev_err_probe(&pdev->dev, PTR_ERR(charger->psy), "Failed to register power supply\n"); - charger->chg = rt5033_charger_dt_init(charger); - if (IS_ERR_OR_NULL(charger->chg)) - return PTR_ERR(charger->chg); + ret = rt5033_charger_dt_init(charger); + if (ret) + return ret; ret = rt5033_charger_reg_init(charger); if (ret) From patchwork Wed Sep 27 20:26:02 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakob Hauser X-Patchwork-Id: 13401649 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 DB766E82CD1 for ; Wed, 27 Sep 2023 20:26:28 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229844AbjI0U02 (ORCPT ); Wed, 27 Sep 2023 16:26:28 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36702 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229830AbjI0U0Y (ORCPT ); Wed, 27 Sep 2023 16:26:24 -0400 Received: from sonic310-11.consmr.mail.ir2.yahoo.com (sonic310-11.consmr.mail.ir2.yahoo.com [77.238.177.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7D8DD192 for ; Wed, 27 Sep 2023 13:26:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rocketmail.com; s=s2048; t=1695846381; bh=MHEdXKWgThv2pqabF9UjOZv402c0QNNym8Ltis9HYLc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From:Subject:Reply-To; b=KtlM9VygzRqte/dQRO+OyuyoGTSOKva8KK4V5BmJ474ojShwI5sDtM6bNGgL3xafLxPYsl5l8zMwu+EzBnd0DInnciIqUme5ehQUDD1h0VXNpOUwUm2pwIaYEXtSIjCp0T9AcXE8EV+IYcagLqPKPO/m4FawfS1vu/jG4oUKFDSE5PtFdX53YxeIaP0vx8l4t/Xx4O5E3vhOuvdSrt5btQKVWkN/zFhQhTQ3CwnMjQcLT51tMl4xRy5zmE9DKLtiDLJZ3mGvW+V49iTazDyyMQSOjJ81T2IplL2y/NcWl3yhgmRri9jfmT0YsoNHgcch4Kn+B/aowa6XngnE/JTGTg== X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1695846381; bh=GxxqXNJ3e+VasoBgp8213Nx40oGIR3iF/SRLCRRcjJc=; h=X-Sonic-MF:From:To:Subject:Date:From:Subject; b=CZFNb/T7RDBJLySO2VweXwkRYbcA0ygnhj4tjRhWrWKW++ADHYYBrWzDwnQDkpP/4B/S164WMdyhVu7AS0ypmL2HghnnAk+aloeyHMfJqy3yEpQzROIDSZPooIFp5jYF7XpL6zUDap7ftQ+PZl9+UWu0zHZNnMieiamIU/AJ7STqhXWQGoar3j3U3TeND+/jxd9RzqPZ1ihgif82PzxMVUY6pHBTF/CpnKVgouSGM/+ORDyAOghIKUxts/Jf7cI3vAoWsY+twGLLFrK+c1m9zN5NxJp7poLbX1xkE/fvx9GnkRByZPZJuFXetK3ir4c3zSJLVLN2Wp5ULh905YwxGQ== X-YMail-OSG: gRNtRkAVM1mdRiJ2DbNxfji_aZtzpp4tAxj3aVUVOGXAjlOQwHGarDGdTx7LkW8 fJVKZCZK367BEvGAMNS0Eaf44fHiI2PdHuD7g9eQ.l.7OL5FhQzhpHxfCPuh.RqPShb6oYS.sJPX jhdeYP4wlbDDm4.OahpYEIttkcc5ZKLsln0LsQIiWTWcaMIsdOVlVYmg2SXOpAqn6d9OiGp4UMcv pfqteo11V0NRAdCPP8y3Saorw6RdB9g2PB79WDvoh1mGttrPGngz9sKF5sgWsKM6p1J.njOOSrNl BplSrJSko6DRgezC6enMYBPlJuGSOJpWGkgB9cR.594D4cTUN1UsbSl2H5qywscn0LbGenex8piW jrzkgKmaMSPA64FA_xQqYPjEjIKb2HtFeCyI02fhBEZw8YvBA80uNIibKuX7b8t7oKkC34jWL5jK XKTTceyDtHVqYybaOwG0DUm5W7MS5.obmpAxpl31X28rzib0PfnLqtO6rTFD7ltVkOdFhkk9Et4t GiirAKHjhF0QUP8ZOzq192Ipjde.F3OaG46D7tWQGvvmgd7V04KlI.CJFRLNUdWc7gRSolzd1BOd Sg6j6vs9xjQBN4l_GusAY_jtPhUpwyt5pGhCeREOk78k9zi8.SmlXaDnWsV_BKXNcDRAFgYepXgk KoRWkF_t8qiF_2BVuuEIuuBOBdzl7Q7vbLbXUJzgeJFp0hfmObLqgW5LYlCwZw9cIMTm_mmtVTKx .CgWe16kmGxL2fXqpi6zs71kqIPRDbuNIVO.D1SynGsQ6tPwVhE1DcSgR92vxiNR4g97Vs9dBUb2 zjJp325oO0CpJFakbloK3SIGprsj1WbxWSnWh1f1eeiS5WOYt89bMjOREAKYL5vu5hprex4S_TrW SXMboTVzbYQJKhKDNfAUebWz_.MS5Gj1.53uFh5iSNbb8pyKyOSnHoV6CytB_4dtWPjtTwunz6LN Au_8ZlktSUMxv9tr8MQcJgesDSPSg.scqlcCedFiOYSD.m2BvVaITgruXU8NubcAYSsVUMiyrhnn krlrRcwJ19TX8xIuEB4cehsRKOg9CRUkkf0KOA6s0iM9Jt.VzeHmJMml2PN9pcb8JwsR_ihtlm2K SV2Yif8mxRimtF1jH2yYOvc3M5K8PtAvM93eVhWUar3M7.u8KZpifQaRMrqSB6Gl0Ca2.jeA8jHx 0eqzAErvfWIeEGy24KzpTPvT048ekJqXgO0ytv6R1OtnpvsuP8LqOrN7jL0Hyhvtfhes5VRfLzUK cxDMlBDOt31ybRNXGVoLoBwcstxXoixRi8z3OfuTNCgp0ce3g6lNFRrYvKI_3C7N7th_X5FURsDn 4KCT.pXo7_tHhDePdMT5MSIfAKgr6sDoTTTsXlgT2p.AWjdnrphe9fLLuS1RI.lHzkbNwmqBJZDE 4gat2nU0v90tKa4eLwxE2W3PUdlHL1QpwPLskUGZ_0UDlDz7pfWBznnbaF1Ct6jnVgOww_KzFPzf Uu5Brb69Xa3iI0086XxU1uHnmGA3QUWH0hkwgWL0ui4VxjZ4EB5.vL0HLYnjdbD7OVH5dmJnz5pL B_fQlgXKpndYuAVhbp.OfhwrloFk.QNS3uUMvoY1OCo43Loz8bkOzQPdIH_Lu2h7ZfSjTnm6pi34 DDAoHu5UmoJuY5ar_MrdCQqU0oKVy6c8AMD4idPgBj8pJ7jEDbIxtKoz5MvajQcvTexRHu95JnY2 b.37sL32iaxrI7PueHrflHSxyHShk9KHR44q2nSL8C30X59zsQYl5VQMHNSI_J_L1JFx65C.NZg_ _tQEu7ND1cgqZbrmPHo4NHouyVnEPp.qnfLrXuBBOxAi8XIvMUR4bY9wfhPWxVPF8FFsDT6wKTuz zz7ElOubEgvYFIvPFUcmHeMeF56lpuUkmfVBSg1FbPXjptRlHstmsI4Xr_W6NHkHwqf1q1H71v8Y nXMnK7W3YObVNJvfYodbLwHINOgcKbpI5XEZFAcdM1dhGBXOl4_AMBNDqzexdwb7tlyrz0U1QQnV ZYCFZqgdhuys7.KZO7g_Eah99N5e5ZsO9W__bvIXYTDKZlwR8ALUh6iRAAQ02U1022O0HniDoDNM 8kIb602eogZ.tMtQppStH_A9Uz2JwWp2pbxtdC6ajVAO0iriwm11NPOK_KN87K9Ogx.27o.oRr2M 6KZPflqJPWvVdeUf3PfpCGhz3Hh6UOLp7UZtoN4EIiCmTLQ4EhV40w2lZZq3mweLJq0lQeB__lz_ Fm3fJ8LVzCEIZij7ez3od5FG.Jx_JH4fljSJ33cOY57rtOquOsfLD.R6Zl7rZe0SZbi89jIHFRWr AwkynY200zX57HwoNnN6rKNccxyVU7ozRc98D X-Sonic-MF: X-Sonic-ID: 394b8963-67df-4bea-8323-7de61cddd7a8 Received: from sonic.gate.mail.ne1.yahoo.com by sonic310.consmr.mail.ir2.yahoo.com with HTTP; Wed, 27 Sep 2023 20:26:21 +0000 Received: by hermes--production-ir2-55db9d9d5-5hvhf (Yahoo Inc. Hermes SMTP Server) with ESMTPA ID 1d998f486e26fd309cd8d11c694d3a2b; Wed, 27 Sep 2023 20:26:19 +0000 (UTC) From: Jakob Hauser To: Sebastian Reichel Cc: Lee Jones , Stephen Rothwell , Yang Yingliang , Christophe Jaillet , Stephan Gerhold , Raymond Hackley , Henrik Grimler , linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, ~postmarketos/upstreaming@lists.sr.ht, Jakob Hauser Subject: [PATCH 5/5] power: supply: rt5033_charger: Replace "&pdev->dev" by "charger->dev" in probe Date: Wed, 27 Sep 2023 22:26:02 +0200 Message-Id: X-Mailer: git-send-email 2.39.2 In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org At the beginning of the probe function, "charger->dev" is set equal to "&pdev->dev". Therefore it's more clear to subsequently use "charger->dev" instead of "&pdev->dev". Signed-off-by: Jakob Hauser --- drivers/power/supply/rt5033_charger.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/drivers/power/supply/rt5033_charger.c b/drivers/power/supply/rt5033_charger.c index b34ef0ea6f8a..d19c7e80a92a 100644 --- a/drivers/power/supply/rt5033_charger.c +++ b/drivers/power/supply/rt5033_charger.c @@ -678,11 +678,11 @@ static int rt5033_charger_probe(struct platform_device *pdev) psy_cfg.of_node = pdev->dev.of_node; psy_cfg.drv_data = charger; - charger->psy = devm_power_supply_register(&pdev->dev, + charger->psy = devm_power_supply_register(charger->dev, &rt5033_charger_desc, &psy_cfg); if (IS_ERR(charger->psy)) - return dev_err_probe(&pdev->dev, PTR_ERR(charger->psy), + return dev_err_probe(charger->dev, PTR_ERR(charger->psy), "Failed to register power supply\n"); ret = rt5033_charger_dt_init(charger); @@ -701,22 +701,22 @@ static int rt5033_charger_probe(struct platform_device *pdev) np_edev = of_get_parent(np_conn); charger->edev = extcon_find_edev_by_node(np_edev); if (IS_ERR(charger->edev)) { - dev_warn(&pdev->dev, "no extcon device found in device-tree\n"); + dev_warn(charger->dev, "no extcon device found in device-tree\n"); goto out; } - ret = devm_work_autocancel(&pdev->dev, &charger->extcon_work, + ret = devm_work_autocancel(charger->dev, &charger->extcon_work, rt5033_charger_extcon_work); if (ret) { - dev_err(&pdev->dev, "failed to initialize extcon work\n"); + dev_err(charger->dev, "failed to initialize extcon work\n"); return ret; } charger->extcon_nb.notifier_call = rt5033_charger_extcon_notifier; - ret = devm_extcon_register_notifier_all(&pdev->dev, charger->edev, + ret = devm_extcon_register_notifier_all(charger->dev, charger->edev, &charger->extcon_nb); if (ret) { - dev_err(&pdev->dev, "failed to register extcon notifier\n"); + dev_err(charger->dev, "failed to register extcon notifier\n"); return ret; } out: