From patchwork Fri Jun 24 10:13:01 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Francesco Dolcini X-Patchwork-Id: 584887 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 alsa0.perex.cz (alsa0.perex.cz [77.48.224.243]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id F207ACCA47F for ; Fri, 24 Jun 2022 10:14:09 +0000 (UTC) Received: from alsa1.perex.cz (alsa1.perex.cz [207.180.221.201]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by alsa0.perex.cz (Postfix) with ESMTPS id 114951887; Fri, 24 Jun 2022 12:13:18 +0200 (CEST) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa0.perex.cz 114951887 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=alsa-project.org; s=default; t=1656065648; bh=nDPgGxn42jdfOMQlqbQ2PsShqAGnclAr2BqSaIQLgos=; h=From:To:Subject:Date:Cc:List-Id:List-Unsubscribe:List-Archive: List-Post:List-Help:List-Subscribe:From; b=LoJRQTC1PMxkHggXdQvwx6T1ur2CyLe3Z4m1qBSGOZfo72swa78NRCXgmvKGCXsYX ZiwQPOfrs2vHA+lz3t//0U/HT/N9Js/A7qaDPksJDM+yLPTJjz6Tspp+GFC7vi81UL PRvvliQ95wfT1qTCkeCkc1pC4lxwJ68UeNIoJv18= Received: from alsa1.perex.cz (localhost.localdomain [127.0.0.1]) by alsa1.perex.cz (Postfix) with ESMTP id AC843F80137; Fri, 24 Jun 2022 12:13:17 +0200 (CEST) Received: by alsa1.perex.cz (Postfix, from userid 50401) id D029EF80139; Fri, 24 Jun 2022 12:13:15 +0200 (CEST) Received: from de-smtp-delivery-113.mimecast.com (de-smtp-delivery-113.mimecast.com [194.104.109.113]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by alsa1.perex.cz (Postfix) with ESMTPS id D8B40F80109 for ; Fri, 24 Jun 2022 12:13:08 +0200 (CEST) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa1.perex.cz D8B40F80109 Received: from CHE01-GV0-obe.outbound.protection.outlook.com (mail-gv0che01lp2046.outbound.protection.outlook.com [104.47.22.46]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-35-1TEmWMIcMkW_IT2oaLkkvQ-2; Fri, 24 Jun 2022 12:13:05 +0200 X-MC-Unique: 1TEmWMIcMkW_IT2oaLkkvQ-2 Received: from ZRAP278MB0495.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:2e::8) by ZRAP278MB0061.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:14::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5373.16; Fri, 24 Jun 2022 10:13:03 +0000 Received: from ZRAP278MB0495.CHEP278.PROD.OUTLOOK.COM ([fe80::f0b6:54ca:c3ff:48c1]) by ZRAP278MB0495.CHEP278.PROD.OUTLOOK.COM ([fe80::f0b6:54ca:c3ff:48c1%5]) with mapi id 15.20.5373.016; Fri, 24 Jun 2022 10:13:03 +0000 From: Francesco Dolcini To: Fabio Estevam , Mark Brown Subject: [PATCH v1] ASoC: sgtl5000: Fix noise on shutdown/remove Date: Fri, 24 Jun 2022 12:13:01 +0200 Message-ID: <20220624101301.441314-1-francesco.dolcini@toradex.com> X-Mailer: git-send-email 2.25.1 X-ClientProxiedBy: MRXP264CA0013.FRAP264.PROD.OUTLOOK.COM (2603:10a6:500:15::25) To ZRAP278MB0495.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:2e::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c377d9e5-5c71-4492-1fa8-08da55ca1fe3 X-MS-TrafficTypeDiagnostic: ZRAP278MB0061:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0 X-Microsoft-Antispam-Message-Info: 79tBDaWgogUFU8uNOvoCCon3ZF1+1KzFgNglfs3wrTZV319jdeajCx37d8HKrpteGjbO+DwMhhkra4bWL8QQv5zqgDw3377Dywmo+728Yo0heOHD/SjpOYT+j3BlaZx+WPJ3W4g8Xtfb2/FueIEzxK4tl+MwfUkSMnp57UfYMt37y16qn1d7unFzGmx9RdYfuhtwoUljyNpmm4/4pRBs+OtHnXEeaaKaXCY0zvd5tWhArzEIi47Q4mlc8IOx1po8CmD+w829mJpJmy99lmwe89/rdT0fB3bSwAIvCnYy+JwsBBJc86nCMLJgSaEdfS2g4u5iia9CRHb4Mwv6H1R6mut8JGv9L0EsQgGTVRLdnMKoyzSMKDH9Z5A7SJgWzg61n1xYNpeUMhiSsIB/KEr235RHTO8S5jDePDZhleeKCc6moHhJyYPPVVLQRvzwJpYLwiI7nNdvmf7dxxcOFoNv+6GmMoFv78Acv9G5DLBOFvugBSmtI97Mth/yFSULY+44dHMlYuxL7pAWON0VHAGFLD3EJA6XfJfdTIZRHjw6+AmoeCuoZDovQFafDNLLhMbzz0Zz72/M8D+6/VcaQwRB6hBLEtUxLDTqkY6/lvsbFWtYnQHVbif3Xb+0KZxPNgh9I2iqZb874fP21T5WNZXOz3jOhnr/wXlsbwDHSsbfqqv+eyo0dLvqxk3zcSPXWrzMGLtC+CV6HAXVY3tDoatLbIllEfjUcUbKhNgJFkqHt2UQPS6yNCPOtwOpOcIZEXzzgYd7UTsFQ3Lf8RfIoDFdDSpru9QtngXNApjKywqJnbI= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:ZRAP278MB0495.CHEP278.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(13230016)(4636009)(396003)(376002)(136003)(346002)(39850400004)(366004)(2906002)(66556008)(66476007)(5660300002)(4326008)(66946007)(2616005)(6506007)(8936002)(8676002)(52116002)(186003)(478600001)(6486002)(1076003)(83380400001)(316002)(86362001)(36756003)(38350700002)(54906003)(26005)(6512007)(41300700001)(38100700002)(44832011)(110136005); DIR:OUT; SFP:1102 X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: D6pdFOFgWp3XkdiDxZDC8J5412HB6R3oDDnleKkFIv7SfFAohxRkvWkhPtgdMYrwv1TspvfTRQqxJegEhM6XNLFnDvkaK3tJTqJn0xi4UY20MIOGgFpg09UOBYFaE9szTxqZz9Zx9LJP4/QYpsr6UMkqhXEil7XdwsxR6r8a21WEv9HJiE1P4meb/85vQdXVcFk38jnvfG2lgK3cIALif5u4hUhNyqzs498hXbpblktpMjTTl+VPMKxAvXgXFUYy5zuILkHX48+vRpzx/WsEpIAkVqqownaWCZyaBMOzgp3pGPXA0oeZfFn85IGdHmRHtkzMqykkIK+LPOdK2Rnx8OoRPUV7n15qn+Q7pBZi4UVjqPcGSbBbYB2u7OAJcP/qtCMd3sJgi6uXafJc0fPpP6pA3OJ07PTex5DoSHe4EYFWG6yXpefqj46HDQg9LqYjm8YaAJCF+vd726Zu8cpQxWaJL2WbndLM05O27agrPQjspcngz+tbS8Fbxk7Zk8KLvg9/xiBNoiYonTc9+dOYPY0KmKUf+SnJzUN7WkqtromCMWyH6hOpIKGaOmm67HSXqv+FBkNYypjsP/rCj7yBAP0HO+rv5I/VQ3MV9HIjKiI28QKIWTyGYydI1gHr5t+/jKDQ3E0IwDmyJGPGnR2P0lS4nOdMCSM729LCzLu6JuWsKtUgqGT+9iZkzirp67dBXEM2qo1Od8lB0A0x7n1RcnS9p9nhhfPlT1OLLjnudCEkUbHJgQOXScgZlg9Wcjo5S9doW9KqjXior9PM7sGh9/7cgvKxaR8Mr6OHP8ExVeZdT7Jn9zkifLFuZjm+H1MFT/4oWL23FGBCiG8sNLb9wwfEW52UtYcDFCYUsuPUOISgVY4zMNU1Au8BgKmfZCTqKLcBRcffZ4mCV0kFoxtSDDCck3pVrSaY03YMOAJw8uRSBrzDPu0v1UuU/Ht7OYNCFGPeUHRlgi2yldUZu5r6tCoHSynR2NuA7UWgWVRwfhi/0T6b6ZKOQZ2dmr7EIyP+zNTmb5BvAKCovz/Tgd2GqiuVXo7f8ZHzyXPxzViXG9I8oE3hj+qUr8EZR+2/gsvDeBtOfpnMyUohxdLKcndSGrsokrl4BsmY6Rw4yUsZVKwI8sugVcIkYCCImHcQl2zVbiV5ih7AAtG56wM3dspHBD+bmkFO8R+0KH2G7y0vpXegqyWRo5AQTZYVa3QSvuiccCRNDBg4ygnrYQUM0ecLRhvB52NYu0dCWIHKEkwA4YdZJBLroTZDXkEmzfHKDtI0RD4tH6KQCS4ciyRkNzxfvEcXp6dEa9n2yYph8l3uVHur9VQ6dPgsAckx22Gpc2W1Rd0hr9WkcWnvdQy75/xdn9DqJ9qBZrJbv+KMpxijANzwQoDlXfPdRqWj+0HN+Cw40y68yACMhiXw+C7Jxx1t05rLPL+iTu/HPJmmhZqGspFTvVitoxGbA2MeVEimC+UO1aJgDZ7TohyoGVrSZeanSb4GVieCCyoaLtsaicQ0btDpjXWedEr9mhytR4oI5Eiw1ojN3bEFdCeE18b6/SGfn8qLUjBRprokTqJqtU1LMmqDVFoR3eGFclAQgKupeKv2dRwmebuXTcbe5hUr/f4wYA== X-OriginatorOrg: toradex.com X-MS-Exchange-CrossTenant-Network-Message-Id: c377d9e5-5c71-4492-1fa8-08da55ca1fe3 X-MS-Exchange-CrossTenant-AuthSource: ZRAP278MB0495.CHEP278.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Jun 2022 10:13:03.3703 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: d9995866-0d9b-4251-8315-093f062abab4 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: kRqIr63hdWlGqW3IWR1+OOH12mdIGp6Jkgywy388EOhw/KPD6BlGjemhjoZeTogs5ZHAyEDP/hw5j5cWfgLQjq8/xOER004EdpdtdlJGdwE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: ZRAP278MB0061 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: toradex.com Cc: alsa-devel@alsa-project.org, Takashi Iwai , Liam Girdwood , Zeng Zhaoming , Francesco Dolcini X-BeenThere: alsa-devel@alsa-project.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: "Alsa-devel mailing list for ALSA developers - http://www.alsa-project.org" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: alsa-devel-bounces@alsa-project.org Sender: "Alsa-devel" Put the SGTL5000 in a silent/safe state on shutdown/remove, this is required since the SGTL5000 produces a constant noise on its output after it is configured and its clock is removed. Without this change this is happening every time the module is unbound/removed or from reboot till the clock is enabled again. The issue was experienced on both a Toradex Colibri/Apalis iMX6, but can be easily reproduced everywhere just playing something on the codec and after that removing/unbinding the driver. Fixes: 9b34e6cc3bc2 ("ASoC: Add Freescale SGTL5000 codec support") Signed-off-by: Francesco Dolcini --- sound/soc/codecs/sgtl5000.c | 9 +++++++++ sound/soc/codecs/sgtl5000.h | 1 + 2 files changed, 10 insertions(+) diff --git a/sound/soc/codecs/sgtl5000.c b/sound/soc/codecs/sgtl5000.c index 2aa48aef6a97..3363d1696ad7 100644 --- a/sound/soc/codecs/sgtl5000.c +++ b/sound/soc/codecs/sgtl5000.c @@ -1795,6 +1795,9 @@ static int sgtl5000_i2c_remove(struct i2c_client *client) { struct sgtl5000_priv *sgtl5000 = i2c_get_clientdata(client); + regmap_write(sgtl5000->regmap, SGTL5000_CHIP_DIG_POWER, SGTL5000_DIG_POWER_DEFAULT); + regmap_write(sgtl5000->regmap, SGTL5000_CHIP_ANA_POWER, SGTL5000_ANA_POWER_DEFAULT); + clk_disable_unprepare(sgtl5000->mclk); regulator_bulk_disable(sgtl5000->num_supplies, sgtl5000->supplies); regulator_bulk_free(sgtl5000->num_supplies, sgtl5000->supplies); @@ -1802,6 +1805,11 @@ static int sgtl5000_i2c_remove(struct i2c_client *client) return 0; } +static void sgtl5000_i2c_shutdown(struct i2c_client *client) +{ + sgtl5000_i2c_remove(client); +} + static const struct i2c_device_id sgtl5000_id[] = { {"sgtl5000", 0}, {}, @@ -1822,6 +1830,7 @@ static struct i2c_driver sgtl5000_i2c_driver = { }, .probe_new = sgtl5000_i2c_probe, .remove = sgtl5000_i2c_remove, + .shutdown = sgtl5000_i2c_shutdown, .id_table = sgtl5000_id, }; diff --git a/sound/soc/codecs/sgtl5000.h b/sound/soc/codecs/sgtl5000.h index 56ec5863f250..3a808c762299 100644 --- a/sound/soc/codecs/sgtl5000.h +++ b/sound/soc/codecs/sgtl5000.h @@ -80,6 +80,7 @@ /* * SGTL5000_CHIP_DIG_POWER */ +#define SGTL5000_DIG_POWER_DEFAULT 0x0000 #define SGTL5000_ADC_EN 0x0040 #define SGTL5000_DAC_EN 0x0020 #define SGTL5000_DAP_POWERUP 0x0010