From patchwork Thu Mar 25 19:26:36 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Robert Hancock X-Patchwork-Id: 408975 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=-18.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER, INCLUDES_PATCH, MAILING_LIST_MULTI, MSGID_FROM_MTA_HEADER, SPF_HELO_NONE, SPF_PASS, USER_AGENT_GIT autolearn=unavailable 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 E2DC4C433E6 for ; Thu, 25 Mar 2021 19:28:52 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id A6BC7619D3 for ; Thu, 25 Mar 2021 19:28:52 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230189AbhCYT2V (ORCPT ); Thu, 25 Mar 2021 15:28:21 -0400 Received: from mx0c-0054df01.pphosted.com ([67.231.159.91]:43558 "EHLO mx0c-0054df01.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230085AbhCYT2A (ORCPT ); Thu, 25 Mar 2021 15:28:00 -0400 Received: from pps.filterd (m0208999.ppops.net [127.0.0.1]) by mx0c-0054df01.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id 12PJR1iY022970; Thu, 25 Mar 2021 15:27:52 -0400 Received: from can01-qb1-obe.outbound.protection.outlook.com (mail-qb1can01lp2050.outbound.protection.outlook.com [104.47.60.50]) by mx0c-0054df01.pphosted.com with ESMTP id 37dc5xbcgt-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 25 Mar 2021 15:27:52 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Ye8UeNyEuLAMlBgfnD8+npfj1/E9WmATcPp0qkZS/iXGLSTXHBus3zRgVd/Mdv2MQtnQHLoFh007LLJp4YL5yXQbkMkkrLrU0dzB3NF6fb4ea8B/SOpZek44/UV5k0hFZxDyxfPOdmQEagiyXTHc3i2ywY5bkZpLdALhwMw6dTJE+G76sM9v6261WF/wvmyNNant/6Khuz1IcS0O/kQYGTX88p8/ivpJ6Q3npHmjNEE+4O7OHoiMqBcrpDd8CjBWh2vr+2ZdjeZKCb58TuPNNXXYOSY803As/lRRcIK08dziYQdgs1RAK1HCLv5YDsSIS1J0m3U8G64n4aQY3bkJsA== 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=cEq4dvJRYs+77BkhYcPb2ofaxxtW6jdlmehqZboCYtk=; b=iD7bh0lmYsxBBNCiSq033/lUyJxKPY8S0uMlfpLuADSIRgNzSYmKBJ5cLQDz4RbtCTrUAk0vK+sfFF/WjoKxC/sIwSaXMXrqXMNlJbsPtyftXOuKVtY5pkIt9O8la4RQH9AINA/GVFlCxjU3lTgZpfqM4WRL+L8ssFywdnvmO79a24vWrYa4tb9i+bjYLK07KnJs/zHxRnb03ykOTWEPq4a30eOV3eNz5FUJOB5b0El/vP1MuDXd07CWeNKER6BxeZEYQs5D5TwbjngI6kCQGv46acCQ5WHFis9yOaLS6WiCZvQk101EPl7/i5tz/KCTSvWorlhBUhgj5zvF3nRn0A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=calian.com; dmarc=pass action=none header.from=calian.com; dkim=pass header.d=calian.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=calian.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=cEq4dvJRYs+77BkhYcPb2ofaxxtW6jdlmehqZboCYtk=; b=srIMoFybLMlTwff5384IGA2MZjW8DTii3vvsmxhepTmmd+4yYZpgq0NidaQmPvn90cyyp5moVhyQYO6bKQg8XnM5IW6ChuGLrqcfrAQuAimdl4VVsY9Q6SxyxIwqT1GK//sLcz/1CsudKUPETyPQpcz1ltFrs1IosmgFZ4V/ztk= Authentication-Results: baylibre.com; dkim=none (message not signed) header.d=none; baylibre.com; dmarc=none action=none header.from=calian.com; Received: from YT1PR01MB3546.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:f::20) by YTXPR0101MB0735.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b00:8::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3955.27; Thu, 25 Mar 2021 19:27:51 +0000 Received: from YT1PR01MB3546.CANPRD01.PROD.OUTLOOK.COM ([fe80::90d4:4d5b:b4c2:fdeb]) by YT1PR01MB3546.CANPRD01.PROD.OUTLOOK.COM ([fe80::90d4:4d5b:b4c2:fdeb%7]) with mapi id 15.20.3955.027; Thu, 25 Mar 2021 19:27:51 +0000 From: Robert Hancock To: mturquette@baylibre.com, sboyd@kernel.org Cc: mike.looijmans@topic.nl, robh+dt@kernel.org, linux-clk@vger.kernel.org, devicetree@vger.kernel.org, Robert Hancock Subject: [PATCH v3 2/9] clk: si5341: Wait for DEVICE_READY on startup Date: Thu, 25 Mar 2021 13:26:36 -0600 Message-Id: <20210325192643.2190069-3-robert.hancock@calian.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20210325192643.2190069-1-robert.hancock@calian.com> References: <20210325192643.2190069-1-robert.hancock@calian.com> X-Originating-IP: [204.83.154.189] X-ClientProxiedBy: MWHPR17CA0049.namprd17.prod.outlook.com (2603:10b6:300:93::11) To YT1PR01MB3546.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:f::20) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from localhost.localdomain (204.83.154.189) by MWHPR17CA0049.namprd17.prod.outlook.com (2603:10b6:300:93::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3977.29 via Frontend Transport; Thu, 25 Mar 2021 19:27:49 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 604afd08-d6ad-4ba6-480a-08d8efc41467 X-MS-TrafficTypeDiagnostic: YTXPR0101MB0735: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:7691; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: L58oELhWBfadfi45czsNhSzzsqHzkYwPzPXma+wd/SiLGm6dqgfwGZx3hNERrR9DfT3DDdoqWmwy+Bt27k+P5oyQjCyDT/MyMTAPbBHx2NSYxKmhZ3bnwyaXAI8PtMnuWMDw735gMXAT4RUk/fKP+DvHyfkQoeQeEV2tAMF7E4MEATVlbdEO6ML5Fwzxf2LFPfC8iXrlKlL+Y1LcO9f+ubN2Gplxu5AUSZqsdoL5p3RdLZPa8DoC7ofaYGO6LhUcl6QaBKDnPKwckvRFu+w+kv7aQxX0X5Tbmdt6WR6pJth3bO18PE4x8Qt3S1uQ5z1J6nC3dWxxZPRCJ8Ea1v53D2kTaxXKVsPUg1Uley8NXNr4PVf8NJdOHVfyJ2t9EVJ7PEu/yt/aVA5b1UD6wu7r5BxNbjqlypkBtm87Xa6wp3ccPwOJLf70KfMV7nZyY/ytCdaQSfRMW0pC8VBDeUqhpXupc5A+kOA9njw9XA30hKpgDflWQxtuMxqxGn/vXjDDXm32k/j6L22BEo7CkOoACxabWLzGf+f/ctTJeVs8ihNb5yLlYfpeWs1ByZunF8vmGLdcM5E1K7QC7zPGdni/k84kCFOF0uR4w11jBYIuuUcMn2HUrJt4QynmJrSbknqrpGU+cbhxyuhMNKCvc6EgCp5nmeAJiEI4uRj2C5sUzuI8mw17/wm6ABw0Pu4R5S7z X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:YT1PR01MB3546.CANPRD01.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(4636009)(136003)(366004)(376002)(396003)(39850400004)(346002)(107886003)(6506007)(956004)(316002)(38100700001)(2906002)(52116002)(69590400012)(6486002)(66476007)(16526019)(6666004)(186003)(86362001)(66946007)(66556008)(4326008)(5660300002)(36756003)(83380400001)(1076003)(44832011)(8936002)(26005)(478600001)(6512007)(8676002)(2616005); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: uz7q9XoRlGN7yBGovFgLUMvFQgHzb44UUsFzc1EgLOma8eEJUrLzEYot52qynx01ULGXeHCJWILncV9jIDOUyWUjDOwVdf77OIjjRgHlDMi00tOb4cqD2Kai8LQELGUT1JId0W3GQl775PBm+PoYiXstkXtWoKvBQBYS8k9HwUCQUMtVkOWZLFbRTab5VZOw23/5mxevezeeNegRsnck8XYxZdxU4m4JgjjBg0yVV9PUwWQecUOPjNZfPKQo5knel/6UMG+AVrfh+K73cMmai7G0/XInirvCsnpqwyfe+nqsbjYOy5MhwlK9dvujSYyr+xVZN/eiDEp2q2ELCfKwcRAnX1iWfcpC4ayEvJinX3z6uVqwO4f4e1Fgi0ZYJkH4kqnK9kiBoqD7yE34klJnrP9b1ry6VTEJ+fSuEr4JqVwk3SjlF88Q8OZyc8+WQpXxm6cI98dqwUvV1LsbufyyuomsvILXd3NCTwmFCjgtX8c6NCLEqmETZlMPxTKsHa5NE5DzfwLDsAVxRf9yue/jUPVatNtGHSmA3NAb1TrwiWTs22OdzRtR3dENq4OLEe/MQm1MqxC/myxKZBbbOosKULfJ3v9JB7+gvRMdKW4WBUTlqZp27s7YojOpbXKljdrmrd/fV9Kxtqruw9CwyIEsi1CogCAkA+DHAUNw+wB0Efi+gVbFnTP74IIeSbp1A7k2NjwSkqnJjeWKo5pNvVs7CcwrSINnX6mKMSt1ElNh+PY9UmM/SJsthCguAYSA5aZOdJOIsJYqyYpuY8xTXc93nLsCZ717TU7oNm7S8Mbf1p5O74KWA31RQcmjOeYo0y/nKl1XBF0ISDkecmb5HDXfuYEpWZKtXoUdxbyvyMb0xJmF6Dkc3phTxsaKxLV93yiDkc8D/tBeVS00p9kNETCkH8hWczRyspKrAz//xWJORDP48WyB70nMLWkNLjr9yWJCavvX+xOsENDS4gLI2jeZMoDYfKsgm18GspPM6Dd/1ZEbqYYnoyh5yGAtQu4fxk+oFax74w5cLazpaL23nPAT/0DAbpAH/zxjH0Oyh0gHnHLqMsLxcb9aqMXGKl0Xe1hxN3CqTFMxCC/BqaZ0YfIE+Gd+hupZhXKM4KlKWAITDXLEodAIqIeZi8uPJZFqGllTU78T8ZmDk5g7kGYZ+pO6nJTc87VHooEw1egIgJLY8nEQmOCLeJj+o549uyTvBcpXB3esQSv394Q9UQ4Q4l/1FlCtedP8VIk4Rn8ryfKI/sUTSLdWGwV/yy7Q3trVDkHL9F9iwKWQR9RRw78lfr0n9tXepRShD6eYhJGab+QiY2MSTIh9NeWMw1As7ubgzFsH X-OriginatorOrg: calian.com X-MS-Exchange-CrossTenant-Network-Message-Id: 604afd08-d6ad-4ba6-480a-08d8efc41467 X-MS-Exchange-CrossTenant-AuthSource: YT1PR01MB3546.CANPRD01.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Mar 2021 19:27:50.9175 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 23b57807-562f-49ad-92c4-3bb0f07a1fdf X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: n4Le9bLPnfD0uAmsffkjkhh7XGMNFhrkeN9gHLG++BHqD6nAnKYOPbTQkr+HT7/0D5tG6tKIqYYzyJOdCfZlxVhsuT8huhRpZml1WspT4Z8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: YTXPR0101MB0735 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.369, 18.0.761 definitions=2021-03-25_07:2021-03-25,2021-03-25 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 adultscore=0 lowpriorityscore=0 impostorscore=0 phishscore=0 malwarescore=0 spamscore=0 suspectscore=0 mlxscore=0 clxscore=1015 mlxlogscore=999 priorityscore=1501 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2009150000 definitions=main-2103250142 Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org The Si5341 datasheet warns that before accessing any other registers, including the PAGE register, we need to wait for the DEVICE_READY register to indicate the device is ready, or the process of the device loading its state from NVM can be corrupted. Wait for DEVICE_READY on startup before continuing initialization. This is done using a raw I2C register read prior to setting up regmap to avoid any potential unwanted automatic PAGE register accesses from regmap at this stage. Fixes: 3044a860fd ("clk: Add Si5341/Si5340 driver") Signed-off-by: Robert Hancock --- drivers/clk/clk-si5341.c | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/drivers/clk/clk-si5341.c b/drivers/clk/clk-si5341.c index e0446e66fa64..b8a960e927bc 100644 --- a/drivers/clk/clk-si5341.c +++ b/drivers/clk/clk-si5341.c @@ -94,6 +94,7 @@ struct clk_si5341_output_config { #define SI5341_STATUS 0x000C #define SI5341_SOFT_RST 0x001C #define SI5341_IN_SEL 0x0021 +#define SI5341_DEVICE_READY 0x00FE #define SI5341_XAXB_CFG 0x090E #define SI5341_IN_EN 0x0949 #define SI5341_INX_TO_PFD_EN 0x094A @@ -1189,6 +1190,32 @@ static const struct regmap_range_cfg si5341_regmap_ranges[] = { }, }; +static int si5341_wait_device_ready(struct i2c_client *client) +{ + int count; + + /* Datasheet warns: Any attempt to read or write any register other + * than DEVICE_READY before DEVICE_READY reads as 0x0F may corrupt the + * NVM programming and may corrupt the register contents, as they are + * read from NVM. Note that this includes accesses to the PAGE register. + * Also: DEVICE_READY is available on every register page, so no page + * change is needed to read it. + * Do this outside regmap to avoid automatic PAGE register access. + * May take up to 300ms to complete. + */ + for (count = 0; count < 15; ++count) { + s32 result = i2c_smbus_read_byte_data(client, + SI5341_DEVICE_READY); + if (result < 0) + return result; + if (result == 0x0F) + return 0; + msleep(20); + } + dev_err(&client->dev, "timeout waiting for DEVICE_READY\n"); + return -EIO; +} + static const struct regmap_config si5341_regmap_config = { .reg_bits = 8, .val_bits = 8, @@ -1385,6 +1412,11 @@ static int si5341_probe(struct i2c_client *client, data->i2c_client = client; + /* Must be done before otherwise touching hardware */ + err = si5341_wait_device_ready(client); + if (err) + return err; + for (i = 0; i < SI5341_NUM_INPUTS; ++i) { input = devm_clk_get(&client->dev, si5341_input_clock_names[i]); if (IS_ERR(input)) { From patchwork Thu Mar 25 19:26:37 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Robert Hancock X-Patchwork-Id: 408973 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=-18.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER, INCLUDES_PATCH, MAILING_LIST_MULTI, MSGID_FROM_MTA_HEADER, SPF_HELO_NONE, SPF_PASS, USER_AGENT_GIT autolearn=unavailable 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 776E6C433EB for ; Thu, 25 Mar 2021 19:28:53 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 3D19E619C2 for ; Thu, 25 Mar 2021 19:28:53 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230085AbhCYT2V (ORCPT ); Thu, 25 Mar 2021 15:28:21 -0400 Received: from mx0c-0054df01.pphosted.com ([67.231.159.91]:20015 "EHLO mx0c-0054df01.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230082AbhCYT2A (ORCPT ); Thu, 25 Mar 2021 15:28:00 -0400 Received: from pps.filterd (m0208999.ppops.net [127.0.0.1]) by mx0c-0054df01.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id 12PJQvEE022964; Thu, 25 Mar 2021 15:27:54 -0400 Received: from can01-qb1-obe.outbound.protection.outlook.com (mail-qb1can01lp2057.outbound.protection.outlook.com [104.47.60.57]) by mx0c-0054df01.pphosted.com with ESMTP id 37dc5xbcgu-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 25 Mar 2021 15:27:54 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=nqIAcLzw76oqGg200THdwN2aC6DCc+9Qvrwc3kQ4wPg6m0sHIO/amAzg2nzfqDeLYkvgWkL/onyiovSTVfWHv0lISLQ5QZaVTDUGrbiunUMiqSQZd+eQD1sn/iqx0CKxo3jXIsP5nnpvCjoFhKBn0nwnQJSEXfKJyQB0LFZuRMj150qDLHVaeqkXHEYM0R2KVhSjcikwYNUL5uKNN3H+/Ga1tykj/3opfvzwah8s5IBqj3seoKskNmdFe3jtyoEiVY1IbjMD4QYy1WAyd8WnVq4YEtf8OC75o/oL/IG2EKYBUVGmD8E3XAIdbSTRHEo2t1GK9YxR4G05dSWUVgZl1A== 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=vx4j3QhKkPc4qgBW8L+J/EEFbL7uoAIZCm+ICqFashE=; b=G3ze2MyksEDwgxh6efrtEILGd4/PC1I44ORTdtd5rxlDnIlZ8z9Nt7SkOmjbr2mWv/L9ueTYmO2lCVoa/ivtT8o0wfe6b4h46Q1newSyPhagGwtL8IxDSQk/cSwxTjWkISmCQ57lrR/iuURSgH6Y9E46XvdZtuiahr9YydvsqgdXotw6XQGZb73yclIM2CvGZSZpxp5TW/IQl+aDohGgJshjcXWr3VRy13Q3UzHdM3aSua3G1QD9ecC9t/CXLfIrF/98YQno/h4iaODInNkO507L0gvMnNjfVCj1nPmgw4migvbFdIv5lGUTPtStjqlrk2vJCJC5K+bGvhBmjrdyyQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=calian.com; dmarc=pass action=none header.from=calian.com; dkim=pass header.d=calian.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=calian.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=vx4j3QhKkPc4qgBW8L+J/EEFbL7uoAIZCm+ICqFashE=; b=P1WbKU/Sf4dMJpOCh487i+1UP+K22564RMbyfyc2iRNJ4dFm3AdsBHtR+DmFqnlqX+yI5ErIXtv/IgefCjkaNgykDnoa/xOMshGZAQCgRXwp0ssIUQADFcLGuD9BsRYdnzPHNHypldCr5rlWc9vURDhHebg5cHvV8l8wy1RrwmE= Authentication-Results: baylibre.com; dkim=none (message not signed) header.d=none; baylibre.com; dmarc=none action=none header.from=calian.com; Received: from YT1PR01MB3546.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:f::20) by YTXPR0101MB0735.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b00:8::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3955.27; Thu, 25 Mar 2021 19:27:52 +0000 Received: from YT1PR01MB3546.CANPRD01.PROD.OUTLOOK.COM ([fe80::90d4:4d5b:b4c2:fdeb]) by YT1PR01MB3546.CANPRD01.PROD.OUTLOOK.COM ([fe80::90d4:4d5b:b4c2:fdeb%7]) with mapi id 15.20.3955.027; Thu, 25 Mar 2021 19:27:52 +0000 From: Robert Hancock To: mturquette@baylibre.com, sboyd@kernel.org Cc: mike.looijmans@topic.nl, robh+dt@kernel.org, linux-clk@vger.kernel.org, devicetree@vger.kernel.org, Robert Hancock Subject: [PATCH v3 3/9] clk: si5341: Avoid divide errors due to bogus register contents Date: Thu, 25 Mar 2021 13:26:37 -0600 Message-Id: <20210325192643.2190069-4-robert.hancock@calian.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20210325192643.2190069-1-robert.hancock@calian.com> References: <20210325192643.2190069-1-robert.hancock@calian.com> X-Originating-IP: [204.83.154.189] X-ClientProxiedBy: MWHPR17CA0049.namprd17.prod.outlook.com (2603:10b6:300:93::11) To YT1PR01MB3546.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:f::20) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from localhost.localdomain (204.83.154.189) by MWHPR17CA0049.namprd17.prod.outlook.com (2603:10b6:300:93::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3977.29 via Frontend Transport; Thu, 25 Mar 2021 19:27:51 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: cf6d60d7-bc5b-4958-3ae1-08d8efc41561 X-MS-TrafficTypeDiagnostic: YTXPR0101MB0735: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:7219; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: avzYQSR3dzCnfR8DDx9MrpmWDt5kaOPBPWgN91Rf2NIxLrrK6tExBgwENiaXV4TCOmVZd3j8HR1W6fQbNP/OmEJPifTMhI1O8vKAYbgoROqt09rNDCXc7NvvrV/Tb6PAgc2jvAqSyQHTwxoKGQlMJWPkScc2gwygSqet9bd01SvlTpt0AtGgeiJC8+4yM+anO8VdcQnpGlLmeWz9HBbmNWNUJ51fcWgJZSvAfBnzw6+x1CyPVpM6s8pm47LvDxD2LKH8TIDCGW/0FMvIqbBKhB4gt021De9WtNOfi1QT0meeI+uuVZosWFOLu5PU1dh26c3bDhfjfYxG4W13MWr7wc7wnQbrAymiKl8zRU58lMnBldZFMU58A/M1yWrY005nuACcBAqoamP4ScNvmnjnHhDYiKFTwYXMZMg5ifwdVWnL697LeY1oQtkk8GgDss+ioDykc2whwUa1uTXArZz4M+FnsDoXhRoKuwobZdGPIQbWz6+Iqgdo6Qm3Ud8KxBBguqWUw9+Hm9DL7nET4aNOIfI1Cw8eT8elP2jpkD6Fmq1UUTnKZFOHPbguvBe0cgInKXL+mE2l7kKoeGS28ouiHxhnDPN6RfhBp3pbyopz+TxnYQZixKJNBgLEFatBXhfVpk4qmkPuUGpxKI11cQ3JbosXssSOReyKzrmqoMxLo27dbEmUngTwJkkyZjwJ2tf6 X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:YT1PR01MB3546.CANPRD01.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(4636009)(136003)(366004)(376002)(396003)(39850400004)(346002)(107886003)(6506007)(956004)(316002)(38100700001)(2906002)(52116002)(69590400012)(6486002)(66476007)(16526019)(6666004)(186003)(86362001)(66946007)(66556008)(4326008)(5660300002)(36756003)(83380400001)(1076003)(44832011)(8936002)(26005)(478600001)(6512007)(8676002)(2616005); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: p0SkVGVE5pDzSTRxgbacz1MvNdAF+7upXgnsqvjaXz1ZOWrlCxUtE+QMXX1a3d8TPWlz7yGFsNV6E5cOAk22VLOkDPrvvknSljuACUyvjG1KnYC/pk0ye+LLvJIdJAh4MK08lEWWuJXTLft084XGP4o0ER3o9F8PchbJCC26/z+wqqEu7bChfiTYD2vUdeb1KhnT9zHR37Z33sJClMJgJTBUkEhCF3xuWMRKsSBCqwegX1zkbZbELidu0mh0oF8s35y3XbcrnpB/AU7YJCrf58ebNHbR/V3jWMHrZe4GJQ7FJOe6EAc4bePBBDjd/slSRCaszfWMvUBa5IaMaHu3J3CuJxYF+KUhdS8oqWhzhlKBCd/oyw0lwHAXEHgd0JmBGeatZQORtGVKl+gcIBTVcX1oMVE61WZNlSAw3lVmWLVFkA6aOYe0zERb7ubx/GGb8a/J79MUzz65xrip4yzAbdthlJSHiTM04EeINqs9gpmG4i8K0UxKtzIGvJaeKjy+6xbEc4wPQ3jqPT5qVF4nVbrLrQL+AgS8tdy2VFDHLN5/UkHdC/I4uUebKCsQ4wTnusiTvR3UAVeIcV47ruz54hrPtBg20y350tt6CXFt1qq7SbUUgn0FU70aIOnl9skM8TTE1X/PRJdFhvZj9qSERKMN/MYfAaRPRAnMFVfZwwcntz1Pz16cET3iZ3R7IMC4I2Qk5CAUA5w2HuOCuMaVsXmMGo0kvmD+yOHxSjsOqocDvlyjLj3ggVKH/ZZo6ZC6Z0nuiFdcmRQ6XL2iR1JVo7aAJowPL2Brmu/w1JLpX1WwS+JVh9fslzJ0EkFSKHrLeQmoHApANru4fvFqjzwHGNWGRkqVkQoVg/avvYOTux2+8gCanFp3SACQMOHbDlfK9hG8RNFf6gYjVt+Ojgd83cBwLIPMWse+yhl3j5h4y4sNl4K66YYLRCDctsCuwy5H+D6wGSx4gfgQ2YBMw55gKhNjVhXUYbqG2IHVqXxPvOAa+Y9UAST2bfY6NUfA79o5RSI7Ies6zFywvxmuDKpz5wKn0FEA8X/KvSVGm7OTz8M4ORcHuTRTtmY4BLPwlX62oUOMhsEl2/+VX+nIsSm2tUcakOfdECCGqlL2tI1XC/lCQExNHHKnDzrD4rOj7zWqEazngrEt5hWMIV2pwv3LlRxEkj1XiRvNhuVrGXRBBfJbcST80InD4nHM+hsdhGQ2vv9r8ozKnfUb1AaqnuHM3pMfC7EJixTNxGdiUJmFPC0dKpaGL5vZSO1GNEhF1qrQd2V6LlRuCXkjfehP4XZFtYKxgwknOw8qvMaco58wHOhE8ZXe+NItRuuZ9AnqJnGE X-OriginatorOrg: calian.com X-MS-Exchange-CrossTenant-Network-Message-Id: cf6d60d7-bc5b-4958-3ae1-08d8efc41561 X-MS-Exchange-CrossTenant-AuthSource: YT1PR01MB3546.CANPRD01.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Mar 2021 19:27:52.5626 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 23b57807-562f-49ad-92c4-3bb0f07a1fdf X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: pHuz2gj/vC8FLZGEIvtQt+AAokIK68oxGikhMjZ3sxAje0H4Q0DOpEjCt521tG0s+KXYbs9RPPOqn12+t5TtMDL6w8iDcd0mh3gl3CJKxtg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: YTXPR0101MB0735 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.369, 18.0.761 definitions=2021-03-25_07:2021-03-25,2021-03-25 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 adultscore=0 lowpriorityscore=0 impostorscore=0 phishscore=0 malwarescore=0 spamscore=0 suspectscore=0 mlxscore=0 clxscore=1015 mlxlogscore=999 priorityscore=1501 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2009150000 definitions=main-2103250142 Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org If the Si5341 is being initially programmed and has no stored NVM configuration, some of the register contents may contain unexpected values, such as zeros, which could cause divide by zero errors during driver initialization. Trap errors caused by zero registers or zero clock rates which could result in divide errors later in the code. Fixes: 3044a860fd ("clk: Add Si5341/Si5340 driver") Signed-off-by: Robert Hancock --- drivers/clk/clk-si5341.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/drivers/clk/clk-si5341.c b/drivers/clk/clk-si5341.c index b8a960e927bc..ac1ccec2b681 100644 --- a/drivers/clk/clk-si5341.c +++ b/drivers/clk/clk-si5341.c @@ -624,6 +624,9 @@ static unsigned long si5341_synth_clk_recalc_rate(struct clk_hw *hw, SI5341_SYNTH_N_NUM(synth->index), &n_num, &n_den); if (err < 0) return err; + /* Check for bogus/uninitialized settings */ + if (!n_num || !n_den) + return 0; /* * n_num and n_den are shifted left as much as possible, so to prevent @@ -807,6 +810,9 @@ static long si5341_output_clk_round_rate(struct clk_hw *hw, unsigned long rate, { unsigned long r; + if (!rate) + return 0; + r = *parent_rate >> 1; /* If rate is an even divisor, no changes to parent required */ @@ -835,11 +841,16 @@ static int si5341_output_clk_set_rate(struct clk_hw *hw, unsigned long rate, unsigned long parent_rate) { struct clk_si5341_output *output = to_clk_si5341_output(hw); - /* Frequency divider is (r_div + 1) * 2 */ - u32 r_div = (parent_rate / rate) >> 1; + u32 r_div; int err; u8 r[3]; + if (!rate) + return -EINVAL; + + /* Frequency divider is (r_div + 1) * 2 */ + r_div = (parent_rate / rate) >> 1; + if (r_div <= 1) r_div = 0; else if (r_div >= BIT(24)) From patchwork Thu Mar 25 19:26:39 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Robert Hancock X-Patchwork-Id: 408974 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=-18.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER, INCLUDES_PATCH, MAILING_LIST_MULTI, MSGID_FROM_MTA_HEADER, SPF_HELO_NONE, SPF_PASS, USER_AGENT_GIT 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 18637C433E9 for ; Thu, 25 Mar 2021 19:28:53 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id EB8BF619E4 for ; Thu, 25 Mar 2021 19:28:52 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230100AbhCYT2W (ORCPT ); Thu, 25 Mar 2021 15:28:22 -0400 Received: from mx0d-0054df01.pphosted.com ([67.231.150.19]:43233 "EHLO mx0d-0054df01.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230140AbhCYT2E (ORCPT ); Thu, 25 Mar 2021 15:28:04 -0400 Received: from pps.filterd (m0209000.ppops.net [127.0.0.1]) by mx0c-0054df01.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id 12PJQscn008256; Thu, 25 Mar 2021 15:27:56 -0400 Received: from can01-qb1-obe.outbound.protection.outlook.com (mail-qb1can01lp2057.outbound.protection.outlook.com [104.47.60.57]) by mx0c-0054df01.pphosted.com with ESMTP id 37ddy6a5mq-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 25 Mar 2021 15:27:56 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NjWpS7V4AB3xJsRqGkdOEux/HiuzD+BgEe/RgiF7MwX7uHYp2YeqyQsGZ4gY3gWfGgmUWdtvAYMD59tLXG5zeLPjuspEFGsyGD368ABP8BE6CA0h5XwMzTtEBeNDJGRi7bxfJOBVC7H4lhdvBy+zabfPp/0wGWTc+IVekp3N8HMhhkhf00etkQbNg95ateLWcDbCXaO8iLZLelr05TA4FY/T4A7tudiI4G7/lSnMCBwHhv7TuE8jSEz4UIow1CneICiLrSS1StYce2TzwmeaeI3VNkI6X3D6+nSg3lEBJREcX85ZuIELiLLZBNakIpHBnrXgSgy9ziVHNpzqALLBIg== 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=blLvoNM8Ox52kNXwQqqZCFCIqhsWBEdzVRv5nHs+CB4=; b=TwUgf48aPfLHo4aIJa8meTPPJWfPU/SSZyzoLQ1MwkiwOPinxWVj/O3ILmPRWt0YwVAe0je+VLuUFus6JYcSLSDERYMM2dXHWUYojDUiCfHJfWN3/3Z8Pg7s71HZuAxYcPlkn/W0lc27ydpBIGVTfjmAZPlK39Dqvt1i9TBbzQhbFMZa8j0ZkwH3EK8BsDHG5xShITnj541ys0kEGrTU+MLzhO75Nqgrox4/88MUtPmCyLdRvDdbJt7L2TR9TjJgpTS4pHSZl0mRP54/SdevHH8jCKCSLUXY1VQn+uVDinmsvUwUsyl3oJeZV5wZ0QqEjUUYMiouxWB10AzyX0a4nQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=calian.com; dmarc=pass action=none header.from=calian.com; dkim=pass header.d=calian.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=calian.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=blLvoNM8Ox52kNXwQqqZCFCIqhsWBEdzVRv5nHs+CB4=; b=CHfCaCkDORmvuP3/qW1zzuTVZEoWnz9nSJ2VkCbrM21sowqBBLSbgptuB4qTY1MnsL+/OZdiv8gel3q/BNRy6ZdUAc5ZrZpTtF3Pa5oYAknbfgZUhaIhFWdBZHSxiEdfomVFs1aNNyLnBm7UmHXENYFjGuAp7Nw/nqOH9k2GMKI= Authentication-Results: baylibre.com; dkim=none (message not signed) header.d=none; baylibre.com; dmarc=none action=none header.from=calian.com; Received: from YT1PR01MB3546.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:f::20) by YT1PR01MB2793.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:f::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3955.24; Thu, 25 Mar 2021 19:27:55 +0000 Received: from YT1PR01MB3546.CANPRD01.PROD.OUTLOOK.COM ([fe80::90d4:4d5b:b4c2:fdeb]) by YT1PR01MB3546.CANPRD01.PROD.OUTLOOK.COM ([fe80::90d4:4d5b:b4c2:fdeb%7]) with mapi id 15.20.3955.027; Thu, 25 Mar 2021 19:27:55 +0000 From: Robert Hancock To: mturquette@baylibre.com, sboyd@kernel.org Cc: mike.looijmans@topic.nl, robh+dt@kernel.org, linux-clk@vger.kernel.org, devicetree@vger.kernel.org, Robert Hancock Subject: [PATCH v3 5/9] clk: si5341: Update initialization magic Date: Thu, 25 Mar 2021 13:26:39 -0600 Message-Id: <20210325192643.2190069-6-robert.hancock@calian.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20210325192643.2190069-1-robert.hancock@calian.com> References: <20210325192643.2190069-1-robert.hancock@calian.com> X-Originating-IP: [204.83.154.189] X-ClientProxiedBy: MWHPR17CA0049.namprd17.prod.outlook.com (2603:10b6:300:93::11) To YT1PR01MB3546.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:f::20) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from localhost.localdomain (204.83.154.189) by MWHPR17CA0049.namprd17.prod.outlook.com (2603:10b6:300:93::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3977.29 via Frontend Transport; Thu, 25 Mar 2021 19:27:54 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 05e33962-43f8-4c5c-ad40-08d8efc416fc X-MS-TrafficTypeDiagnostic: YT1PR01MB2793: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:7219; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: gNJnyE16VIQVHIE++809BQFCdbLgVlpYiOvDAbgQcnoixG4/T409MsHRZ49g7aZsJOc2z5kpc6R3eCKsYWnG1lJnZm5Qo7aHe5aBrDQcd0LvmXOLHSC+YIxJxFSCi/PM/W+cSp+c9l4ZaXbrfoigyp/JXohHpMiFyMAFA60GCmA2Zapem9cor87GDJTMyesOdzWC+susclf1oKqCq/Ebg95KZQGJQKh+0vI5HfJ90ukssoS4QtXGfsUAMeJEbUJO05s+aw26Un9feyIov2uy3kFNkQmJ7lSl4wKoRT6Mya0QAD8QDj7yrbIRO9JaM3FDFyZrckpw4Ezd2WuAgUkhurTXf0WEH1Ldg1ITWdP7HVAHz6juuOMs7J6inabBMw0nee1pFyOAam2b54WkU2KxcmLC+7Pel4UqrxkMXNzadPI/pVBm8mWC/eCdmjrhnMPFrv57otb83qd0C2dYL86Wd4nSSMofztt9mZ+YlTcgmQt4UBJO8Y6kUzY2+ts6veC9X1R/TuhKRZgRvhRF9U/jUX99AT9G+CHq8eLheUkTsQbkGQ6UNtSj+3zZ+3HK198QDYZwmU4wWxR0TrERcx7B68xEdrdbEw/qbUpM9qVY7uwOqrKeX6wFyVK5nPKmIFUKQcot3XLzqw2rB0z2STcpWGS8nRPxJ//2IyuhPElVwhTwPsFrbLoA8Ke8o8WSCLoD X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:YT1PR01MB3546.CANPRD01.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(4636009)(346002)(376002)(136003)(396003)(366004)(39850400004)(16526019)(1076003)(44832011)(2906002)(66946007)(6512007)(26005)(8676002)(66476007)(52116002)(316002)(15650500001)(6506007)(69590400012)(66556008)(186003)(2616005)(956004)(107886003)(86362001)(38100700001)(4326008)(478600001)(6666004)(5660300002)(6486002)(36756003)(8936002)(83380400001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: E9VevWIZ9MBRHTki+mFp87/s7hMkpPD/YvdtZUFupeFqMrOZrzZRBgYneoTaY0gNDw2cWU91qGlH+wwZqMMK89qsznu2B87ifClhlxRa3vs1Bbbj4bmXoXcjzbf0XqY5jbF6fNk4u8VX72Hbsk5ohpwwPfGaM38t4bhI7m01Q4BMxBMD809gAq1+hqAbh4NDafPDYb2onyQ6UG7xqYwHvYNrP9wFa97B/peqmyyim1SDfeRTmXu66NjQSWRIMkmLnIjn1q8bWqK2j+0dee95CdLw+Oi6T9Qeaz60oQDEGBNPM4g0/cg8tRyXFcmNa3Qdn4WaPbIBd/DzEIru8yGlzkuah1f0q8w8rvB1TxCPAJ3/61B814ImldwpYu0qQ34jThWg+HBR8CYnZaiCApyXGkQ92dqcptIqWdGA5WvuVWWifkpL25TAsOIR7ve95zEZo40ssq43Ehu5qpZZzrrxZpl71gyyD0/EpR2k6ZB2ShLT8GtI956oVR5lovmtLSsGUAChT0zB2naR8axyLm9eOM/AO+vkrHGFDd68X37MTPjhPUz7E5m3GQPsEfEFKJ2uK2PMn9ftVjPI12FSRWGun6GiyA8J6eNgRQArIkKEZxHilojY3ZNiGPR16rSroXZyoy7TRsYKvFFMMgbH4iY2LEWh1bynyDRcMp2C19sKjDacvgFIyaBkNAC/yd0cnEvKhFpzWEUikPn141w9eZhGP7VRCOFrvfWKvE5Dajm5M3K3q2vJEQsyQ3qiBrREOeMZnMQJ6agKaYUf18CZgX2Ew5UOtTGmyfrl2sE7lwjn2vU0tjqInkk5gJWZmJviJEFgIKMG+sjSvdb7aiwxtJLVVlPgapZJod53tL7aU2ZW1v0dcm0s/gsHOoRNHTqWk0MPgKWlc8s+jXjkXemqKJ3s1uR6UKyWG7JINUjD2m82cxbyXBoavEyK6ewwfgZr8ffdbzinOE0YTd4g910WDV6oMs/Yh38+woDAZjNT3Ulgbo/B5A+b/oV51Xa8n/5AF+LA4x//GNRhHEDvRDlvj3Gw6PkvOYUuVLKa0tKs/GGdCAfWkGNvWm7/VVCi8VZGOydYcZdG5C2hlhrIWz4gWIwZ1ZYyLI3/wTSQKLiqv+K0mkFw/R6Ic4Wi5YMHL2ejM0smRyS+c9vLXTyz+maxUe5CS/9Nu3eQ/+cajjCxC9S+Afrx4CkXZ+OHCl0BpZoRRkZs+am6jLOURBmcdBffGknVN1ILxtHSaOVxoAdwaKHA9LeW9IqPbw2tOe2ZZB8cT0QBgg6nw3dxCr2Zsj3+bAYVhJLevebYE2d9yjfYGij7WfmlR34MCY6iAV7MwHcZC+sm X-OriginatorOrg: calian.com X-MS-Exchange-CrossTenant-Network-Message-Id: 05e33962-43f8-4c5c-ad40-08d8efc416fc X-MS-Exchange-CrossTenant-AuthSource: YT1PR01MB3546.CANPRD01.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Mar 2021 19:27:55.4889 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 23b57807-562f-49ad-92c4-3bb0f07a1fdf X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: vrVkJVG6HgwSYfpbVoSvXN7Cvh0aWi3TvMhnLPhpoXPymub6bSzUNPDkQoj4seFiEit1ifyvwwVZuurY7zUnVgMIXac/38mouN8g4GAawDU= X-MS-Exchange-Transport-CrossTenantHeadersStamped: YT1PR01MB2793 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.369, 18.0.761 definitions=2021-03-25_07:2021-03-25,2021-03-25 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 clxscore=1015 adultscore=0 mlxlogscore=891 impostorscore=0 malwarescore=0 spamscore=0 suspectscore=0 bulkscore=0 priorityscore=1501 phishscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2009150000 definitions=main-2103250142 Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org Update the default register settings to include the VCO_RESET_CALCODE settings (set by the SiLabs ClockBuilder software but not described in the datasheet). Also update part of the initialization sequence to match ClockBuilder and the datasheet. Fixes: 3044a860fd ("clk: Add Si5341/Si5340 driver") Signed-off-by: Robert Hancock --- drivers/clk/clk-si5341.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/clk/clk-si5341.c b/drivers/clk/clk-si5341.c index da40b90c2aa8..eb22f4fdbc6b 100644 --- a/drivers/clk/clk-si5341.c +++ b/drivers/clk/clk-si5341.c @@ -350,6 +350,8 @@ static const struct si5341_reg_default si5341_reg_defaults[] = { { 0x094A, 0x00 }, /* INx_TO_PFD_EN (disabled) */ { 0x0A02, 0x00 }, /* Not in datasheet */ { 0x0B44, 0x0F }, /* PDIV_ENB (datasheet does not mention what it is) */ + { 0x0B57, 0x10 }, /* VCO_RESET_CALCODE (not described in datasheet) */ + { 0x0B58, 0x05 }, /* VCO_RESET_CALCODE (not described in datasheet) */ }; /* Read and interpret a 44-bit followed by a 32-bit value in the regmap */ @@ -1104,7 +1106,7 @@ static const struct si5341_reg_default si5341_preamble[] = { { 0x0B25, 0x00 }, { 0x0502, 0x01 }, { 0x0505, 0x03 }, - { 0x0957, 0x1F }, + { 0x0957, 0x17 }, { 0x0B4E, 0x1A }, }; From patchwork Thu Mar 25 19:26:43 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Robert Hancock X-Patchwork-Id: 408972 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=-15.9 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER, INCLUDES_PATCH, MAILING_LIST_MULTI, MSGID_FROM_MTA_HEADER, SPF_HELO_NONE, SPF_PASS,UNWANTED_LANGUAGE_BODY,USER_AGENT_GIT 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 CF525C433F8 for ; Thu, 25 Mar 2021 19:28:53 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id BDE84619C2 for ; Thu, 25 Mar 2021 19:28:53 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230272AbhCYT2Y (ORCPT ); Thu, 25 Mar 2021 15:28:24 -0400 Received: from mx0d-0054df01.pphosted.com ([67.231.150.19]:43873 "EHLO mx0d-0054df01.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230187AbhCYT2I (ORCPT ); Thu, 25 Mar 2021 15:28:08 -0400 Received: from pps.filterd (m0209000.ppops.net [127.0.0.1]) by mx0c-0054df01.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id 12PJQTYa008186; Thu, 25 Mar 2021 15:28:02 -0400 Received: from can01-qb1-obe.outbound.protection.outlook.com (mail-qb1can01lp2057.outbound.protection.outlook.com [104.47.60.57]) by mx0c-0054df01.pphosted.com with ESMTP id 37ddy6a5mu-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 25 Mar 2021 15:28:02 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=h09jTiV+rD4TnjoQTOcN0ILuzuEIeda5THGDqZQc1qr41hzh0mc+sRrmnP5UW5ri3mRDgeUQ86a2ChhRZrVNFcm6rAqp21EhnAAVohNYqbd6Y/tslHIgWAahcTkEbDHO7rLjx6VGcjHUK3GIo6hTx3ORIwBfsASUBQyCcR3chaQKDqvLFjlc/316eBMm07XOt2XX+NXmRLZ+X/3FOFnpMpacIJj4ATWq/Fhu/QpgEwwQUzzglHdp9tuQJwsRswq1ZgXaV+nxt4Ajq1uQf5+PAzTJukO1MIX6zmOq8shQrD4GY5sB5sfkYzCSRsvDpwNhoYLt3AajhfIdNvL7ciKSgw== 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=t+wZiGSh5qg/COXvGPS4DWFgp5zPALcLj2WELUomvko=; b=mED/N7QrKyz0XgJaPdid1BpKWnTWOxGN2uJZs9ZUvVBJKOasGitoihxG/K2DVfDct6+Ba2RZW5L2rUmG+zZh/bejTq3e7FLgmuXDGmG8dD48OiGGeFwkgDtmaTziw1HPJo7rR1zijP2XC8MFAYbpsPMxBTe0jMYne8WwU4n4ROg4zJSSuTNUxkrwRjo6W8VLmf8nQ0iuVfHr2X/KtUzoJI9X7hTUDIa9KlxbdmiaeP//gr0oqPiDodtsJrTOGt7EHbU2eKp8yjauab6NPByiT7TClbgx9p06wutianRqwwb3ujXI/6WgziFkGOPfrrQcqacoaeFTCkW7b5KIibLecQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=calian.com; dmarc=pass action=none header.from=calian.com; dkim=pass header.d=calian.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=calian.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=t+wZiGSh5qg/COXvGPS4DWFgp5zPALcLj2WELUomvko=; b=uwkA5yu0WJlpcbHTQwjgoKTjo/xD1WaLlUgX6cpVcmkCHlTvHgeeiqxn0y3w7hL1EGSSNThm3MmcDzuWeVNAzxt9EhCY+BLDuai7ziO1Wt0jNLgfINUsvFNFoQ5ka1BhMQuxPid+x0jipot7kpfN+4TE2T/Q+dbTe/j1TDdBuAg= Authentication-Results: baylibre.com; dkim=none (message not signed) header.d=none; baylibre.com; dmarc=none action=none header.from=calian.com; Received: from YT1PR01MB3546.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:f::20) by YT1PR01MB2793.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:f::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3955.24; Thu, 25 Mar 2021 19:28:01 +0000 Received: from YT1PR01MB3546.CANPRD01.PROD.OUTLOOK.COM ([fe80::90d4:4d5b:b4c2:fdeb]) by YT1PR01MB3546.CANPRD01.PROD.OUTLOOK.COM ([fe80::90d4:4d5b:b4c2:fdeb%7]) with mapi id 15.20.3955.027; Thu, 25 Mar 2021 19:28:01 +0000 From: Robert Hancock To: mturquette@baylibre.com, sboyd@kernel.org Cc: mike.looijmans@topic.nl, robh+dt@kernel.org, linux-clk@vger.kernel.org, devicetree@vger.kernel.org, Robert Hancock Subject: [PATCH v3 9/9] clk: si5341: Add sysfs properties to allow checking/resetting device faults Date: Thu, 25 Mar 2021 13:26:43 -0600 Message-Id: <20210325192643.2190069-10-robert.hancock@calian.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20210325192643.2190069-1-robert.hancock@calian.com> References: <20210325192643.2190069-1-robert.hancock@calian.com> X-Originating-IP: [204.83.154.189] X-ClientProxiedBy: MWHPR17CA0049.namprd17.prod.outlook.com (2603:10b6:300:93::11) To YT1PR01MB3546.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:f::20) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from localhost.localdomain (204.83.154.189) by MWHPR17CA0049.namprd17.prod.outlook.com (2603:10b6:300:93::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3977.29 via Frontend Transport; Thu, 25 Mar 2021 19:27:59 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: eb4c511e-0ad7-4baa-19bb-08d8efc41a60 X-MS-TrafficTypeDiagnostic: YT1PR01MB2793: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:3968; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: VfWQFIQgufPIOecXV3Dd7iaqFJQUH4gntEBV96mzWqb/0MiYrprk9FXtFZNy7m5gl1T07JMNbMfzhSh+3e/pzNu0cQoRQeOMhCuExAxirpVaxuENSxyyH40rayJfOamzg5/vu/asyAOtvAMfBbDlboy20RMiVYi9Ug8u8d93G0rx4D/aInVqHEJG/yeMNJvKdwA/MbSIqYcJe/rL39SlIezZXTf9cvSJT2uH2BmKkRHHYXsYvd04U/+uvGTyFmq5xQpX8luHv/JD8ed5aEEiSkdYt2QlngFhuwskEJwEa3Nq5n8D0iQJFyVEBv4o9vsIZb16aZKQVXRyKlE5c7tkUI62LZkxFAOR01SiIJsbGl8os+/zb07N13vUC/jbPZcGveT7dKfejrcMiW8efBlClTJjkYSd/HOOVYTRfLzhda3UWui7gEQWuCAynGJLttz6co0Z0z6twNd/xNzgTfED/tcU/FgsL2wk6l4e00+VU+e4Bp67x/rEGwa3nZ7PQGod/mO5a71FimRo04NxGs/seAacG8d39fS8b96kCJ4YsX0+9SZVoqEvucfgjbxivgsC2tdV0vEBkiEBXVLStsmTATI11XCchj7QB07g4iTLFQ1+7JLOzi22UcY8EF03WVr4ay6/W5Uu4yN/qTJ0VucWDrqz9pqpkXaAHnQVp4u60DoXzuGv7B3gBwpt0Nax6sUa X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:YT1PR01MB3546.CANPRD01.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(4636009)(346002)(376002)(136003)(396003)(366004)(39850400004)(16526019)(1076003)(44832011)(2906002)(66946007)(6512007)(26005)(8676002)(66476007)(52116002)(316002)(6506007)(69590400012)(66556008)(186003)(2616005)(956004)(107886003)(86362001)(38100700001)(4326008)(478600001)(6666004)(5660300002)(6486002)(36756003)(8936002)(83380400001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: LrBnFEZGPdpxEHtKiOhY5c9aVEv9H93DA3cwao3B6spjwNxwqt67n7tMTWPAT/hfPZ4kw77xmtFlW5SEjXU0j31D7VZDgD/pszoQ8t11WBPNn0ElX6+1JtqtZdW0Nq2cu8rIxlEe/qz7lhR7J2TVDXVeD7uyiEX1qd6BuMyHEqsfKiuiG8SnIUNwNkFrdL89efQ6L66F0l2YvFO5ed6z3SiJY1KCbe+laLL0WThJ0updcf+CtIu/a0TipktYQs+qwWvWaver80jaJhQWqj7eG7dCnElQYxIysqa5kqYn2PX1M+rFfmKN1TMIwMSUW2AVojHoBaAiEF6brBiuv0mRu3UvDy7cUB9J1CNjzSMccihHJnXycdzDw9XK+18xpTd+YkIFILjTa5QYZWxC2FMfiAYRS3W8XHfbOTPG2Q82ayojqGqFJEn5unWkmPZwkWOrxH08WOwrNOYWJpPp/x6/bAFs71ZBBS8z9so8n15vMwLZlvkUtRe+JZrzMzoPrK4f+TA1NBVbbveU0dJ7TlkBO0u2U+rgaPgqW8qd0w8+pVeqIN1v47GcGfiD9pDOoQWNefH43Ghxj5mwYDF9cc2hMlH8nGBw3WwiPO4y+4meMnPXU/tR8upCUJviXdXtpa8urd3LlsCgza6AFGfTcMtuiZborccCTi7ZGIo4yG1YvHojKL5oNbmtstHwRtbtKsj34BKxqTi20usVQqRPoN7l8HazkGKyoPlQ0zE4T+c/emjL3lD4HkaC04pIp9wsy3JGFWgj+yv/ZkdU1nxETlEih0bSA2KI7zsi9AFoMvvGIKWtqcY8lOfPCBD0vEYgjUEJsDx9bcPbGeCNgPy2UvN1+NhtqYjsfys1GluII4koxhhdFIfWLE1WOQ5tvWl3Nq2aA+jqBLUJkJPMl1nUc6mhcvOIZ7iZTLU81O7D6FMWw7+AlQl9fd2WAHxppYWsc9htFPOm0xetZUF+KmBWj8mY0uymR9BXQ6mQosZ5hbkl0bcZacuncY4+cuniXR1XeFbsw+ii3Yi/odal2cNWF58C+iiR2EyJoTPiFkiL074bZjZEtNQqvRoRl+JvCQJekYeUqP7zBh1lN4V908AsKmE5GIbciJoChGhFIqRmqAMEfRwonoiAj91xkjlJbbiDU0WGD49JQHLZ+coYZOITWgoI4UGprJ6QlGJK7I4nrIgrwnSzsj267hFyuokC9MGN58RaQb7HID9Ez+Kn6PgJGZaopQ/u5qnX6ga42gslmHezAZHf2EovpQpCUCNhU87SDRdhMgVtzs6iliiVdXSY0tyjqk3LZFhHrPYYaiisppyFxpGIBZiNDwMAz3FHSdLi89yR X-OriginatorOrg: calian.com X-MS-Exchange-CrossTenant-Network-Message-Id: eb4c511e-0ad7-4baa-19bb-08d8efc41a60 X-MS-Exchange-CrossTenant-AuthSource: YT1PR01MB3546.CANPRD01.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Mar 2021 19:28:01.0208 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 23b57807-562f-49ad-92c4-3bb0f07a1fdf X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: +oxs5IudqymnTizuUt36JgaZTyDS7zNIwqBs/8a/qwokwwCZI2Ph6DYpnF7zwIlUbckyADP9vhfcq0jww9Y8RsJBxP9OQN69PMkgwq3Tg+A= X-MS-Exchange-Transport-CrossTenantHeadersStamped: YT1PR01MB2793 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.369, 18.0.761 definitions=2021-03-25_07:2021-03-25,2021-03-25 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 clxscore=1015 adultscore=0 mlxlogscore=999 impostorscore=0 malwarescore=0 spamscore=0 suspectscore=0 bulkscore=0 priorityscore=1501 phishscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2009150000 definitions=main-2103250142 Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org Add sysfs property files to allow viewing the current and latched states of the input present and PLL lock bits, and allow resetting the latched fault state. This allows manual checks or automated userspace polling for faults occurring after initialization. Signed-off-by: Robert Hancock --- drivers/clk/clk-si5341.c | 96 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) diff --git a/drivers/clk/clk-si5341.c b/drivers/clk/clk-si5341.c index d4aa67a4dc66..57ae183982d8 100644 --- a/drivers/clk/clk-si5341.c +++ b/drivers/clk/clk-si5341.c @@ -1457,6 +1457,94 @@ static int si5341_clk_select_active_input(struct clk_si5341 *data) return res; } +static ssize_t input_present_show(struct device *dev, + struct device_attribute *attr, + char *buf) +{ + struct clk_si5341 *data = dev_get_drvdata(dev); + u32 status; + int res = regmap_read(data->regmap, SI5341_STATUS, &status); + + if (res < 0) + return res; + res = !(status & SI5341_STATUS_LOSREF); + return snprintf(buf, PAGE_SIZE, "%d\n", res); +} +static DEVICE_ATTR_RO(input_present); + +static ssize_t input_present_sticky_show(struct device *dev, + struct device_attribute *attr, + char *buf) +{ + struct clk_si5341 *data = dev_get_drvdata(dev); + u32 status; + int res = regmap_read(data->regmap, SI5341_STATUS_STICKY, &status); + + if (res < 0) + return res; + res = !(status & SI5341_STATUS_LOSREF); + return snprintf(buf, PAGE_SIZE, "%d\n", res); +} +static DEVICE_ATTR_RO(input_present_sticky); + +static ssize_t pll_locked_show(struct device *dev, + struct device_attribute *attr, + char *buf) +{ + struct clk_si5341 *data = dev_get_drvdata(dev); + u32 status; + int res = regmap_read(data->regmap, SI5341_STATUS, &status); + + if (res < 0) + return res; + res = !(status & SI5341_STATUS_LOL); + return snprintf(buf, PAGE_SIZE, "%d\n", res); +} +static DEVICE_ATTR_RO(pll_locked); + +static ssize_t pll_locked_sticky_show(struct device *dev, + struct device_attribute *attr, + char *buf) +{ + struct clk_si5341 *data = dev_get_drvdata(dev); + u32 status; + int res = regmap_read(data->regmap, SI5341_STATUS_STICKY, &status); + + if (res < 0) + return res; + res = !(status & SI5341_STATUS_LOL); + return snprintf(buf, PAGE_SIZE, "%d\n", res); +} +static DEVICE_ATTR_RO(pll_locked_sticky); + +static ssize_t clear_sticky_store(struct device *dev, + struct device_attribute *attr, + const char *buf, size_t count) +{ + struct clk_si5341 *data = dev_get_drvdata(dev); + long val; + + if (kstrtol(buf, 10, &val)) + return -EINVAL; + if (val) { + int res = regmap_write(data->regmap, SI5341_STATUS_STICKY, 0); + + if (res < 0) + return res; + } + return count; +} +static DEVICE_ATTR_WO(clear_sticky); + +static const struct attribute *si5341_attributes[] = { + &dev_attr_input_present.attr, + &dev_attr_input_present_sticky.attr, + &dev_attr_pll_locked.attr, + &dev_attr_pll_locked_sticky.attr, + &dev_attr_clear_sticky.attr, + NULL +}; + static int si5341_probe(struct i2c_client *client, const struct i2c_device_id *id) { @@ -1687,6 +1775,12 @@ static int si5341_probe(struct i2c_client *client, goto cleanup; } + err = sysfs_create_files(&client->dev.kobj, si5341_attributes); + if (err) { + dev_err(&client->dev, "unable to create sysfs files\n"); + goto cleanup; + } + /* Free the names, clk framework makes copies */ for (i = 0; i < data->num_synth; ++i) devm_kfree(&client->dev, (void *)synth_clock_names[i]); @@ -1706,6 +1800,8 @@ static int si5341_remove(struct i2c_client *client) struct clk_si5341 *data = i2c_get_clientdata(client); int i; + sysfs_remove_files(&client->dev.kobj, si5341_attributes); + for (i = 0; i < SI5341_MAX_NUM_OUTPUTS; ++i) { if (data->clk[i].vddo_reg) regulator_disable(data->clk[i].vddo_reg);