From patchwork Mon Mar 18 17:32:09 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Min Li X-Patchwork-Id: 13595669 X-Patchwork-Delegate: kuba@kernel.org Received: from NAM02-DM3-obe.outbound.protection.outlook.com (mail-dm3nam02olkn2042.outbound.protection.outlook.com [40.92.43.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7402E5577F; Mon, 18 Mar 2024 17:32:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.92.43.42 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710783162; cv=fail; b=KPML15ZQ+TxTTL7Ju80Uy34K4cLHFyiw+l6roF+eTsjr/rD2k8BRLQiDGnb/iyDp4DMOyNXOd/0Kr4Xd7v+mbpxW8bvhQbcLbsOvcLTdFFpk2+7eZdXMHWihzOdsMnumiadYIlkTQxSQTePOwFazefPgS0N62KbNmZ3j/LfBHZI= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710783162; c=relaxed/simple; bh=tiTAIIkW0U5Mg4mabW4iin/nZnPPbOPkC1TNzRQFZVg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=ZIDJAMbfdk4P8Dk1tdMpKzNmWEYODu7bzlJeU9h3+Shk4sbWtLmBoUupbKvneEvqV4jeTRzLKIWLvOsa/XUvDtH+HdW+sGxFFORu498/N5GylV9PswklxnZtF+d9GPxbWUNMhrp8hDpWGcVNCExRej7SwwedCK/UcESBZ85Cff8= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=hotmail.com; spf=pass smtp.mailfrom=hotmail.com; dkim=pass (2048-bit key) header.d=hotmail.com header.i=@hotmail.com header.b=AvBkqa2s; arc=fail smtp.client-ip=40.92.43.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=hotmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=hotmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=hotmail.com header.i=@hotmail.com header.b="AvBkqa2s" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=mMvGl5ZYx7hZsRCApJ9DzYF4kmctuSZKTjFOvEcCJuA8ugBMizLMwte8MMj6cBo9ShmWvg/cI3tFVFcEsDIoPcRRUfxhVikxiaPGNz0swnrwzR9ZfN6hBRmA3eH5h/qiBklJ80VAEDqJz2NOeINIW/+zj0Hs68xW/Ty/x1ZRE1/xiVv78wcd6ho0hHjAUxlhs2gM0J1MoVjTBwBdWI0pX2UubRlNPKDudRvogOKbJluA+4t5aaWDLWx21MJUVEpHvmoH1bh9XWJBXcjd5Q4U+5qI3ID9E6dKFmkcZ9RWrCd3LsJVg1G+pLl66zTdPiM/MKtycLc4Cy/Dc53MDUsLuQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=lR2b/yR5or645V48yaRw6IXlqIpPCR12WOAV668G7r8=; b=E/xj13MWRUwGcCFmrVoOI87blh+FQtTW0EPeffjNb/dAXgEXynxSkJADNVV5xBnYF3a/Vxg+bYNyYhHoVs9roiUXnlzmmRMf6NKRCNQhprEkyGpt0g5+hHr2MErgqh8aV81kV1LN30kWUuQjdx8wzcH9g5SxRQmZAA6NpsTc6fUZjwhVOYFqhM1OI0YpKtg9hvrwfKJd+fQTTVYp7DpZ8qeQoHRIFiSxWqK2aiOHHY4C0uvGw33wqjEnxqoZijGE+m1rWZ7hNzD0OznR0qFGj0MQKHyqaFQr9ztF2rGyY5ga+rA0fS2bRdf8MD7eJZgL6Bbxvsu0a214MOU92fTHGg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hotmail.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=lR2b/yR5or645V48yaRw6IXlqIpPCR12WOAV668G7r8=; b=AvBkqa2sYkrkHTGBPXJHst+GErgVoh9g7Lye+O00YYySMWyY4VmMIJe6c+Qb2V0O8uuu+L+QD3qBuZYx/39LX8foslSWt8d01EN/QqPR9518EkYn2kL3hyr2KSjRxbtfH/BEVPGgyXaggbyvD5HIwzziLzkoRuqL8Kcm0ypeyv5XPgDSaZnwMb9k3o/Z1T3PU/Hd8nIXcVeI+VvZHqg4ousCMP1e1BH8RwjaCocNkFd8ieLf64fkohKhauCqbBUtVMFuRS9whHrnLMni6ZBwRU7+fjBylXWE2enQ6TeE1ULwIqeFO8NRt/yRRLz6ctemD9ssUTevA75II/svVO+vbw== Received: from LV3P220MB1202.NAMP220.PROD.OUTLOOK.COM (2603:10b6:408:1ac::6) by SJ0P220MB0785.NAMP220.PROD.OUTLOOK.COM (2603:10b6:a03:408::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7386.26; Mon, 18 Mar 2024 17:32:37 +0000 Received: from LV3P220MB1202.NAMP220.PROD.OUTLOOK.COM ([fe80::57aa:102b:db4b:e05]) by LV3P220MB1202.NAMP220.PROD.OUTLOOK.COM ([fe80::57aa:102b:db4b:e05%7]) with mapi id 15.20.7386.025; Mon, 18 Mar 2024 17:32:37 +0000 From: Min Li To: richardcochran@gmail.com, lee@kernel.org Cc: linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Min Li Subject: [PATCH net-next v7 1/5] ptp: clockmatrix: support 32-bit address space Date: Mon, 18 Mar 2024 13:32:09 -0400 Message-ID: X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240318173213.28475-1-lnimi@hotmail.com> References: <20240318173213.28475-1-lnimi@hotmail.com> X-TMN: [+hyIDhbLFSp+hq8apBYg8LXecNrlDJid] X-ClientProxiedBy: YQBPR0101CA0070.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:c00:1::47) To LV3P220MB1202.NAMP220.PROD.OUTLOOK.COM (2603:10b6:408:1ac::6) X-Microsoft-Original-Message-ID: <20240318173213.28475-2-lnimi@hotmail.com> Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: LV3P220MB1202:EE_|SJ0P220MB0785:EE_ X-MS-Office365-Filtering-Correlation-Id: c22544a0-1900-4939-e95e-08dc47716707 X-MS-Exchange-SLBlob-MailProps: 9IecXKUgicCxS1BNcGGe52rHSLVWHYUtPDworopJaeZy1pmCGmz2Zt2/DzrsZ3j+a/J1l36AFYKXAAtBmTakfYVyB4joUKL4N3yi9vAkvZMnGbJnq6lviBHQ/oc+gkoPWZnLZzY1AyWi4ZbnrsM1rhiQaJwZjLRiiR8mOs9UVTsn4JDVxjHkufi7ce3haKXJ0xyZLnhiqIHVIxq2feklULUgmvys3rqcm2/NrcwS9XHrdDmm8lcGtWsjnljsygXTIKuZkwR9E1k0Q4GbO9i2iLu3A+oFHy8qEmRIlc9dCiO2MpUbT3PTX8E2acARaSH/so4maihedHjS6dqj87WvVgAUwtiskan5HogKXH2toieuofbZbuRajdGp1JZMTpf5wFUL8qzONlV37HOahmhtV9zy2q8JxP076eVRszWcBa7W+S9+iG5s25MuTgPDs84/6KX6QH6fuAiV2PKw+iGcp/u3tcIfueBWp9C+Fg2e1wwayfSP6fI8HGEbc44UusCaSRSeM4iZeeCKVBM/pCaqscrlBWukcGH/ksyJ/lddLDCNWKsCI+anXisSkfAW2NuLKEcopnTKwBJb1hspE07ksyPF2A+HMuSl/EIXQUfNCAGf6w26qqy5sgaXGa01rNusPEOLprSHKbtTzM0sbr0h1J9CL9Nt3kcsi5CSQOtN5niXEqT6Qlb388nFQyQhW1/jaH+3qCZ07OqwTW+Bvd6PYRVsoqn26CmPJiOlPQGaV7xW4hqUUg8rog== X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: V8p2jx/2Unhe14KEun+/lSmHoO5BCXioasImKt70RmuR2h1tzwBazWi+kwbGIWWV72vipyKgK+w+cAkryZid+a0EPt7E5q9CcZQzwl62FsIYwWX3LPgWXy96Uwi1bLRh3tWoVKBXtFemfC9/noVEMalCJq8tbxgUrDZCi/gQ4qDxDvY1OUvBOKXGSbjyXPGp4wPhsAXkoOl9fwCxNelS4qh+fAC5XiwnQRq8GQkBcYrUAVU/ts7lMWTIxDdU+s/RRzFxTbZ8400YKnWuCVt8BRWuy1+KwlsPfucECC1Z6mDvJNN1rJCkIG0EvL+9FBvS90DnyRjXzXCJ/gpxBtkneeEjrAASLC064NE0rGaKq004PGxztTYjLTpZjT2FBM0Q44MO4rBbmDDhooX0ieXv35aHc/7l/x3Ol8MgOWNfsTw7UQgONeaEK6Ax7IjiSuaLiwC6KLADy+a5Qh4EQP2K8ZP4P1Dab1zEE7zciOvAk/Y6QD3dmISUEUJ+zfMXqdED7bsWgA+AAxYmN8GkC911+8QBDpOCywnKJ4CcNFYFVDHuPy3cZ+dx6WfKGv+kOBg/ X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: dr7vCE2fPdo1O6SwhxzQhyA6hfjobGNtpdh3E9Gi0MuV03Iz/MZoP9GVExV+QH0fxKMqJVnjyKZtDlm9oThNiHCiegR2+k2YvFMe3yU4RRe0Z8SiEtj/4AoM+aYA2Fuxe39RJ86LHQZLyoQkZ9hNC1Y2qvuVI48gTRLWYepOxOCSB4Nw8Okv4HHCH8g4j6DdtJUYwUpTMUoKi/kcyZDUDuvaRiHg1g+W9jIL05MDjo/7iRpfkQHXKCAK/ZFd49XiA6+rCXkVWkUf9C8iON7E4XOMwQKgSvdhPoRLFEPD46g+ZmwUJb6s6vt7dJu8FPCSJdbxftOmDIr6nOLD99DbNciShvtESPAuM+LAGQPREtvqwZ3mpIDx+5z9y3DcpqNmpXOpJhDhNEpoCUl3sLQGs0szFmp8H89raPLs0OkDiki6htcxnBrZGo9tzlD2kHL6CCmLoRk8fw37OUcoBKpWlGAfckgEfFU8Cmn7CFqyyvKUUpeUozvGF9zYMqzvP1WPpwdCguSY3A5WVs38ZNaKBi+XkF6HJhsRqNOFbfnWz7YnuFqB1v+/XV+4+nPSRU6XO0gM1aSohOMNR0b9sxOaNtPgJYPeZWuGZQ5jQWv3EVZF4LhnMDt9S4ftDeYqQOXFC95INBzJLLJ1mXB+SPU5W9Cebg5ph67MgZRJC5lX3ItMMi5zRUHj572PpguHpVpC96+Ewdh3GQlyCDfNXVmp07r0MhrfB+TrOHa0AfGaUu9jfETKuefFT8MNGJtXRlmdJRMcr2VsPUM1PlsP5La/PV+tWS+BOAwcKLHNisTQxHsKEZa58PpPHdfGBuB9APEUNMKKW0QdFBit82UZb6gkgS3CN+EyWb0exoJ1vz3wfcHmUuMf/p4vn5sbIMWer9ESIby89ZzINV+IxTpRaa7xTYn4x2NPgXRXSgbMgufqPH15pmLUksjKbmvvAizAVpt8ia0etmcQUvktqm+lzXLxoAbfiMkFkJ+jL4q1HdZl5SInJQQjJEuLF8bEX6kNr7yBJYjrM/17hHt2fR8LYNKkH9FX7uA0L2C0MOP7xD6hG9ln0tB7OlmPBfNa3LpiOUoKMTlsESiPZ8kefNt/USe2lQgKdk1WhEpKloDgNSYbL+y133AVw85cFg0VEilErO4looNjcxln9uZhboY/yGWRJh4zqBspoQ0MnSNh2Rq0a9Pb/ju/VUeEqXyBaTXCSsEcIB6r4kPQM9+RXpEO0KT4FiifKL831B5L4B3/JF1MF+A= X-OriginatorOrg: sct-15-20-4755-11-msonline-outlook-3458f.templateTenant X-MS-Exchange-CrossTenant-Network-Message-Id: c22544a0-1900-4939-e95e-08dc47716707 X-MS-Exchange-CrossTenant-AuthSource: LV3P220MB1202.NAMP220.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Mar 2024 17:32:37.6383 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0P220MB0785 X-Patchwork-Delegate: kuba@kernel.org From: Min Li We used to assume 0x2010xxxx address. Now that we need to access 0x2011xxxx address, we need to support read/write the whole 32-bit address space. Signed-off-by: Min Li --- - Drop MAX_ABS_WRITE_PHASE_PICOSECONDS advised by Rahul - Apply SCSR_ADDR to scrach register in idtcm_load_firmware advised by Simon - Apply u32 to base in idtcm_output_enable advised by Simon - Correct sync_ctrl0/1 parameter position for idtcm_write advised by Simon - Restore adjphase function suggested by Rahul - Separate unrelated stuff to patches suggested by Paolo - Squash commits and add missing commit msg suggested by Jakub - Provide cover-letter suggested by Jakub drivers/ptp/ptp_clockmatrix.c | 59 ++-- drivers/ptp/ptp_clockmatrix.h | 32 +- include/linux/mfd/idt8a340_reg.h | 542 ++++++++++++++++--------------- 3 files changed, 317 insertions(+), 316 deletions(-) diff --git a/drivers/ptp/ptp_clockmatrix.c b/drivers/ptp/ptp_clockmatrix.c index f6f9d4adce04..f8556627befa 100644 --- a/drivers/ptp/ptp_clockmatrix.c +++ b/drivers/ptp/ptp_clockmatrix.c @@ -41,8 +41,8 @@ module_param(firmware, charp, 0); static int _idtcm_adjfine(struct idtcm_channel *channel, long scaled_ppm); static inline int idtcm_read(struct idtcm *idtcm, - u16 module, - u16 regaddr, + u32 module, + u32 regaddr, u8 *buf, u16 count) { @@ -50,8 +50,8 @@ static inline int idtcm_read(struct idtcm *idtcm, } static inline int idtcm_write(struct idtcm *idtcm, - u16 module, - u16 regaddr, + u32 module, + u32 regaddr, u8 *buf, u16 count) { @@ -62,7 +62,8 @@ static int contains_full_configuration(struct idtcm *idtcm, const struct firmware *fw) { struct idtcm_fwrc *rec = (struct idtcm_fwrc *)fw->data; - u16 scratch = IDTCM_FW_REG(idtcm->fw_ver, V520, SCRATCH); + u16 scratch = SCSR_ADDR(IDTCM_FW_REG(idtcm->fw_ver, V520, SCRATCH)); + u16 gpio_control = SCSR_ADDR(GPIO_USER_CONTROL); s32 full_count; s32 count = 0; u16 regaddr; @@ -70,8 +71,8 @@ static int contains_full_configuration(struct idtcm *idtcm, s32 len; /* 4 bytes skipped every 0x80 */ - full_count = (scratch - GPIO_USER_CONTROL) - - ((scratch >> 7) - (GPIO_USER_CONTROL >> 7)) * 4; + full_count = (scratch - gpio_control) - + ((scratch >> 7) - (gpio_control >> 7)) * 4; /* If the firmware contains 'full configuration' SM_RESET can be used * to ensure proper configuration. @@ -88,7 +89,7 @@ static int contains_full_configuration(struct idtcm *idtcm, rec++; /* Top (status registers) and bottom are read-only */ - if (regaddr < GPIO_USER_CONTROL || regaddr >= scratch) + if (regaddr < gpio_control || regaddr >= scratch) continue; /* Page size 128, last 4 bytes of page skipped */ @@ -506,8 +507,8 @@ static int _sync_pll_output(struct idtcm *idtcm, { int err; u8 val; - u16 sync_ctrl0; - u16 sync_ctrl1; + u32 sync_ctrl0; + u32 sync_ctrl1; u8 temp; if (qn == 0 && qn_plus_1 == 0) @@ -553,11 +554,11 @@ static int _sync_pll_output(struct idtcm *idtcm, val = SYNCTRL1_MASTER_SYNC_RST; /* Place master sync in reset */ - err = idtcm_write(idtcm, 0, sync_ctrl1, &val, sizeof(val)); + err = idtcm_write(idtcm, sync_ctrl1, 0, &val, sizeof(val)); if (err) return err; - err = idtcm_write(idtcm, 0, sync_ctrl0, &sync_src, sizeof(sync_src)); + err = idtcm_write(idtcm, sync_ctrl0, 0, &sync_src, sizeof(sync_src)); if (err) return err; @@ -570,27 +571,27 @@ static int _sync_pll_output(struct idtcm *idtcm, if (qn_plus_1) val |= SYNCTRL1_Q1_DIV_SYNC_TRIG; - err = idtcm_write(idtcm, 0, sync_ctrl1, &val, sizeof(val)); + err = idtcm_write(idtcm, sync_ctrl1, 0, &val, sizeof(val)); if (err) return err; /* PLL5 can have OUT8 as second additional output. */ if (pll == 5 && qn_plus_1 != 0) { - err = idtcm_read(idtcm, 0, HW_Q8_CTRL_SPARE, + err = idtcm_read(idtcm, HW_Q8_CTRL_SPARE, 0, &temp, sizeof(temp)); if (err) return err; temp &= ~(Q9_TO_Q8_SYNC_TRIG); - err = idtcm_write(idtcm, 0, HW_Q8_CTRL_SPARE, + err = idtcm_write(idtcm, HW_Q8_CTRL_SPARE, 0, &temp, sizeof(temp)); if (err) return err; temp |= Q9_TO_Q8_SYNC_TRIG; - err = idtcm_write(idtcm, 0, HW_Q8_CTRL_SPARE, + err = idtcm_write(idtcm, HW_Q8_CTRL_SPARE, 0, &temp, sizeof(temp)); if (err) return err; @@ -598,21 +599,21 @@ static int _sync_pll_output(struct idtcm *idtcm, /* PLL6 can have OUT11 as second additional output. */ if (pll == 6 && qn_plus_1 != 0) { - err = idtcm_read(idtcm, 0, HW_Q11_CTRL_SPARE, + err = idtcm_read(idtcm, HW_Q11_CTRL_SPARE, 0, &temp, sizeof(temp)); if (err) return err; temp &= ~(Q10_TO_Q11_SYNC_TRIG); - err = idtcm_write(idtcm, 0, HW_Q11_CTRL_SPARE, + err = idtcm_write(idtcm, HW_Q11_CTRL_SPARE, 0, &temp, sizeof(temp)); if (err) return err; temp |= Q10_TO_Q11_SYNC_TRIG; - err = idtcm_write(idtcm, 0, HW_Q11_CTRL_SPARE, + err = idtcm_write(idtcm, HW_Q11_CTRL_SPARE, 0, &temp, sizeof(temp)); if (err) return err; @@ -620,7 +621,7 @@ static int _sync_pll_output(struct idtcm *idtcm, /* Place master sync out of reset */ val &= ~(SYNCTRL1_MASTER_SYNC_RST); - err = idtcm_write(idtcm, 0, sync_ctrl1, &val, sizeof(val)); + err = idtcm_write(idtcm, sync_ctrl1, 0, &val, sizeof(val)); return err; } @@ -637,7 +638,7 @@ static int idtcm_sync_pps_output(struct idtcm_channel *channel) u8 temp; u16 output_mask = channel->output_mask; - err = idtcm_read(idtcm, 0, HW_Q8_CTRL_SPARE, + err = idtcm_read(idtcm, HW_Q8_CTRL_SPARE, 0, &temp, sizeof(temp)); if (err) return err; @@ -646,7 +647,7 @@ static int idtcm_sync_pps_output(struct idtcm_channel *channel) Q9_TO_Q8_FANOUT_AND_CLOCK_SYNC_ENABLE_MASK) out8_mux = 1; - err = idtcm_read(idtcm, 0, HW_Q11_CTRL_SPARE, + err = idtcm_read(idtcm, HW_Q11_CTRL_SPARE, 0, &temp, sizeof(temp)); if (err) return err; @@ -1253,7 +1254,7 @@ static void display_pll_and_masks(struct idtcm *idtcm) static int idtcm_load_firmware(struct idtcm *idtcm, struct device *dev) { - u16 scratch = IDTCM_FW_REG(idtcm->fw_ver, V520, SCRATCH); + u16 scratch = SCSR_ADDR(IDTCM_FW_REG(idtcm->fw_ver, V520, SCRATCH)); char fname[128] = FW_FILENAME; const struct firmware *fw; struct idtcm_fwrc *rec; @@ -1303,14 +1304,14 @@ static int idtcm_load_firmware(struct idtcm *idtcm, err = 0; /* Top (status registers) and bottom are read-only */ - if (regaddr < GPIO_USER_CONTROL || regaddr >= scratch) + if (regaddr < SCSR_ADDR(GPIO_USER_CONTROL) || regaddr >= scratch) continue; /* Page size 128, last 4 bytes of page skipped */ if ((loaddr > 0x7b && loaddr <= 0x7f) || loaddr > 0xfb) continue; - err = idtcm_write(idtcm, regaddr, 0, &val, sizeof(val)); + err = idtcm_write(idtcm, SCSR_BASE, regaddr, &val, sizeof(val)); } if (err) @@ -1340,7 +1341,7 @@ static int idtcm_output_enable(struct idtcm_channel *channel, return base; } - err = idtcm_read(idtcm, (u16)base, OUT_CTRL_1, &val, sizeof(val)); + err = idtcm_read(idtcm, (u32)base, OUT_CTRL_1, &val, sizeof(val)); if (err) return err; @@ -1349,7 +1350,7 @@ static int idtcm_output_enable(struct idtcm_channel *channel, else val &= ~SQUELCH_DISABLE; - return idtcm_write(idtcm, (u16)base, OUT_CTRL_1, &val, sizeof(val)); + return idtcm_write(idtcm, (u32)base, OUT_CTRL_1, &val, sizeof(val)); } static int idtcm_perout_enable(struct idtcm_channel *channel, @@ -1713,10 +1714,10 @@ static s32 idtcm_getmaxphase(struct ptp_clock_info *ptp __always_unused) static int _idtcm_adjphase(struct idtcm_channel *channel, s32 delta_ns) { struct idtcm *idtcm = channel->idtcm; - int err; - u8 i; u8 buf[4] = {0}; s32 phase_50ps; + int err; + u8 i; if (channel->mode != PTP_PLL_MODE_WRITE_PHASE) { err = channel->configure_write_phase(channel); diff --git a/drivers/ptp/ptp_clockmatrix.h b/drivers/ptp/ptp_clockmatrix.h index 7c17c4f7f573..ad39dc6decdf 100644 --- a/drivers/ptp/ptp_clockmatrix.h +++ b/drivers/ptp/ptp_clockmatrix.h @@ -54,21 +54,9 @@ #define LOCK_TIMEOUT_MS (2000) #define LOCK_POLL_INTERVAL_MS (10) -#define IDTCM_MAX_WRITE_COUNT (512) - #define PHASE_PULL_IN_MAX_PPB (144000) #define PHASE_PULL_IN_MIN_THRESHOLD_NS (2) -/* - * Return register address based on passed in firmware version - */ -#define IDTCM_FW_REG(FW, VER, REG) (((FW) < (VER)) ? (REG) : (REG##_##VER)) -enum fw_version { - V_DEFAULT = 0, - V487 = 1, - V520 = 2, -}; - /* PTP PLL Mode */ enum ptp_pll_mode { PTP_PLL_MODE_MIN = 0, @@ -84,16 +72,16 @@ struct idtcm_channel { struct ptp_clock_info caps; struct ptp_clock *ptp_clock; struct idtcm *idtcm; - u16 dpll_phase; - u16 dpll_freq; - u16 dpll_n; - u16 dpll_ctrl_n; - u16 dpll_phase_pull_in; - u16 tod_read_primary; - u16 tod_read_secondary; - u16 tod_write; - u16 tod_n; - u16 hw_dpll_n; + u32 dpll_phase; + u32 dpll_freq; + u32 dpll_n; + u32 dpll_ctrl_n; + u32 dpll_phase_pull_in; + u32 tod_read_primary; + u32 tod_read_secondary; + u32 tod_write; + u32 tod_n; + u32 hw_dpll_n; u8 sync_src; enum ptp_pll_mode mode; int (*configure_write_frequency)(struct idtcm_channel *channel); diff --git a/include/linux/mfd/idt8a340_reg.h b/include/linux/mfd/idt8a340_reg.h index 0c706085c205..b680a0eb5f68 100644 --- a/include/linux/mfd/idt8a340_reg.h +++ b/include/linux/mfd/idt8a340_reg.h @@ -7,20 +7,20 @@ #ifndef HAVE_IDT8A340_REG #define HAVE_IDT8A340_REG -#define PAGE_ADDR_BASE 0x0000 -#define PAGE_ADDR 0x00fc +#define SCSR_BASE 0x20100000 +#define SCSR_ADDR(x) ((x) & 0xffff) -#define HW_REVISION 0x8180 +#define HW_REVISION 0x20108180 #define REV_ID 0x007a -#define HW_DPLL_0 (0x8a00) -#define HW_DPLL_1 (0x8b00) -#define HW_DPLL_2 (0x8c00) -#define HW_DPLL_3 (0x8d00) -#define HW_DPLL_4 (0x8e00) -#define HW_DPLL_5 (0x8f00) -#define HW_DPLL_6 (0x9000) -#define HW_DPLL_7 (0x9100) +#define HW_DPLL_0 (0x20108a00) +#define HW_DPLL_1 (0x20108b00) +#define HW_DPLL_2 (0x20108c00) +#define HW_DPLL_3 (0x20108d00) +#define HW_DPLL_4 (0x20108e00) +#define HW_DPLL_5 (0x20108f00) +#define HW_DPLL_6 (0x20109000) +#define HW_DPLL_7 (0x20109100) #define HW_DPLL_TOD_SW_TRIG_ADDR__0 (0x080) #define HW_DPLL_TOD_CTRL_1 (0x089) @@ -28,22 +28,22 @@ #define HW_DPLL_TOD_OVR__0 (0x098) #define HW_DPLL_TOD_OUT_0__0 (0x0B0) -#define HW_Q0_Q1_CH_SYNC_CTRL_0 (0xa740) -#define HW_Q0_Q1_CH_SYNC_CTRL_1 (0xa741) -#define HW_Q2_Q3_CH_SYNC_CTRL_0 (0xa742) -#define HW_Q2_Q3_CH_SYNC_CTRL_1 (0xa743) -#define HW_Q4_Q5_CH_SYNC_CTRL_0 (0xa744) -#define HW_Q4_Q5_CH_SYNC_CTRL_1 (0xa745) -#define HW_Q6_Q7_CH_SYNC_CTRL_0 (0xa746) -#define HW_Q6_Q7_CH_SYNC_CTRL_1 (0xa747) -#define HW_Q8_CH_SYNC_CTRL_0 (0xa748) -#define HW_Q8_CH_SYNC_CTRL_1 (0xa749) -#define HW_Q9_CH_SYNC_CTRL_0 (0xa74a) -#define HW_Q9_CH_SYNC_CTRL_1 (0xa74b) -#define HW_Q10_CH_SYNC_CTRL_0 (0xa74c) -#define HW_Q10_CH_SYNC_CTRL_1 (0xa74d) -#define HW_Q11_CH_SYNC_CTRL_0 (0xa74e) -#define HW_Q11_CH_SYNC_CTRL_1 (0xa74f) +#define HW_Q0_Q1_CH_SYNC_CTRL_0 (0x2010a740) +#define HW_Q0_Q1_CH_SYNC_CTRL_1 (0x2010a741) +#define HW_Q2_Q3_CH_SYNC_CTRL_0 (0x2010a742) +#define HW_Q2_Q3_CH_SYNC_CTRL_1 (0x2010a743) +#define HW_Q4_Q5_CH_SYNC_CTRL_0 (0x2010a744) +#define HW_Q4_Q5_CH_SYNC_CTRL_1 (0x2010a745) +#define HW_Q6_Q7_CH_SYNC_CTRL_0 (0x2010a746) +#define HW_Q6_Q7_CH_SYNC_CTRL_1 (0x2010a747) +#define HW_Q8_CH_SYNC_CTRL_0 (0x2010a748) +#define HW_Q8_CH_SYNC_CTRL_1 (0x2010a749) +#define HW_Q9_CH_SYNC_CTRL_0 (0x2010a74a) +#define HW_Q9_CH_SYNC_CTRL_1 (0x2010a74b) +#define HW_Q10_CH_SYNC_CTRL_0 (0x2010a74c) +#define HW_Q10_CH_SYNC_CTRL_1 (0x2010a74d) +#define HW_Q11_CH_SYNC_CTRL_0 (0x2010a74e) +#define HW_Q11_CH_SYNC_CTRL_1 (0x2010a74f) #define SYNC_SOURCE_DPLL0_TOD_PPS 0x14 #define SYNC_SOURCE_DPLL1_TOD_PPS 0x15 @@ -58,8 +58,8 @@ #define SYNCTRL1_Q1_DIV_SYNC_TRIG BIT(1) #define SYNCTRL1_Q0_DIV_SYNC_TRIG BIT(0) -#define HW_Q8_CTRL_SPARE (0xa7d4) -#define HW_Q11_CTRL_SPARE (0xa7ec) +#define HW_Q8_CTRL_SPARE (0x2010a7d4) +#define HW_Q11_CTRL_SPARE (0x2010a7ec) /** * Select FOD5 as sync_trigger for Q8 divider. @@ -95,12 +95,12 @@ */ #define Q10_TO_Q11_FANOUT_AND_CLOCK_SYNC_ENABLE_MASK (BIT(0) | BIT(2)) -#define RESET_CTRL 0xc000 +#define RESET_CTRL 0x2010c000 #define SM_RESET 0x0012 #define SM_RESET_V520 0x0013 #define SM_RESET_CMD 0x5A -#define GENERAL_STATUS 0xc014 +#define GENERAL_STATUS 0x2010c014 #define BOOT_STATUS 0x0000 #define HW_REV_ID 0x000A #define BOND_ID 0x000B @@ -115,7 +115,7 @@ #define PRODUCT_ID 0x001e #define OTP_SCSR_CONFIG_SELECT 0x0022 -#define STATUS 0xc03c +#define STATUS 0x2010c03c #define DPLL0_STATUS 0x0018 #define DPLL1_STATUS 0x0019 #define DPLL2_STATUS 0x001a @@ -138,60 +138,62 @@ #define USER_GPIO0_TO_7_STATUS 0x008a #define USER_GPIO8_TO_15_STATUS 0x008b -#define GPIO_USER_CONTROL 0xc160 +#define GPIO_USER_CONTROL 0x2010c160 #define GPIO0_TO_7_OUT 0x0000 #define GPIO8_TO_15_OUT 0x0001 #define GPIO0_TO_7_OUT_V520 0x0002 #define GPIO8_TO_15_OUT_V520 0x0003 -#define STICKY_STATUS_CLEAR 0xc164 - -#define GPIO_TOD_NOTIFICATION_CLEAR 0xc16c - -#define ALERT_CFG 0xc188 - -#define SYS_DPLL_XO 0xc194 - -#define SYS_APLL 0xc19c - -#define INPUT_0 0xc1b0 -#define INPUT_1 0xc1c0 -#define INPUT_2 0xc1d0 -#define INPUT_3 0xc200 -#define INPUT_4 0xc210 -#define INPUT_5 0xc220 -#define INPUT_6 0xc230 -#define INPUT_7 0xc240 -#define INPUT_8 0xc250 -#define INPUT_9 0xc260 -#define INPUT_10 0xc280 -#define INPUT_11 0xc290 -#define INPUT_12 0xc2a0 -#define INPUT_13 0xc2b0 -#define INPUT_14 0xc2c0 -#define INPUT_15 0xc2d0 - -#define REF_MON_0 0xc2e0 -#define REF_MON_1 0xc2ec -#define REF_MON_2 0xc300 -#define REF_MON_3 0xc30c -#define REF_MON_4 0xc318 -#define REF_MON_5 0xc324 -#define REF_MON_6 0xc330 -#define REF_MON_7 0xc33c -#define REF_MON_8 0xc348 -#define REF_MON_9 0xc354 -#define REF_MON_10 0xc360 -#define REF_MON_11 0xc36c -#define REF_MON_12 0xc380 -#define REF_MON_13 0xc38c -#define REF_MON_14 0xc398 -#define REF_MON_15 0xc3a4 - -#define DPLL_0 0xc3b0 +#define STICKY_STATUS_CLEAR 0x2010c164 + +#define GPIO_TOD_NOTIFICATION_CLEAR 0x2010c16c + +#define ALERT_CFG 0x2010c188 + +#define SYS_DPLL_XO 0x2010c194 + +#define SYS_APLL 0x2010c19c + +#define INPUT_0 0x2010c1b0 +#define INPUT_1 0x2010c1c0 +#define INPUT_2 0x2010c1d0 +#define INPUT_3 0x2010c200 +#define INPUT_4 0x2010c210 +#define INPUT_5 0x2010c220 +#define INPUT_6 0x2010c230 +#define INPUT_7 0x2010c240 +#define INPUT_8 0x2010c250 +#define INPUT_9 0x2010c260 +#define INPUT_10 0x2010c280 +#define INPUT_11 0x2010c290 +#define INPUT_12 0x2010c2a0 +#define INPUT_13 0x2010c2b0 +#define INPUT_14 0x2010c2c0 +#define INPUT_15 0x2010c2d0 + +#define REF_MON_0 0x2010c2e0 +#define REF_MON_1 0x2010c2ec +#define REF_MON_2 0x2010c300 +#define REF_MON_3 0x2010c30c +#define REF_MON_4 0x2010c318 +#define REF_MON_5 0x2010c324 +#define REF_MON_6 0x2010c330 +#define REF_MON_7 0x2010c33c +#define REF_MON_8 0x2010c348 +#define REF_MON_9 0x2010c354 +#define REF_MON_10 0x2010c360 +#define REF_MON_11 0x2010c36c +#define REF_MON_12 0x2010c380 +#define REF_MON_13 0x2010c38c +#define REF_MON_14 0x2010c398 +#define REF_MON_15 0x2010c3a4 + +#define DPLL_0 0x2010c3b0 #define DPLL_CTRL_REG_0 0x0002 #define DPLL_CTRL_REG_1 0x0003 #define DPLL_CTRL_REG_2 0x0004 +#define DPLL_WF_TIMER 0x002c +#define DPLL_WP_TIMER 0x002e #define DPLL_TOD_SYNC_CFG 0x0031 #define DPLL_COMBO_SLAVE_CFG_0 0x0032 #define DPLL_COMBO_SLAVE_CFG_1 0x0033 @@ -200,69 +202,69 @@ #define DPLL_PHASE_MEASUREMENT_CFG 0x0036 #define DPLL_MODE 0x0037 #define DPLL_MODE_V520 0x003B -#define DPLL_1 0xc400 -#define DPLL_2 0xc438 -#define DPLL_2_V520 0xc43c -#define DPLL_3 0xc480 -#define DPLL_4 0xc4b8 -#define DPLL_4_V520 0xc4bc -#define DPLL_5 0xc500 -#define DPLL_6 0xc538 -#define DPLL_6_V520 0xc53c -#define DPLL_7 0xc580 -#define SYS_DPLL 0xc5b8 -#define SYS_DPLL_V520 0xc5bc - -#define DPLL_CTRL_0 0xc600 +#define DPLL_1 0x2010c400 +#define DPLL_2 0x2010c438 +#define DPLL_2_V520 0x2010c43c +#define DPLL_3 0x2010c480 +#define DPLL_4 0x2010c4b8 +#define DPLL_4_V520 0x2010c4bc +#define DPLL_5 0x2010c500 +#define DPLL_6 0x2010c538 +#define DPLL_6_V520 0x2010c53c +#define DPLL_7 0x2010c580 +#define SYS_DPLL 0x2010c5b8 +#define SYS_DPLL_V520 0x2010c5bc + +#define DPLL_CTRL_0 0x2010c600 #define DPLL_CTRL_DPLL_MANU_REF_CFG 0x0001 #define DPLL_CTRL_DPLL_FOD_FREQ 0x001c #define DPLL_CTRL_COMBO_MASTER_CFG 0x003a -#define DPLL_CTRL_1 0xc63c -#define DPLL_CTRL_2 0xc680 -#define DPLL_CTRL_3 0xc6bc -#define DPLL_CTRL_4 0xc700 -#define DPLL_CTRL_5 0xc73c -#define DPLL_CTRL_6 0xc780 -#define DPLL_CTRL_7 0xc7bc -#define SYS_DPLL_CTRL 0xc800 - -#define DPLL_PHASE_0 0xc818 +#define DPLL_CTRL_1 0x2010c63c +#define DPLL_CTRL_2 0x2010c680 +#define DPLL_CTRL_3 0x2010c6bc +#define DPLL_CTRL_4 0x2010c700 +#define DPLL_CTRL_5 0x2010c73c +#define DPLL_CTRL_6 0x2010c780 +#define DPLL_CTRL_7 0x2010c7bc +#define SYS_DPLL_CTRL 0x2010c800 + +#define DPLL_PHASE_0 0x2010c818 /* Signed 42-bit FFO in units of 2^(-53) */ #define DPLL_WR_PHASE 0x0000 -#define DPLL_PHASE_1 0xc81c -#define DPLL_PHASE_2 0xc820 -#define DPLL_PHASE_3 0xc824 -#define DPLL_PHASE_4 0xc828 -#define DPLL_PHASE_5 0xc82c -#define DPLL_PHASE_6 0xc830 -#define DPLL_PHASE_7 0xc834 - -#define DPLL_FREQ_0 0xc838 +#define DPLL_PHASE_1 0x2010c81c +#define DPLL_PHASE_2 0x2010c820 +#define DPLL_PHASE_3 0x2010c824 +#define DPLL_PHASE_4 0x2010c828 +#define DPLL_PHASE_5 0x2010c82c +#define DPLL_PHASE_6 0x2010c830 +#define DPLL_PHASE_7 0x2010c834 + +#define DPLL_FREQ_0 0x2010c838 /* Signed 42-bit FFO in units of 2^(-53) */ #define DPLL_WR_FREQ 0x0000 -#define DPLL_FREQ_1 0xc840 -#define DPLL_FREQ_2 0xc848 -#define DPLL_FREQ_3 0xc850 -#define DPLL_FREQ_4 0xc858 -#define DPLL_FREQ_5 0xc860 -#define DPLL_FREQ_6 0xc868 -#define DPLL_FREQ_7 0xc870 - -#define DPLL_PHASE_PULL_IN_0 0xc880 +#define DPLL_FREQ_1 0x2010c840 +#define DPLL_FREQ_2 0x2010c848 +#define DPLL_FREQ_3 0x2010c850 +#define DPLL_FREQ_4 0x2010c858 +#define DPLL_FREQ_5 0x2010c860 +#define DPLL_FREQ_6 0x2010c868 +#define DPLL_FREQ_7 0x2010c870 + +#define DPLL_PHASE_PULL_IN_0 0x2010c880 #define PULL_IN_OFFSET 0x0000 /* Signed 32 bit */ #define PULL_IN_SLOPE_LIMIT 0x0004 /* Unsigned 24 bit */ #define PULL_IN_CTRL 0x0007 -#define DPLL_PHASE_PULL_IN_1 0xc888 -#define DPLL_PHASE_PULL_IN_2 0xc890 -#define DPLL_PHASE_PULL_IN_3 0xc898 -#define DPLL_PHASE_PULL_IN_4 0xc8a0 -#define DPLL_PHASE_PULL_IN_5 0xc8a8 -#define DPLL_PHASE_PULL_IN_6 0xc8b0 -#define DPLL_PHASE_PULL_IN_7 0xc8b8 - -#define GPIO_CFG 0xc8c0 +#define DPLL_PHASE_PULL_IN_1 0x2010c888 +#define DPLL_PHASE_PULL_IN_2 0x2010c890 +#define DPLL_PHASE_PULL_IN_3 0x2010c898 +#define DPLL_PHASE_PULL_IN_4 0x2010c8a0 +#define DPLL_PHASE_PULL_IN_5 0x2010c8a8 +#define DPLL_PHASE_PULL_IN_6 0x2010c8b0 +#define DPLL_PHASE_PULL_IN_7 0x2010c8b8 + +#define GPIO_CFG 0x2010c8c0 #define GPIO_CFG_GBL 0x0000 -#define GPIO_0 0xc8c2 +#define GPIO_0 0x2010c8c2 #define GPIO_DCO_INC_DEC 0x0000 #define GPIO_OUT_CTRL_0 0x0001 #define GPIO_OUT_CTRL_1 0x0002 @@ -281,25 +283,25 @@ #define GPIO_TOD_NOTIFICATION_CFG 0x000f #define GPIO_CTRL 0x0010 #define GPIO_CTRL_V520 0x0011 -#define GPIO_1 0xc8d4 -#define GPIO_2 0xc8e6 -#define GPIO_3 0xc900 -#define GPIO_4 0xc912 -#define GPIO_5 0xc924 -#define GPIO_6 0xc936 -#define GPIO_7 0xc948 -#define GPIO_8 0xc95a -#define GPIO_9 0xc980 -#define GPIO_10 0xc992 -#define GPIO_11 0xc9a4 -#define GPIO_12 0xc9b6 -#define GPIO_13 0xc9c8 -#define GPIO_14 0xc9da -#define GPIO_15 0xca00 - -#define OUT_DIV_MUX 0xca12 -#define OUTPUT_0 0xca14 -#define OUTPUT_0_V520 0xca20 +#define GPIO_1 0x2010c8d4 +#define GPIO_2 0x2010c8e6 +#define GPIO_3 0x2010c900 +#define GPIO_4 0x2010c912 +#define GPIO_5 0x2010c924 +#define GPIO_6 0x2010c936 +#define GPIO_7 0x2010c948 +#define GPIO_8 0x2010c95a +#define GPIO_9 0x2010c980 +#define GPIO_10 0x2010c992 +#define GPIO_11 0x2010c9a4 +#define GPIO_12 0x2010c9b6 +#define GPIO_13 0x2010c9c8 +#define GPIO_14 0x2010c9da +#define GPIO_15 0x2010ca00 + +#define OUT_DIV_MUX 0x2010ca12 +#define OUTPUT_0 0x2010ca14 +#define OUTPUT_0_V520 0x2010ca20 /* FOD frequency output divider value */ #define OUT_DIV 0x0000 #define OUT_DUTY_CYCLE_HIGH 0x0004 @@ -307,88 +309,88 @@ #define OUT_CTRL_1 0x0009 /* Phase adjustment in FOD cycles */ #define OUT_PHASE_ADJ 0x000c -#define OUTPUT_1 0xca24 -#define OUTPUT_1_V520 0xca30 -#define OUTPUT_2 0xca34 -#define OUTPUT_2_V520 0xca40 -#define OUTPUT_3 0xca44 -#define OUTPUT_3_V520 0xca50 -#define OUTPUT_4 0xca54 -#define OUTPUT_4_V520 0xca60 -#define OUTPUT_5 0xca64 -#define OUTPUT_5_V520 0xca80 -#define OUTPUT_6 0xca80 -#define OUTPUT_6_V520 0xca90 -#define OUTPUT_7 0xca90 -#define OUTPUT_7_V520 0xcaa0 -#define OUTPUT_8 0xcaa0 -#define OUTPUT_8_V520 0xcab0 -#define OUTPUT_9 0xcab0 -#define OUTPUT_9_V520 0xcac0 -#define OUTPUT_10 0xcac0 -#define OUTPUT_10_V520 0xcad0 -#define OUTPUT_11 0xcad0 -#define OUTPUT_11_V520 0xcae0 - -#define SERIAL 0xcae0 -#define SERIAL_V520 0xcaf0 - -#define PWM_ENCODER_0 0xcb00 -#define PWM_ENCODER_1 0xcb08 -#define PWM_ENCODER_2 0xcb10 -#define PWM_ENCODER_3 0xcb18 -#define PWM_ENCODER_4 0xcb20 -#define PWM_ENCODER_5 0xcb28 -#define PWM_ENCODER_6 0xcb30 -#define PWM_ENCODER_7 0xcb38 -#define PWM_DECODER_0 0xcb40 -#define PWM_DECODER_1 0xcb48 -#define PWM_DECODER_1_V520 0xcb4a -#define PWM_DECODER_2 0xcb50 -#define PWM_DECODER_2_V520 0xcb54 -#define PWM_DECODER_3 0xcb58 -#define PWM_DECODER_3_V520 0xcb5e -#define PWM_DECODER_4 0xcb60 -#define PWM_DECODER_4_V520 0xcb68 -#define PWM_DECODER_5 0xcb68 -#define PWM_DECODER_5_V520 0xcb80 -#define PWM_DECODER_6 0xcb70 -#define PWM_DECODER_6_V520 0xcb8a -#define PWM_DECODER_7 0xcb80 -#define PWM_DECODER_7_V520 0xcb94 -#define PWM_DECODER_8 0xcb88 -#define PWM_DECODER_8_V520 0xcb9e -#define PWM_DECODER_9 0xcb90 -#define PWM_DECODER_9_V520 0xcba8 -#define PWM_DECODER_10 0xcb98 -#define PWM_DECODER_10_V520 0xcbb2 -#define PWM_DECODER_11 0xcba0 -#define PWM_DECODER_11_V520 0xcbbc -#define PWM_DECODER_12 0xcba8 -#define PWM_DECODER_12_V520 0xcbc6 -#define PWM_DECODER_13 0xcbb0 -#define PWM_DECODER_13_V520 0xcbd0 -#define PWM_DECODER_14 0xcbb8 -#define PWM_DECODER_14_V520 0xcbda -#define PWM_DECODER_15 0xcbc0 -#define PWM_DECODER_15_V520 0xcbe4 -#define PWM_USER_DATA 0xcbc8 -#define PWM_USER_DATA_V520 0xcbf0 - -#define TOD_0 0xcbcc -#define TOD_0_V520 0xcc00 +#define OUTPUT_1 0x2010ca24 +#define OUTPUT_1_V520 0x2010ca30 +#define OUTPUT_2 0x2010ca34 +#define OUTPUT_2_V520 0x2010ca40 +#define OUTPUT_3 0x2010ca44 +#define OUTPUT_3_V520 0x2010ca50 +#define OUTPUT_4 0x2010ca54 +#define OUTPUT_4_V520 0x2010ca60 +#define OUTPUT_5 0x2010ca64 +#define OUTPUT_5_V520 0x2010ca80 +#define OUTPUT_6 0x2010ca80 +#define OUTPUT_6_V520 0x2010ca90 +#define OUTPUT_7 0x2010ca90 +#define OUTPUT_7_V520 0x2010caa0 +#define OUTPUT_8 0x2010caa0 +#define OUTPUT_8_V520 0x2010cab0 +#define OUTPUT_9 0x2010cab0 +#define OUTPUT_9_V520 0x2010cac0 +#define OUTPUT_10 0x2010cac0 +#define OUTPUT_10_V520 0x2010cad0 +#define OUTPUT_11 0x2010cad0 +#define OUTPUT_11_V520 0x2010cae0 + +#define SERIAL 0x2010cae0 +#define SERIAL_V520 0x2010caf0 + +#define PWM_ENCODER_0 0x2010cb00 +#define PWM_ENCODER_1 0x2010cb08 +#define PWM_ENCODER_2 0x2010cb10 +#define PWM_ENCODER_3 0x2010cb18 +#define PWM_ENCODER_4 0x2010cb20 +#define PWM_ENCODER_5 0x2010cb28 +#define PWM_ENCODER_6 0x2010cb30 +#define PWM_ENCODER_7 0x2010cb38 +#define PWM_DECODER_0 0x2010cb40 +#define PWM_DECODER_1 0x2010cb48 +#define PWM_DECODER_1_V520 0x2010cb4a +#define PWM_DECODER_2 0x2010cb50 +#define PWM_DECODER_2_V520 0x2010cb54 +#define PWM_DECODER_3 0x2010cb58 +#define PWM_DECODER_3_V520 0x2010cb5e +#define PWM_DECODER_4 0x2010cb60 +#define PWM_DECODER_4_V520 0x2010cb68 +#define PWM_DECODER_5 0x2010cb68 +#define PWM_DECODER_5_V520 0x2010cb80 +#define PWM_DECODER_6 0x2010cb70 +#define PWM_DECODER_6_V520 0x2010cb8a +#define PWM_DECODER_7 0x2010cb80 +#define PWM_DECODER_7_V520 0x2010cb94 +#define PWM_DECODER_8 0x2010cb88 +#define PWM_DECODER_8_V520 0x2010cb9e +#define PWM_DECODER_9 0x2010cb90 +#define PWM_DECODER_9_V520 0x2010cba8 +#define PWM_DECODER_10 0x2010cb98 +#define PWM_DECODER_10_V520 0x2010cbb2 +#define PWM_DECODER_11 0x2010cba0 +#define PWM_DECODER_11_V520 0x2010cbbc +#define PWM_DECODER_12 0x2010cba8 +#define PWM_DECODER_12_V520 0x2010cbc6 +#define PWM_DECODER_13 0x2010cbb0 +#define PWM_DECODER_13_V520 0x2010cbd0 +#define PWM_DECODER_14 0x2010cbb8 +#define PWM_DECODER_14_V520 0x2010cbda +#define PWM_DECODER_15 0x2010cbc0 +#define PWM_DECODER_15_V520 0x2010cbe4 +#define PWM_USER_DATA 0x2010cbc8 +#define PWM_USER_DATA_V520 0x2010cbf0 + +#define TOD_0 0x2010cbcc +#define TOD_0_V520 0x2010cc00 /* Enable TOD counter, output channel sync and even-PPS mode */ #define TOD_CFG 0x0000 #define TOD_CFG_V520 0x0001 -#define TOD_1 0xcbce -#define TOD_1_V520 0xcc02 -#define TOD_2 0xcbd0 -#define TOD_2_V520 0xcc04 -#define TOD_3 0xcbd2 -#define TOD_3_V520 0xcc06 - -#define TOD_WRITE_0 0xcc00 -#define TOD_WRITE_0_V520 0xcc10 +#define TOD_1 0x2010cbce +#define TOD_1_V520 0x2010cc02 +#define TOD_2 0x2010cbd0 +#define TOD_2_V520 0x2010cc04 +#define TOD_3 0x2010cbd2 +#define TOD_3_V520 0x2010cc06 + +#define TOD_WRITE_0 0x2010cc00 +#define TOD_WRITE_0_V520 0x2010cc10 /* 8-bit subns, 32-bit ns, 48-bit seconds */ #define TOD_WRITE 0x0000 /* Counter increments after TOD write is completed */ @@ -397,15 +399,15 @@ #define TOD_WRITE_SELECT_CFG_0 0x000d /* TOD write trigger selection */ #define TOD_WRITE_CMD 0x000f -#define TOD_WRITE_1 0xcc10 -#define TOD_WRITE_1_V520 0xcc20 -#define TOD_WRITE_2 0xcc20 -#define TOD_WRITE_2_V520 0xcc30 -#define TOD_WRITE_3 0xcc30 -#define TOD_WRITE_3_V520 0xcc40 - -#define TOD_READ_PRIMARY_0 0xcc40 -#define TOD_READ_PRIMARY_0_V520 0xcc50 +#define TOD_WRITE_1 0x2010cc10 +#define TOD_WRITE_1_V520 0x2010cc20 +#define TOD_WRITE_2 0x2010cc20 +#define TOD_WRITE_2_V520 0x2010cc30 +#define TOD_WRITE_3 0x2010cc30 +#define TOD_WRITE_3_V520 0x2010cc40 + +#define TOD_READ_PRIMARY_0 0x2010cc40 +#define TOD_READ_PRIMARY_0_V520 0x2010cc50 /* 8-bit subns, 32-bit ns, 48-bit seconds */ #define TOD_READ_PRIMARY_BASE 0x0000 /* Counter increments after TOD write is completed */ @@ -415,15 +417,15 @@ /* Read trigger selection */ #define TOD_READ_PRIMARY_CMD 0x000e #define TOD_READ_PRIMARY_CMD_V520 0x000f -#define TOD_READ_PRIMARY_1 0xcc50 -#define TOD_READ_PRIMARY_1_V520 0xcc60 -#define TOD_READ_PRIMARY_2 0xcc60 -#define TOD_READ_PRIMARY_2_V520 0xcc80 -#define TOD_READ_PRIMARY_3 0xcc80 -#define TOD_READ_PRIMARY_3_V520 0xcc90 - -#define TOD_READ_SECONDARY_0 0xcc90 -#define TOD_READ_SECONDARY_0_V520 0xcca0 +#define TOD_READ_PRIMARY_1 0x2010cc50 +#define TOD_READ_PRIMARY_1_V520 0x2010cc60 +#define TOD_READ_PRIMARY_2 0x2010cc60 +#define TOD_READ_PRIMARY_2_V520 0x2010cc80 +#define TOD_READ_PRIMARY_3 0x2010cc80 +#define TOD_READ_PRIMARY_3_V520 0x2010cc90 + +#define TOD_READ_SECONDARY_0 0x2010cc90 +#define TOD_READ_SECONDARY_0_V520 0x2010cca0 /* 8-bit subns, 32-bit ns, 48-bit seconds */ #define TOD_READ_SECONDARY_BASE 0x0000 /* Counter increments after TOD write is completed */ @@ -434,30 +436,30 @@ #define TOD_READ_SECONDARY_CMD 0x000e #define TOD_READ_SECONDARY_CMD_V520 0x000f -#define TOD_READ_SECONDARY_1 0xcca0 -#define TOD_READ_SECONDARY_1_V520 0xccb0 -#define TOD_READ_SECONDARY_2 0xccb0 -#define TOD_READ_SECONDARY_2_V520 0xccc0 -#define TOD_READ_SECONDARY_3 0xccc0 -#define TOD_READ_SECONDARY_3_V520 0xccd0 +#define TOD_READ_SECONDARY_1 0x2010cca0 +#define TOD_READ_SECONDARY_1_V520 0x2010ccb0 +#define TOD_READ_SECONDARY_2 0x2010ccb0 +#define TOD_READ_SECONDARY_2_V520 0x2010ccc0 +#define TOD_READ_SECONDARY_3 0x2010ccc0 +#define TOD_READ_SECONDARY_3_V520 0x2010ccd0 -#define OUTPUT_TDC_CFG 0xccd0 -#define OUTPUT_TDC_CFG_V520 0xcce0 -#define OUTPUT_TDC_0 0xcd00 -#define OUTPUT_TDC_1 0xcd08 -#define OUTPUT_TDC_2 0xcd10 -#define OUTPUT_TDC_3 0xcd18 -#define INPUT_TDC 0xcd20 +#define OUTPUT_TDC_CFG 0x2010ccd0 +#define OUTPUT_TDC_CFG_V520 0x2010cce0 +#define OUTPUT_TDC_0 0x2010cd00 +#define OUTPUT_TDC_1 0x2010cd08 +#define OUTPUT_TDC_2 0x2010cd10 +#define OUTPUT_TDC_3 0x2010cd18 +#define INPUT_TDC 0x2010cd20 -#define SCRATCH 0xcf50 -#define SCRATCH_V520 0xcf4c +#define SCRATCH 0x2010cf50 +#define SCRATCH_V520 0x2010cf4c -#define EEPROM 0xcf68 -#define EEPROM_V520 0xcf64 +#define EEPROM 0x2010cf68 +#define EEPROM_V520 0x2010cf64 -#define OTP 0xcf70 +#define OTP 0x2010cf70 -#define BYTE 0xcf80 +#define BYTE 0x2010cf80 /* Bit definitions for the MAJ_REL register */ #define MAJOR_SHIFT (1) @@ -665,6 +667,16 @@ #define DPLL_STATE_MASK (0xf) #define DPLL_STATE_SHIFT (0x0) +/* + * Return register address based on passed in firmware version + */ +#define IDTCM_FW_REG(FW, VER, REG) (((FW) < (VER)) ? (REG) : (REG##_##VER)) +enum fw_version { + V_DEFAULT = 0, + V487 = 1, + V520 = 2, +}; + /* Values of DPLL_N.DPLL_MODE.PLL_MODE */ enum pll_mode { PLL_MODE_MIN = 0, From patchwork Mon Mar 18 17:32:10 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Min Li X-Patchwork-Id: 13595670 X-Patchwork-Delegate: kuba@kernel.org Received: from NAM02-DM3-obe.outbound.protection.outlook.com (mail-dm3nam02olkn2042.outbound.protection.outlook.com [40.92.43.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3673555784; Mon, 18 Mar 2024 17:32:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.92.43.42 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710783163; cv=fail; b=tx/DMPIt+kHKFj5ZUlFcSoGIhSu7V/J2FkEhxjvSfrWijfTKibOHBE+jHKCrwR6o2RHkhW9UT8caNgt0DRw0ySVD07qDDwQ9a7te6Pwgmkt3DdWax957gSHQp1Gg0I7InMIAGlmxRPsCvIYRE4PKP1W5eG+iEz/1qSHGUzTL+r0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710783163; c=relaxed/simple; bh=KGpu6XTESecw4acs1KGy93NGZNiEm/cWrqr/MsHfZl0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=QpJrzsgcLcE7mv/9KqT6pnx1ki0zmbXt18KWCrkmEyX/9S9Ng5FB1LwWw4HFoNiAykC6TEl8uBzDHerKWRgW78CoNTyq2qLZ2TZpUwP/aEK/KHprz65BnIRH8ZIvdRD1ZXNGH3o5dikDroytYPKcGnLCvQVXnDO95Xyv8pRJeiQ= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=hotmail.com; spf=pass smtp.mailfrom=hotmail.com; dkim=pass (2048-bit key) header.d=hotmail.com header.i=@hotmail.com header.b=L/vixNec; arc=fail smtp.client-ip=40.92.43.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=hotmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=hotmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=hotmail.com header.i=@hotmail.com header.b="L/vixNec" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LmUEbvYIuPOyX40uYHTLrBbl4okhfUcz0Po7n1z5obRHWoCuwoAkZvL/SO2SyUyqtpS1mg1CjAYgTtF/7cq4LqDhuQoJs869M0/d0M9UuxHGTYCHIrL1YNkxWV6qzBYtk6ajGzOK/u+EQ/NQIdSewnn/wHHvOTUCHrupGi4EtywfiFXgV3/TbTxQk5DQBxIQa5Jr7XEN/E5RfWmUsX+1SyjDUxBIT9y31fkNiGmudEzJX7icyYgGAQS1KT5lMo/v5e0pBuzl1ro5t4cnQDVD4r4Wkvk1PDOkQxDYLz4/wj9hpZOKi3bN/St9Oh22mtRGtUEH12wm3GX23YTQ9qVZ3Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=xGPPzyxW99d6Lw7ezMhtXHhJX44cjofP8jGdKVcHmig=; b=R/eKK38N6zzI1d610PFU7MbAzkDM/MQ5QqxaivLsqoVFyPFkVsSjntvfboqAAfIg5ge/v0yiiXoI2mbY0aJbxAEeuAzk1EvmAuXqIACrOykc2kCvDemqZyk5emeFabpzj4dveK04nIejN3pEZGFsP0pYSNUmwyaqK62Mc+5bTHIsRdkCHqRhd8hH+eU2AOwIJk4D111C8wZlMOIVhzKDHjZ7F3AtoiR8R84z1q8GDK4D/lR5LufdmBAWU2Jq0Vwqa8nx8213sWxn34HzHTiuKg5tcWWeVjvtGpuVctjIwwvHWD3qvcHPlPXcaRcKo5UVOz4mavsKI+e/kMEF83Yr6A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hotmail.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=xGPPzyxW99d6Lw7ezMhtXHhJX44cjofP8jGdKVcHmig=; b=L/vixNecIDGEeZU8g4h7SRrRz+MoZNzKx46QN88NZzW1iblpYqwW8hNn41qVWpiXRzSO+RoKVO4R5UP/QMTuz5K04QD9jE2OR3ojAD5C8simZVvRXoZXdsUK3Jj04uubd+5tKrSkyN63GMh/yDitHTiZSa/SaghQb//wiZKo7HAFyVjsrVVmaIIMUTOvgT/CYFShyc+6SiXsVRAb+IQk9Dd0+UIbF95a9dwB0xb4WvwW60kfQdx0XsUiPxVJG/3gxTIAH28QnnbtBkoKLmtV5zQyEEVn0qpYjUNcB0DdEwClWz+TwIxWKpFW6fweAfDiuz2wDdkqx0PX4aNlj5iTlg== Received: from LV3P220MB1202.NAMP220.PROD.OUTLOOK.COM (2603:10b6:408:1ac::6) by SJ0P220MB0785.NAMP220.PROD.OUTLOOK.COM (2603:10b6:a03:408::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7386.26; Mon, 18 Mar 2024 17:32:40 +0000 Received: from LV3P220MB1202.NAMP220.PROD.OUTLOOK.COM ([fe80::57aa:102b:db4b:e05]) by LV3P220MB1202.NAMP220.PROD.OUTLOOK.COM ([fe80::57aa:102b:db4b:e05%7]) with mapi id 15.20.7386.025; Mon, 18 Mar 2024 17:32:39 +0000 From: Min Li To: richardcochran@gmail.com, lee@kernel.org Cc: linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Min Li Subject: [PATCH net-next v7 2/5] ptp: clockmatrix: set write phase timer to 0 when not in PCW mode Date: Mon, 18 Mar 2024 13:32:10 -0400 Message-ID: X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240318173213.28475-1-lnimi@hotmail.com> References: <20240318173213.28475-1-lnimi@hotmail.com> X-TMN: [I8lL7JDOdxbgfOPRDUDnZEjCA4iYvVQP] X-ClientProxiedBy: YQBPR0101CA0070.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:c00:1::47) To LV3P220MB1202.NAMP220.PROD.OUTLOOK.COM (2603:10b6:408:1ac::6) X-Microsoft-Original-Message-ID: <20240318173213.28475-3-lnimi@hotmail.com> Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: LV3P220MB1202:EE_|SJ0P220MB0785:EE_ X-MS-Office365-Filtering-Correlation-Id: 31c08f35-74cf-401c-91b5-08dc477168d9 X-MS-Exchange-SLBlob-MailProps: Cq7lScuPrnr9wYTvfIwcniUcOEk7m2BTCc/2soZMML5seGwi/ef2jHXJNzOplKBJJaSTrmxPESvI1EoV+/U8i7+xFYz5F8LT/p1ai80cts3hXDP74R6TIracBhvxDIiWArtC/3606+lV62cUMU6iCDN2SCCjmnqEhYpBe2+lcjwFHQ6EBCzFmntFvQ8kqa4lPiRfmzO/zOg6c8MLQR/sMiytZj905djqqgAa2CnE4986z4r/+DyiDaeBKb8Ro3hj0CUmcABr8qAcHTDSlfgHZ2+8CRyn6D6fA1IsWNMPLVwiY0UtbmYCb7t+7vVbKT+KKkivCY7h3BUSr2SRavvU5aBloaBunZaoWQhh8o+BFSS9YIooEUnQ4V3VvsChLk5nGV3IZcvt0em+wQKOht9lc2LSaOJL6yfya7oNH7dtBFBRbDYtbBSgpGjCkerRrTFHepNWM+iqpZwcUNqVubvHBdzLwOE3ox41Y7iypyrF8jtZet7BaYdT0TF6940hBBPNS7Ch7fIYbq8VlNeEOauE+zOyeOgfkEO/XZv/XePiEiRdoB3AhXiJ6d37wtEWQLv3JABwSq8d4VHy+4ve7cAovbz/xa6Khe+Fc21r7ZmWlNNVZfYX6p+BLStU02coKpDuaun5AYhAePMsYmKuF3iRNE+tt0tQOSuz+4uNsBP/qaKohTQV6O+98CL+FiCLwvq/wnQAWz2Us73WhMkGecLlcbbf3ZxIIMNp9NQYaKPDv166wZXG0NPJxsb+6psLfasviIBqqWOzKeU= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: eBKWUlP1HOSkv8ZqDd9AlpiQXg4ZdtE47KrKKyxFqgZwo1nN8cLEOapOfeTSGJW8waerPsJX69/5uEd0Fc1c8qJw7CaC+eSzP49+/keNMN4FoKrSnLt3q55aDS9S22KtPMPiSoFbz39aXjnJhr0Rqtr/fyRolDZMuZKTtKHwgH0qomWNB0pvlwPO4hJX3CYaqNaAzIku0IBIJ6n0MDfu053KWL9jHO45EnTOjjRaYzVeYG1s6ft+8r+iKAstLpMnUIEtIpLjgKrdm1YIENnJ9GClFQYhIp5dpoDKRyaRp6THFIGrlJCSMRLQRJbxlBLbFq+zGetaJzOSO9PN2Vkt8xHykpgMw0hNjATPwzYQ1pwgpkrVE9I3pT63qqy4zHM7p/QD2n4bWCub96yLGPbUcUDdzg6ra3ZS02QWb2y9Evlqwn/zwTX4csKvm2KSyjydXGtQJ+73oIi41fwYsVGDzPZaT0jbbkSw7ITWEiW51DPaL/VxLJlDw/4XKZ+avkSfyFS9ueX7YMZc1I2LSA59Nq9ORpBkSH955nThF6ZKHUJuLw9N3H7URVj3jQ8zd5Py X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: unwKzV3URCSLczfwkNX58i4Te+MHQKIwIJ31rklRAuv6cjvKX08GMMS5Ls9JjXcX5bi3fMAseMgCNJUHuNz4crF88drJr/ERONKwU1eMQOHTzG9SN+anJvUOWNc7PJUeFK9C2o1BDFFjFIHoyS/qLrkAMMtm22R/5dVzMY7ifihk4yOs1mKc2GwfiaZ0hufXf6w1xVKTJefMKS/f/Tc2hBzQ9sR6tGXhg1mfzwB1j5WzcDyCeH37msopGNgyr+SKjMQBcsgdI5NbeQ/X9zYnx7sJJNv8YQvRGZDDdkYMOhyXRRDLru4bcj8Mj8x074XwxaGdNxaIM1z+QnWR9JFnGcS0MvuKwi1if0sdZWIVWiMosRbZsvaBTWCaJFE9UTip5rrmowJCvtUp6H91CIK1KfZuvTlYujFhgXnVTT0/2jXleir3AkedMJERLKBlhIBGFW+yFt1i/j9ZOMBFI73BXXR2RH70XbfkdgMNbZf1tRjcEwqB7WUJIylvSk7gvnDxBBE5tWopl5mCI5oMV3/R/+llJK9RY0p3pBihynrzOAreovl0pimmpYjfxl+26nl4hUSN/DLTXcspVkOcUtbIjVq8x0CnzakDdjaSYPqULiHycDZV248IYLU9at91FXz60FDf9+sMig5p6Q1L4rRRJh30ZfSKa9J5E4qd5+fNy1WhDg+s0Y6VeXVJo7xDKHYKI5LHVlpzI96qHvUb6Z3UTzKzqVB/AN/DY8uVhfAzED3atPeX86mQff47mKBLKu2D17AbasMkyQtYBdV4Pfisoa6sxsd1fUDujIHbeAmVG7YFM1sESWb0fZqF2JH4cj8XMbUtl54GeJB5WWqoVQXDqJ9vwcTbHFJ3qaVsA3oGVrxDhdT72MkPzwspXdQX6SvubvtXFl9/ksZDSHDRYAc5uNLFspJe+YO5OcdWTHUSvVGMepBf2qoC199VXhIyTJ7Fe7qY/Tmvs5MUp50NXwUF6vQUF2GUexVRmMF+c7j9D0SGDPttW7fR5hlo6fiw+6BwCm7HWZ93q9wI+ci6FnoceWKgjG9UoEha4kzOA4QzFbxbRMIdKw/mPwjfpHfAdTq1h5x2o+U1Ujk7cMgU46LXZxkjYPYtFzNGfdFC/0VRfAbULZWr6mYfsfsRfHf6jhBXPAho9pENUTzSqL9CHI2W9R88MiT+iGMAvt5JdKYRURBsDJzswcVJiECQbKlydoqklh+LNdKgETddjCbsB8dKmwhVyu609X7WWnZl6NrtATY= X-OriginatorOrg: sct-15-20-4755-11-msonline-outlook-3458f.templateTenant X-MS-Exchange-CrossTenant-Network-Message-Id: 31c08f35-74cf-401c-91b5-08dc477168d9 X-MS-Exchange-CrossTenant-AuthSource: LV3P220MB1202.NAMP220.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Mar 2024 17:32:39.8801 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0P220MB0785 X-Patchwork-Delegate: kuba@kernel.org From: Min Li In order for phase pull-in to work, write phase timer shall be 0 when not in write phase mode. Also Fix u8 -> u16, DPLL_WF_TIMER and DPLL_WP_TIMER are 2-byte registers Signed-off-by: Min Li --- drivers/ptp/ptp_clockmatrix.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/drivers/ptp/ptp_clockmatrix.c b/drivers/ptp/ptp_clockmatrix.c index f8556627befa..d069b6e451ef 100644 --- a/drivers/ptp/ptp_clockmatrix.c +++ b/drivers/ptp/ptp_clockmatrix.c @@ -1396,6 +1396,20 @@ static int idtcm_set_pll_mode(struct idtcm_channel *channel, struct idtcm *idtcm = channel->idtcm; int err; u8 dpll_mode; + u8 buf[2] = {0}; + + /* Setup WF/WP timer for phase pull-in to work correctly */ + err = idtcm_write(idtcm, channel->dpll_n, DPLL_WF_TIMER, + buf, sizeof(buf)); + if (err) + return err; + + if (mode == PLL_MODE_WRITE_PHASE) + buf[0] = 160; + err = idtcm_write(idtcm, channel->dpll_n, DPLL_WP_TIMER, + buf, sizeof(buf)); + if (err) + return err; err = idtcm_read(idtcm, channel->dpll_n, IDTCM_FW_REG(idtcm->fw_ver, V520, DPLL_MODE), From patchwork Mon Mar 18 17:32:11 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Min Li X-Patchwork-Id: 13595671 X-Patchwork-Delegate: kuba@kernel.org Received: from NAM02-DM3-obe.outbound.protection.outlook.com (mail-dm3nam02olkn2042.outbound.protection.outlook.com [40.92.43.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E27C956463; Mon, 18 Mar 2024 17:32:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.92.43.42 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710783165; cv=fail; b=sOKJoAXVoLxP/y44K+dXhC+J/8KLzAUrg5IMZlr6P+Y91wStFCfi/gcLLuL4Xz0Cgwf3K47S/KK/ou0LneykeKnQvF6ncCYWLuJ5oIXlo50+r1muQPsPzt3YPhBrePnKGTSEirQgh4b1KcKN3+z/amTwCAjnQO/1YP5qHb1Veyc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710783165; c=relaxed/simple; bh=cHB5Bd3AQvD4qN37/en3h/15oj4vABf1xasMvTLVjTY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=m8bu21BNXGojNSm14oE+13Uikjr6H+3SIYAedwuK7eGw0cCCY33hXGdUgln2pfpS0keKsN6HCFraaBvnIbSL4XGLS0PHcWt/C14yYS+8KmsZT3hKMLJWe7q0bbPn3QS1aWq+IkuKhRIUvYcf+R1RrfpQXKh0sy4/nusZbntpReI= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=hotmail.com; spf=pass smtp.mailfrom=hotmail.com; dkim=pass (2048-bit key) header.d=hotmail.com header.i=@hotmail.com header.b=W0zRPFJa; arc=fail smtp.client-ip=40.92.43.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=hotmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=hotmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=hotmail.com header.i=@hotmail.com header.b="W0zRPFJa" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ALHt2h1dMYU6MX38/tkrZ8WlBEW3UgEzqcpbfCGHN3KG8j4HV2+k9yOKvL1efPeLjLJmmHOV+wJYrFxHblLvb4yYj18kSbX0LGDz3G72G2o17y1jdtrVv5z8JCr5xc3g6igLq+NSWC6h1pNs56qHL8BoK/sUn5z6fYRV54yrLhGK1quN458UVivZgdYcjs5QlnLe/mnsEnImT6EfLX9U1u13yIrOFuKGKOce8pp+oqSOhQjV+LNe4t0PcN/+SUORS3V6I5l/iDLcRjiMlsY0sL9NRAcxGfy8CBo7fOsAWu+8N/iQQpwK+nLESzJnLgX3LWLQ4dBbqzN1Cloy4ZTVLg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=BTWLBrb4fL4nzNjk3Tbhv6WCgSXloJeYw3KGYpXWzDY=; b=YuxHED4rWCvB41V5OhA0cIQYZZvoaKiC5iJJslYAYBd92XM6fCznO+ogjUlJAJXODSgvoh1xa69FCrIEM7sYlzAHyT196rQSoDwvJEK1fSN6SzbYEzknE2KjuH1n/1S6BGIy9YmE1tRzJAHINkGZIWEJDB/PmHaBAOi0eKkJFoxsmkHlt1vpnKk/90DZOv197z6pAyC4/84DOKob8cgwrJyp/ckVsHEwYfW7nNzSR1ARIHHJAoI1c22+8DiABBXlfa2gxfxT/sZ1v2vdvZdCy/3CFDfA7lDozgf5zWo1lfXCaByIhuJFAyU/+IlEGn9nao9W7FbBgh0kJ+mg3wiE9A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hotmail.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=BTWLBrb4fL4nzNjk3Tbhv6WCgSXloJeYw3KGYpXWzDY=; b=W0zRPFJaz4ziJvg4IE6CSg/bPLXSbK7AehHdF4nvKUmS4mECn5tA+rWGWrdsEwck3dzWGbNVoT+m4MYJpXEDf8VX+NuDNJxJa2HWFqWZQKPfE2my3zWHbO6Jw2RDLCWm838jIrhCs3PX7zKnZ+Hk7BNN8vl2dwnp6wMJqRwFASNy2v3tHjGuTiKNd6VIXXzltFFM/z8e1JYVoLwW/YfwBiz6KUF2gmC7kBlyDO5svVSlKLCfU/TQ6v2Kkw8rAwtNmA5Vqd8wZ5+BNQgY2UQgoPzrfzx8lOwwCO3EEgBFkloN68T1yFW7711uZ45ygLdwMFru9YfGpgymzjyOBJilwA== Received: from LV3P220MB1202.NAMP220.PROD.OUTLOOK.COM (2603:10b6:408:1ac::6) by SJ0P220MB0785.NAMP220.PROD.OUTLOOK.COM (2603:10b6:a03:408::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7386.26; Mon, 18 Mar 2024 17:32:41 +0000 Received: from LV3P220MB1202.NAMP220.PROD.OUTLOOK.COM ([fe80::57aa:102b:db4b:e05]) by LV3P220MB1202.NAMP220.PROD.OUTLOOK.COM ([fe80::57aa:102b:db4b:e05%7]) with mapi id 15.20.7386.025; Mon, 18 Mar 2024 17:32:41 +0000 From: Min Li To: richardcochran@gmail.com, lee@kernel.org Cc: linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Min Li Subject: [PATCH net-next v7 3/5] ptp: clockmatrix: dco input-to-output delay is 20 FOD cycles + 8ns Date: Mon, 18 Mar 2024 13:32:11 -0400 Message-ID: X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240318173213.28475-1-lnimi@hotmail.com> References: <20240318173213.28475-1-lnimi@hotmail.com> X-TMN: [KocnEvyWJOemvqv5bJMN2mpSHO0rOPIy] X-ClientProxiedBy: YQBPR0101CA0070.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:c00:1::47) To LV3P220MB1202.NAMP220.PROD.OUTLOOK.COM (2603:10b6:408:1ac::6) X-Microsoft-Original-Message-ID: <20240318173213.28475-4-lnimi@hotmail.com> Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: LV3P220MB1202:EE_|SJ0P220MB0785:EE_ X-MS-Office365-Filtering-Correlation-Id: 3dc57f6d-78ce-4187-bcb2-08dc47716a04 X-MS-Exchange-SLBlob-MailProps: Cq7lScuPrnr9wYTvfIwcniUcOEk7m2BTvc7sUbL42pz9myjLRdNG1hponPip/9dg7NYmjd1i/NP2Pz2qLPnmUwCUtqcK4uFWSOW9AAcy3zq3nigqMZQOKIBudJPXF07Hm6uWVfuCzZZCbCzDO9lPwgZbFxHoF21lty68Y3H1pdQq7UEfAo+JAQDjcAtVHrcBj18mqDMHqVPrcacCj3aQQJyXbVIGAxnWJYzac88Oby1mqnkgEDAUb609dvzLHbYvLG4AtsBGssoli9CG3n43Jy6rMrpyoCf6eOqvVFNoE7OabxaUu3/53JevUyhmeMeePm2eebUWORsLdYOnPEPZRmz9sUutmGBjyG5icrzRZuJ50IlCaCkzT7TgRdNCuwjZLzRaRTdCcvMrczGh7+iLt5ul6Wyqtu4gyAaGH546o0JrbmKlA8VyMbKu9tjV+/q+/asK3yh1nmGOZv61fkAN5c0o871226lVH6ewDtixAkKWc6G2ExJGGdKCFpdI25O1jLfYKlHZa4iYj0ko4ChdKgPwOHth/zblXK5rQnM06AZv80i4O7XU0E3hR6fXwljMkyGmgqAAvWYvt7n/eJp/gh0qPiZYsrRbsLwzjuvQqb0PjbdjQTFzzzwBiWNCsaXucCz5VbFCaZxeQg77DPN/ODbz+jDOdDcQ/PqnAnr7aodp7xIgTTl3wxdbouCMqQsFx9zoC+J4NtzIWl1WWVsoVSOWMbgM8TyRK+/yg30r2Zye6m832T+vFJXfHLrt4ovIu6k/G6D4V4c= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Su5mRazYK6skJiOH+PounIddnNVhoDQqWE9dbKO5vOFEOwRQ1pPp292XfqxY5AMt4pM8hazJjo3U3ZC/yGhkGOHx8+2m02TKLPM5EjRwlzNnoEGxty2uTHuf5VGBeDtI7MlMwEocD/KQq80XQWnwJDCb3ngLCRhrywEOCGHVjaCzWHHRCER3k76L3/peDbX80pN/o4GFQ8vvnN/jKJMBhOsJ3E8pt2qfApV+LGm+eqQx25F9SVF/MJHmHXtNL+SoT6Ku6pmx2QHv54UGYcgJcpGatcoBBlF9wywPwjHkB2DtX2vqHilnNWbfEuKkblHjpKjyUHnGsJa+bs3Hu41hzCN/Yk4Q3WFLR1zDQCoKKP0Pit8fVs8KATKlLayGotgATibZoOqi2NWSexBqRCDvwBF3QX6vYD5GdZlCSqgar1T0nBTmqVWlzi/AgVoTNvq9O1Q+hWHi7grEozVXgnI0hb6cQD64kSt/7dXURauGdxWYchen3dAYVUaF2Fqdg9Iba4T6aFi5F3NnSL8sAJ9e5RYqHQRVpFKQl3g4MbLzG5XJ882/3lxQ/QxyNEWx6wJt X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: vqsb/RlaQNJYMaOlnlNGDfurwvM52EnmyySRtGe/rsJEn0OwNPEnxXhXiN84pS7hv7WuhcEBaRQnJDP/qYB6Rl/do3JqGgPE2lJXXzEAawco6vVk2ZtgfX4SpmZkBxY+lz3mtBmKTEr7/dzxHQDal2WAfR9IyrMQhQeJc/UTmr3cdJaF/Ad7i1JLweiu1VVACJMCy/C3Jl7oSHIamFNHyYxCILmoTUGGPcZKEMXOifhTfM4/JRooCyVgCOLRWWAusk0Im+OHjBDzyNEV2/z57nTfifUR+RpclrcPOjDpJ/qUajiybzFPcvjvgY4Diec7IYysRVirKJQcxPr+9Vn7KafU4Bjqmi9anvc20wVtY8oSkmNIfRjk+LEE0B7NyOM6aF/qR59/XGCQyIc0U2+SBbnF/UMKANK1z7R+sXM03u00OmlTICalNBsTVnsl7lF5Oxp9lpj/LXZYabHRJA0IXEP/XNpOvYr59JEzqGr/zHskqYWQsn/NYpAkWaQYi9mNSUehozwd4loCgzaWsJdwrki6TDmwJjNr/s8IcviNBNxbtyHZ3a9pJUJE0feb/kv2AimXbSh4h5WvtRrCSoT9k3dONWrrpDGu04grh97kV9vNRHlfFva5euaOAVpzMKhfSdYQaHjbCj/MHB7+gHuItsxjpoB1gtDtOm2nI+wwcDOQQ3KRduH/eWO9r/e5FoLqNnS7fp9u4bSRD0bayX0wOgLBgYYgjgrRgMUw1qsQvEClGBq0WV2z/VoxE9KGqywsS8b8KGD3vEAWMMxdlBUu/PjZiRvhzcu5cSCd0Bg255HpGH7pXjjyk8gGmYXP530kecD7vV82+pfhtLkzNrBjKWl7bQnjrdrEV6pJO7Ptk+q71uEIF3ShCUsAfAcYU4Txfke/j99dEU3lo5RZhXogr6DQ6xbf9IGV0fa1pIATWEWbGFMEPmleP65z59NLwBQRn+Ctvi/cFhJgEayFFS37D8enlERB61+BQgLiiHGaH2xvJhxEFjSGvuCIpJiH4ef1WMtddFe9I7I+DSgD3wPbgK9fUKWMf4w/DKM1+ri/Tbvh+W43Om6xl+KKAaGqbG7XvH3tis0Gk4W/eCMK2QsAoKkmLbVuD/OYmNmD298TRrYrJxuHhXj8E6ADCKSCgHxpNhdauQryXK/pEqcqq0pbr0tTLA5cUKBtFbVNN0c9upIj/mh+vgo9qYgyY06sK6vfz+BFennDFgYkqFA+xTNK/5q0k8rHJwaofVNaCl4Y6Zc= X-OriginatorOrg: sct-15-20-4755-11-msonline-outlook-3458f.templateTenant X-MS-Exchange-CrossTenant-Network-Message-Id: 3dc57f6d-78ce-4187-bcb2-08dc47716a04 X-MS-Exchange-CrossTenant-AuthSource: LV3P220MB1202.NAMP220.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Mar 2024 17:32:41.8169 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0P220MB0785 X-Patchwork-Delegate: kuba@kernel.org From: Min Li Set dco input-to-output delay is 20 FOD cycles + 8ns Signed-off-by: Min Li --- drivers/ptp/ptp_clockmatrix.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/ptp/ptp_clockmatrix.c b/drivers/ptp/ptp_clockmatrix.c index d069b6e451ef..21f3a2c179f5 100644 --- a/drivers/ptp/ptp_clockmatrix.c +++ b/drivers/ptp/ptp_clockmatrix.c @@ -2165,7 +2165,7 @@ static int configure_channel_pll(struct idtcm_channel *channel) /* * Compensate for the PTP DCO input-to-output delay. - * This delay is 18 FOD cycles. + * This delay is 20 FOD cycles + 8ns. */ static u32 idtcm_get_dco_delay(struct idtcm_channel *channel) { @@ -2196,7 +2196,7 @@ static u32 idtcm_get_dco_delay(struct idtcm_channel *channel) fodFreq = (u32)div_u64(m, n); if (fodFreq >= 500000000) - return (u32)div_u64(18 * (u64)NSEC_PER_SEC, fodFreq); + return (u32)div_u64(20 * (u64)NSEC_PER_SEC, fodFreq) + 8; return 0; } From patchwork Mon Mar 18 17:32:12 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Min Li X-Patchwork-Id: 13595672 X-Patchwork-Delegate: kuba@kernel.org Received: from NAM02-DM3-obe.outbound.protection.outlook.com (mail-dm3nam02olkn2042.outbound.protection.outlook.com [40.92.43.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A9A7A56765; Mon, 18 Mar 2024 17:32:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.92.43.42 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710783167; cv=fail; b=q+so64G36i5IdILnBeZMrWPBJY8AGiv5EHnsb0JCO9ro/A/GPMbM+35H0WsGT7PkwHfKUFhg3BgWcU7FmAVAUZ6Y+6g+c6u0l+RqpQAvhhL3vSS3rQaDpwYzZ1U+cgPf5lAAYHkReDGoAMFtbcvSsPDnsytA5j3Z08G4tq/ehlQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710783167; c=relaxed/simple; bh=lBev2nx+Rwa/bnJJgAjIrRVrYkHTGj8aoqvOO+ETPmQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=bfCxQPravG2B2+ZX2q8CHnqTzCuelDdescEcP9x9qIB6JPfUbMTDMhDzZ9r2fYWEw3+fHoDj4Tcy9vxo6In07s+/SBj4O5bmr7l7hTP5XV9YG6qiWFezrR4ulffG5+kX4MqFhN/MNR8rHwkr0abwn4N2WdaXzZe8ChWBtHdKCSM= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=hotmail.com; spf=pass smtp.mailfrom=hotmail.com; dkim=pass (2048-bit key) header.d=hotmail.com header.i=@hotmail.com header.b=DbOPxPpc; arc=fail smtp.client-ip=40.92.43.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=hotmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=hotmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=hotmail.com header.i=@hotmail.com header.b="DbOPxPpc" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Bzl2VTRGs6q8g+bsiBOXXnLkQ9n2PCUJyMl4+8BYB+CilAoMB2zefA9/RdOjcm18vp98NpHYYkHG/TteKnnUHc0R6a7WfYW9hNhtOWu0/DRHDDow0T6Z7wWETo9NInNJdoXQlqyCAbT6bp28XFPOnghBQBHiqkwE3BezdBrkFwpkK+sdDt9UvK6kI96x1vzHkjcZ8Sgojcu1EM0qIJJL7YwoBi+qjPCpBNtt6zyreAoJgUTcMKmmowZFlzFSCAIAcW9a3gncjFPE3D47/81/Cdf/WzeQaqlNzfmTrqQ3IwyqFFnNQLQ9WW89qpkFa2OI3UF5yvEcKPAqvuaNSbZj1g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=yoNEDh+iFq7lzKBU9CENiMetKrSdJTglln2bu+84U0E=; b=TxY7kOvAJtI545r1vxPRJxTPmD3izcCSambQ4uxSgfXwAdCnom7Gw3dm1vdEY+AhNouSmj7ctsTbGF5u/erMJvjnyDFVVYjpmDQf0XHFm83clOXKQS3o2mZanpyxcMsOf81O6TB3bWQZ9opFbBX2bgG/BYqvkdOXFzmGpZQaeHtq6EhyUlwYsFk3xl/Lmf7qJqxjsz0bAfbcn+Po9cO7nBiVqb44wIPyD02jWuzWLBobBfXinDwNUkaGbiXxu8KSbjusOniDy/bTKOS7luOqy/sVQasSVO7WxqwiZqE5XsAqM/IoA1FXEEOexqE6ZRj7LA/laZbsO7XW5k8Jmg+OGw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hotmail.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=yoNEDh+iFq7lzKBU9CENiMetKrSdJTglln2bu+84U0E=; b=DbOPxPpctdHhuNTmj0q67os6cQsdQfmkQN+WXpE20twix78t6rJuZfhSwppUtjTiV7qn5wooXICAel9VGG23Q/A7a/Qx6+c4YbqQc1E2z8yzQPmcclncUF4j7PUrdBovmjLg6l9R+AYoBV8mcKE4TtWiO4XK5rxYwL2slF7jhl4JlwOjGHCzAnMDbDaS7VIB53AdoPmd/+Ez/sbWnlzMmube9LcdNhebE7g2e89WRE+DyaCMlGGyUs/zDcXtFnFLW+pBsWOrnyKHqbcEkvSgiZn6M3cwjTs1e5zZQE9TYxZaeLNZyyrtW8LHb4B0v8HE1NYWRsy0sBx86M5KiMGMvw== Received: from LV3P220MB1202.NAMP220.PROD.OUTLOOK.COM (2603:10b6:408:1ac::6) by SJ0P220MB0785.NAMP220.PROD.OUTLOOK.COM (2603:10b6:a03:408::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7386.26; Mon, 18 Mar 2024 17:32:43 +0000 Received: from LV3P220MB1202.NAMP220.PROD.OUTLOOK.COM ([fe80::57aa:102b:db4b:e05]) by LV3P220MB1202.NAMP220.PROD.OUTLOOK.COM ([fe80::57aa:102b:db4b:e05%7]) with mapi id 15.20.7386.025; Mon, 18 Mar 2024 17:32:43 +0000 From: Min Li To: richardcochran@gmail.com, lee@kernel.org Cc: linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Min Li Subject: [PATCH net-next v7 4/5] ptp: clockmatrix: Fix caps.max_adj to reflect DPLL_MAX_FREQ_OFFSET[MAX_FFO] Date: Mon, 18 Mar 2024 13:32:12 -0400 Message-ID: X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240318173213.28475-1-lnimi@hotmail.com> References: <20240318173213.28475-1-lnimi@hotmail.com> X-TMN: [uLvgenvusVOTLSi0D0GoMOLBmUIy8oAp] X-ClientProxiedBy: YQBPR0101CA0070.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:c00:1::47) To LV3P220MB1202.NAMP220.PROD.OUTLOOK.COM (2603:10b6:408:1ac::6) X-Microsoft-Original-Message-ID: <20240318173213.28475-5-lnimi@hotmail.com> Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: LV3P220MB1202:EE_|SJ0P220MB0785:EE_ X-MS-Office365-Filtering-Correlation-Id: d8814eef-8ace-4ae0-04e0-08dc47716b3c X-MS-Exchange-SLBlob-MailProps: YfhX3sd/0TVtq4avcNPNE0XRC8HkTjez/GivjffYX438AWKz/rwEsHhmede62eQsvVVO1HUhUZUxAnWd9ahB61vFxuZOiFvtfegL9lHjCDcTDjn8hb6MPporhxyWQn4agQNQsn8oXFbZl+OEYYhnLMvFTIudG0dZacqal7Dn/bnPut0uD/d/D5vLF9o20viY8VXsOEnJz7ErWoNj/coeRJOwSBokEDFm6cv28Wgs5MfPYZqIRlFJScP9VroGYe8FUn3D3Mgl7eoMD+ODaQANMd/LNxKKWjiTzHKOcimBz8imc4qdwNuTFAxX+w9pJLAx7dnVY0hkLcmavAk5zFbLRz6fEoNRSps/nP6E7hURDLCxRcaDx2ewKsCYAFWS+EjgX4rLk4pTFMF3NY60xlpy/1HhECt/eIjPB/1G8oY23bt9dvP8Dc3rbLmOZT1eBt2vHZ/W3XPWs4K+M+zeLu71f039+TSgYZe8QrrNggcy1X8SYyjQU5Aw06wgYdkpJPbHu58UHk+nY92lWd0FAyeUxrkP/3mJ9J4XX80xac3474LYdxrrbLoWPGyDyZqpOKgwoCQF7JUFj6F0CXqEgY4PhMM/gcI1vcZvQk3ouWbvVHxY2Nk4UkzPZJbwPm6WDn8zifm2zQJN1m0sseoOWp5WeX76hPZnxI5DiH2fI+jLUpPN06Z/beUHxwyoYvhQcnSc6azw/tqEeEA/aaMdy3ZQZ4PWZM+HEPdSjttCKscqG90m82bSbox9/cjKMFyzywsYmauPzDwaSqEURByISHOHRvUqH/mCCieMOyTLyu172Gk= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: dqQijQ1axX1Ojcj+/ERev/6nUBu1QXiEMV9Cat4OhoMmdS7zxZtrktcNJzp4abnSKuwTzt9jFcceEXZ8hBkAiiGPKVB5LPfrzPPh732qa5RG6zL0n/kC/t/HAegY9TfApNlu3fSDwD82TJ7oBkiUQbqB5s/QIZCpSELaOyu4kM+oyuhooLx+o+b02KKJupkCjR8rqsX269Yp+xu8AFMT3Hnx+yhJyJtx7Zt/dX8bIAbxExc6GGrEnaeAx+3n/S5GlwEaLJCIkYH0zxelUWuB5+Qdrh9MBofIH2/fxV0bcUW5918PjviDhjyoXak/Ff5bg8zX4UGYi1BRL6QTDN4ciSXwqxGr3tZfFZjy1KKKi1QZhOHCLn5IwAHYMWXgZxbfy2LAw1rZbIs3BF+i06j6cq64f8Ywqmx/pReCBCWoKBIGjakFRT+wuLdiX3KjOE2XuS0C/MmM/IXccIb5YwWOmTqiSR5FACxr5yuZ+hKtVuGfHirHO7vWY6lIXssQnmxTxDD4CQdTqF7jrzRvR4KP5qpekm0PU6N6E4P1Vx45VeQRWSpYxabmTRUWolVQOLVN X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: PWrhwB+54DJH6UWwXaRpzo3iQlVaepvjjkilYZeohuiAAi9Cgb6PZttfJfslMKRtWyI6EiccOu3vinSkMsh8FZ9N9VztYFQinuLfeksH6FwdCXVC/revs3NPwRqcrIICoVQFLz6FyExJPIqcEeMlIBBl9v6uBEFbcS9FEbtLmibL1IqiDZb7PakNmTC+F4qndq4Y8GAwDmvJW29XolDf/8XYoeOrBOTYAfz+U4mP2jHxlv82qh9asYUFVVwRDOhk2lob9XNVfC+N5QXNdqRvV5yUUlmy9yAOqevMh6BiVoGPUTLWrRfa3cZ1IXCMclT2maHjKnTMgH4wvCZ+8oPSqINPaxaKttFDEFltPkTSG2boRdwmtUbp6h2L23nz1mAeqaH1dnIeBwOLkFHymxqkDPsuAlk00kQMCJ9adOGsR9p6o3tTk1IUe3mQ52vqKF9Ns3xjwKvY7mzSfXXau1APQjWEbNc0GHJGks1JNGQJQoGLIUxRYbureT4a1LTP2lKTH21LTvL9AWZqvsMDnTqiTHI951kSkqORJ4Nc+J8AGogGZhu699xMMTX6AyP55Mg3pUIxjGNcWK/u8jCEQFYhaHomEnTaQyc5+++8j7ujjFiUlUMnGDoaeDemsGz+OILxhOEdMibEVswljKZBixPxW2iCThlG2NubkpwAsr1wqDjNrEgDTMkbtoo2ckNFFxkqz9jRKaF1ivo0kbM3rXA0yiO0+RKi46QEKpU0U1Caix+IEWYhWXw2IWj+psPGBHdvLR27yUiQsF/zxo8pIzJCQL2NG5mAEN7T5KcTmf/6sdEeUxj/+N5kv+gSxTSNMeu3FV/ehzw8yIoNLLUJ9IseslEwJucwqa+rLYxbxBJQKrMw/c/GFExtLtsvLW9mum+x63fzJ6pHrMjpfC8ovQi54wiGjY2UDNeksROA4mcF82sacVpxViNJE3cpW5CK5JyqjgBwBiuGXmMfhrYGN1f2EU5zx7/CJC80qx0kGTXEPG9Ybru+V7NFulbA/HlaMfSNR9ysdI/lLIB80ADWm6ESMXCgQh6odf/hSFYdC1oqQn+obQv9j6sCuVNkX/aBS4joW84lmP6DBzM8LuiCJeIaKlYVtscbKEsr2cflkrR6n50qNGgtszO/UeycENaWzD+XhS6ww9R8Rx6lex8cmvyftSRsdhmRUpgNkBAqlN+c4zuwDPtjYwTbNgNIQPWmDfP81IsfdMQyG6sC2p4mxx35qTmhSd7eCu1Bq7hepAlVtJ0= X-OriginatorOrg: sct-15-20-4755-11-msonline-outlook-3458f.templateTenant X-MS-Exchange-CrossTenant-Network-Message-Id: d8814eef-8ace-4ae0-04e0-08dc47716b3c X-MS-Exchange-CrossTenant-AuthSource: LV3P220MB1202.NAMP220.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Mar 2024 17:32:43.8190 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0P220MB0785 X-Patchwork-Delegate: kuba@kernel.org From: Min Li Query MAX_FREQ_OFFSET register to set the proper limit. Signed-off-by: Min Li --- drivers/ptp/ptp_clockmatrix.c | 43 +++++++++++++++++++++++++------- drivers/ptp/ptp_clockmatrix.h | 1 + include/linux/mfd/idt8a340_reg.h | 1 + 3 files changed, 36 insertions(+), 9 deletions(-) diff --git a/drivers/ptp/ptp_clockmatrix.c b/drivers/ptp/ptp_clockmatrix.c index 21f3a2c179f5..cd7b3110f8e4 100644 --- a/drivers/ptp/ptp_clockmatrix.c +++ b/drivers/ptp/ptp_clockmatrix.c @@ -1038,7 +1038,7 @@ static int _idtcm_adjtime_deprecated(struct idtcm_channel *channel, s64 delta) s64 now; if (abs(delta) < PHASE_PULL_IN_THRESHOLD_NS_DEPRECATED) { - err = channel->do_phase_pull_in(channel, delta, 0); + err = channel->do_phase_pull_in(channel, delta, channel->caps.max_adj); } else { idtcm->calculate_overhead_flag = 1; @@ -1594,7 +1594,7 @@ static int do_phase_pull_in_sw(struct idtcm_channel *channel, if (abs(delta_ns) < PHASE_PULL_IN_MIN_THRESHOLD_NS) return 0; - if (max_ffo_ppb == 0) + if (max_ffo_ppb == 0 || max_ffo_ppb > PHASE_PULL_IN_MAX_PPB) max_ffo_ppb = PHASE_PULL_IN_MAX_PPB; /* For most cases, keep phase pull-in duration 1 second */ @@ -1880,7 +1880,7 @@ static int idtcm_adjtime(struct ptp_clock_info *ptp, s64 delta) mutex_lock(idtcm->lock); if (abs(delta) < PHASE_PULL_IN_THRESHOLD_NS) { - err = channel->do_phase_pull_in(channel, delta, 0); + err = channel->do_phase_pull_in(channel, delta, channel->caps.max_adj); } else { if (delta >= 0) { ts = ns_to_timespec64(delta); @@ -1927,9 +1927,6 @@ static int idtcm_adjfine(struct ptp_clock_info *ptp, long scaled_ppm) if (channel->phase_pull_in == true) return 0; - if (scaled_ppm == channel->current_freq_scaled_ppm) - return 0; - mutex_lock(idtcm->lock); err = _idtcm_adjfine(channel, scaled_ppm); mutex_unlock(idtcm->lock); @@ -2054,7 +2051,7 @@ static struct ptp_pin_desc pin_config[MAX_TOD][MAX_REF_CLK]; static const struct ptp_clock_info idtcm_caps = { .owner = THIS_MODULE, - .max_adj = 244000, + .max_adj = MAX_FFO_PPB, .n_per_out = 12, .n_ext_ts = MAX_TOD, .n_pins = MAX_REF_CLK, @@ -2071,7 +2068,7 @@ static const struct ptp_clock_info idtcm_caps = { static const struct ptp_clock_info idtcm_caps_deprecated = { .owner = THIS_MODULE, - .max_adj = 244000, + .max_adj = MAX_FFO_PPB, .n_per_out = 12, .n_ext_ts = MAX_TOD, .n_pins = MAX_REF_CLK, @@ -2242,6 +2239,25 @@ static int configure_channel_tod(struct idtcm_channel *channel, u32 index) return 0; } +static int initialize_max_adj(struct idtcm_channel *channel) +{ + struct idtcm *idtcm = channel->idtcm; + u8 ffo_ppm; + int err; + + err = idtcm_read(idtcm, channel->dpll_n, DPLL_MAX_FREQ_OFFSET, + &ffo_ppm, sizeof(ffo_ppm)); + if (err) + return err; + + if (ffo_ppm && ffo_ppm <= (MAX_FFO_PPB / 1000)) + channel->caps.max_adj = ffo_ppm * 1000; + else + channel->caps.max_adj = MAX_FFO_PPB; + + return 0; +} + static int idtcm_enable_channel(struct idtcm *idtcm, u32 index) { struct idtcm_channel *channel; @@ -2285,6 +2301,10 @@ static int idtcm_enable_channel(struct idtcm *idtcm, u32 index) ppd->chan = index; } + err = initialize_max_adj(channel); + if (err) + return err; + err = initialize_dco_operating_mode(channel); if (err) return err; @@ -2437,8 +2457,13 @@ static int idtcm_probe(struct platform_device *pdev) err = idtcm_load_firmware(idtcm, &pdev->dev); - if (err) + if (err) { + if (err == -ENOENT) { + mutex_unlock(idtcm->lock); + return -EPROBE_DEFER; + } dev_warn(idtcm->dev, "loading firmware failed with %d", err); + } wait_for_chip_ready(idtcm); diff --git a/drivers/ptp/ptp_clockmatrix.h b/drivers/ptp/ptp_clockmatrix.h index ad39dc6decdf..31d90b1bf025 100644 --- a/drivers/ptp/ptp_clockmatrix.h +++ b/drivers/ptp/ptp_clockmatrix.h @@ -19,6 +19,7 @@ #define MAX_REF_CLK (16) #define MAX_ABS_WRITE_PHASE_NANOSECONDS (107374182L) +#define MAX_FFO_PPB (244000) #define TOD_MASK_ADDR (0xFFA5) #define DEFAULT_TOD_MASK (0x04) diff --git a/include/linux/mfd/idt8a340_reg.h b/include/linux/mfd/idt8a340_reg.h index b680a0eb5f68..13b36f4858b3 100644 --- a/include/linux/mfd/idt8a340_reg.h +++ b/include/linux/mfd/idt8a340_reg.h @@ -192,6 +192,7 @@ #define DPLL_CTRL_REG_0 0x0002 #define DPLL_CTRL_REG_1 0x0003 #define DPLL_CTRL_REG_2 0x0004 +#define DPLL_MAX_FREQ_OFFSET 0x0025 #define DPLL_WF_TIMER 0x002c #define DPLL_WP_TIMER 0x002e #define DPLL_TOD_SYNC_CFG 0x0031 From patchwork Mon Mar 18 17:32:13 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Min Li X-Patchwork-Id: 13595673 X-Patchwork-Delegate: kuba@kernel.org Received: from NAM02-DM3-obe.outbound.protection.outlook.com (mail-dm3nam02olkn2042.outbound.protection.outlook.com [40.92.43.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 73FB458222; Mon, 18 Mar 2024 17:32:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.92.43.42 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710783170; cv=fail; b=G6F78ErDK/hxJ5V1uzWm8AOiGhQBNsahqzigGKhBbhdk2yEvlffivuKvIdx4M1S1S2ni59FhDzLZGXGdZ30mPHsaIYTN4LWg/nxbu7Lw9dcZmd1y52hk7Syp+yIYxcmQZdi2s6uLkiH7GpBexCQjol+VvgVknavaPh/F+6ZDsVA= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710783170; c=relaxed/simple; bh=G5yuoFn4CqSSLUoKUQSfijFjkAWJVZyf9iameQLSATM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=n+htp/OKLegB0gVNZuC4EZUYgmoF/JpgLZq3EbR4RRLGcuQkFxZ6xVu31GRYAQrVYxZ4JZQnIi8YOYfhTHAf2mhMgce4wvsDNdV0JrCQY5hRSu9szdP3V/TgbMMEhYcAjG/tTNuzRv2SdeGy+zL/d/X1nbXvVxrQx9mSr18uoE8= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=hotmail.com; spf=pass smtp.mailfrom=hotmail.com; dkim=pass (2048-bit key) header.d=hotmail.com header.i=@hotmail.com header.b=MiJmhLYG; arc=fail smtp.client-ip=40.92.43.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=hotmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=hotmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=hotmail.com header.i=@hotmail.com header.b="MiJmhLYG" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=k0XESvwAPB2sWWZwytFd+7RGFMrvBt7BcI2f6aw5UlR5uA//VXYimyrT0k7sUylPNOWj3s70vaSPKXcETbPQIJex4X9wGymhkpZM3H+Oe7s4NvwVAyFWHVAs7b3bhxOgbPrtzH8XRFQ3EX6fPxtPJGSvxizke6b5CPFHlQ+0rdBimb44bmU3NJUHTtuwHtJeHnY26VR+/PeJPDDjpnRrlVsUxYint2zayZIR172HlUl8PV0m4tgWXXJ+eIq6Ewj6tFe9dHUTZcjwF5I/MDw9DpuG55pScIgNOscU5hdAd0dmo9xQgVyb16HEoDgFuN9XxdShZjEozpvZDUNn3YlwVw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Jg7b6p+xqD2UoF2S3eJvncZGfTYlOgCJeL446xehAFE=; b=h7bM6rhgo539eSH4SgT2l8hq8F5KQcgGukbNypIe8y7KA23xK+1uIKL5hsnJ+8fCB08HB0Ik11luvbU20uj9AR4gyX7Pkw/slxmkjozVEOAvClJvbxALAoyMgbRvaQDsLRg08XhmXYIK+GFV5Vh/nmVHfmsQtnkdHfGJ/8EwYV8WLMj5rhy3Hucycfr5NVayfpk0PjwfeRO/qv4Q6Ih9diGnZa673Ix+ZcvEwZw9SAhGqHLDpBXW2BhoJhpAfOjZTtv1UK+siFre1umNolpvYZ7uvjKvXT7kWRHH/ehB/AayKNSPuVilKFLBrp5cFaYpL30oXxG6C8G8adtTlGp/0g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hotmail.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Jg7b6p+xqD2UoF2S3eJvncZGfTYlOgCJeL446xehAFE=; b=MiJmhLYG4XmKw9XrOcObsfcbNruF8CJxIMtNZL99rMU0jYDi/KZV6HedMaHecTYmVZfm7jpE2BCMwZN2CfaZhnAZDbICZXfUGWwqL/f6NFHwZEenmr0p3R1xHXfdT5p1IOZGv2WiTCe/BgNuHp7abVYY3FyEktKhSANUQ/JkwPPJXfui47ikaXzGjO+0VQOFzRBRvqOmJjJiutbO7eeZecFYm615Gfjz3dUcd2GmDDEGqASEtFuXmbF7fFYHQkBnjxgLqu8ytd5IXSHH+A1qcap+sqZKoUyDQsnB0p+hhI1cJUbHoFbPzx6AIYLDrprn3/wp+5anzluGXxvfS4HHow== Received: from LV3P220MB1202.NAMP220.PROD.OUTLOOK.COM (2603:10b6:408:1ac::6) by SJ0P220MB0785.NAMP220.PROD.OUTLOOK.COM (2603:10b6:a03:408::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7386.26; Mon, 18 Mar 2024 17:32:45 +0000 Received: from LV3P220MB1202.NAMP220.PROD.OUTLOOK.COM ([fe80::57aa:102b:db4b:e05]) by LV3P220MB1202.NAMP220.PROD.OUTLOOK.COM ([fe80::57aa:102b:db4b:e05%7]) with mapi id 15.20.7386.025; Mon, 18 Mar 2024 17:32:45 +0000 From: Min Li To: richardcochran@gmail.com, lee@kernel.org Cc: linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Min Li Subject: [PATCH net-next v7 5/5] ptp: clockmatrix: move register and firmware related definition to idt8a340_reg.h Date: Mon, 18 Mar 2024 13:32:13 -0400 Message-ID: X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240318173213.28475-1-lnimi@hotmail.com> References: <20240318173213.28475-1-lnimi@hotmail.com> X-TMN: [tMzmzpmL3hIupQ9yZIbLiCD7YxBNZC0m] X-ClientProxiedBy: YQBPR0101CA0070.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:c00:1::47) To LV3P220MB1202.NAMP220.PROD.OUTLOOK.COM (2603:10b6:408:1ac::6) X-Microsoft-Original-Message-ID: <20240318173213.28475-6-lnimi@hotmail.com> Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: LV3P220MB1202:EE_|SJ0P220MB0785:EE_ X-MS-Office365-Filtering-Correlation-Id: e9e1f5d4-004d-4dc5-0f87-08dc47716c55 X-MS-Exchange-SLBlob-MailProps: Cq7lScuPrnr9wYTvfIwcniUcOEk7m2BTqhTnwCwXm8cdX/aiDBq5yTdEXBuT1V3OPXk/iGS7qh07A5GmT9f6juCftcYgvNx4JS29NC3Ynm4/xCaPsH5IAWHgMtQuXomTEPs+pkAKNXGGqVUAHtbEUbz1A2yDbRiZeQISuh4YDHkOzIvBhEeSsnQDzZz90ue9v2ullB9nscg1EmeRgGvkY4vbVvNbDiNuo2hM8nZkM6GoN8YGg/bnbCv8OlFig9jzXnfuS6FUGyhqd6SlcP/B7ln/4s1YYfeYsta1/nP4iXsBLbc/pZWG2hxLIiho+cI/vLiDd3PID+nc7ZZmzBxk19X6dnA1RV8UsBvHY3gyhz/M4rq4tIKQ7R+Y8K0ZXB/iFF9XpmolXXEJUMHloSctxFKAs+xB0zJjr96+ibmCTZ+DZ5I/somxD8MgQ8TeLIp4YOh+nw7LMqn5FkWp4/bHwvGxLPmjhG4YjuxFGlK9FDd2aKNDIxPQrbHgqigh+iGQtoc1eUKTcb/2J+NUm/3vdDfDsc/TY0KtIxZcfil0ly/FXic2iP8b9VB+38x0lN8ZKU8jLw7h+79gVj2yBdmNuAoYLx2JJsYMl5rEIM1j7S2XlYdp5LI48QgdMBjSvdcnk/+BgtC4QVGB5nKlGaCMf1VySrhNNKf+HO7E4D6oKOSKyI90ZD+qAazBx5dhnrWfAUJ1+AG1+3RY6LvwEvYtF/8QLCFZeDhMmdZA0qoFySdGr4FpqT3iQPUASaWjLZ647EE6xfJTxhI= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: rtva2Oj4u/4yu5r2QqdLQJ3mVjc7f+Y5McGjQYpjGwTCdTcHdAaGLKWEaCxtQTB2YXvH5Je1X/Rv4yRZYIyr4QJ1NHiIEB/jWwkcocudC5RJMvSkh2F5SUai19l6znwUuW8wpOqnoaV5EXoR7HASoKTexge1GHD6vK3TcUFmLnlxyNtARke4UnBolYoQYvDE/iNwAgZGMXroVROZq7mDpdDVoRnxl+n7nq9MiVJoqMP/bPJBroOSIuhTOxZ2zZ+eHmsj9LmHNJp/d85QtAniSTGVIdSNMSe38qhuK1ayKWnewOkIC6YSNS0ETdhNqLe5yq7iLcieFBFN0LtHglS5+Ldkndb5/oPvg4x+Ji80gfmV5I8ZZbTL4cS+ReyADvHr26YJAT87MAYHwAh81QjZrd+jjyV8Uq2m7Wh3uvaZ6UZXdd82iIM5Oa0PIEnIeyFEnaCoe0iHLol9i5wXKkcmrfXcdMit/UdnfZcBFwufwIyE2rLZb+L1SD73TkUi6Dqfk8V+pJ6rSClK0r1t+v6SKP7fX2vFYHg0Tu4N8tzefokeRl2FnaKIc2gz8luiSvGC X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: zFXzg/uiM4Ltk45a5crToygr0kUD5eZP21JmcYjPsH+F18gNgkpFFKx6IvqvqwPiJAuVBydQq0HgwlXBqkBsD7vsgL3P/Va47yBBAgE+DT7CRidYgZna0BxyLlzQlYwr1lnZsuJt8+uxvSsuydqzebZ/WE9vqhDBSPzdWQLmgeoUtCT1paVvQqpnb66o96qTzSVd+0wt44uPs0Jd7VCwxhoSwp0Lt3AB6r0czoQWjtYDNscrJlXDtJIqEe2xOmGL39SEaWiseArdoeVZ3TE2Pczr9WM0G8RQcgDV96BkslXBhDbyEPbJ9rOU53kEUXS6Bsm8wzSKDKgDciKaPoygCJY/rjo/XiLjoDaJVha5FQfhGYp464JxUTxvT8D6vxM0jiw/BIMay7bBrvJaEBdoi8JpTkcaVzG+cV7szQP1Kq8kUs/hwG6KjxOT4LDIZc0AIVkhVSudHKWRzLj9N3cavCXDxgV2um1OLySwYTzqTIzSY/rUtBg2m7grMsAAQDnzA9nhg2xRuM6tTF05Q+1NJ01fBhvXlQM0mZUfYbPLtxqWdhjDM8LVp3OzZYLwF+9gK530+ClIDVCz3aEOoJr80shQG1+yaLleOD2GCHTTCVMsc9wIOJH4JOAsHjoKAJRu815JcZ7To1t7VBNTLsNXae4K+9rAnShKvSU7eqXj7QkYf8kb4EDJsdsj+yUbeUGokd1eukb5RW9ZTZ6fLSjt3mjQIk7MS81n/miP2y+44eyKFZJmP09+gu/ee1T3kFvH21f2VCOSgdQYi+h5wJtbLTqCzvsi1KQblZq9evMejKKBy69LcIrNtDcbokXiHiyALAXxEefi3OiHE4ZvYnFUssvCgmQcHS4UA5BIyl0qJ/roTCdbI2S8h5J2XvULLYgeeuZq5y7n2zVINn1JF4OLQQW6mMPvBz5zVwFupGyFg1/9ZdF3EcsZymLhjrzc3zTspAYOLA4e/7sb+kBeuYWM9q/e7+z5Tfl1pgbYDTdcH2YLt/eDpJdL0AEg7N4R/CEPt4k9GgeK705T6LqVO3liGs/usd76IOlkJBr5u0JO9xvmDnSa+lUiItA3wB5TOe3qiqsGi5VR75tX6f4UYfUmRCN8J0iyx9xi2m7te13s/PHQ/s+0kt2nN/6tembeK+sKzXEjkwKsIxFDldP2ch87oO/29WdFNIQTmVNx6mUokfaCsvOBeLqWAvy4Z8vWh60xgozHX+4b3Q0Ef5uENaaDvmtmViA2nCmmALQfxnWUg20= X-OriginatorOrg: sct-15-20-4755-11-msonline-outlook-3458f.templateTenant X-MS-Exchange-CrossTenant-Network-Message-Id: e9e1f5d4-004d-4dc5-0f87-08dc47716c55 X-MS-Exchange-CrossTenant-AuthSource: LV3P220MB1202.NAMP220.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Mar 2024 17:32:45.6832 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0P220MB0785 X-Patchwork-Delegate: kuba@kernel.org From: Min Li This change is needed by rsmu driver, which will be submitted separately from mfd tree. Signed-off-by: Min Li --- drivers/ptp/ptp_clockmatrix.h | 33 --------- include/linux/mfd/idt8a340_reg.h | 121 +++++++++++++++++++++++++++++-- 2 files changed, 113 insertions(+), 41 deletions(-) diff --git a/drivers/ptp/ptp_clockmatrix.h b/drivers/ptp/ptp_clockmatrix.h index 31d90b1bf025..f041c7999ddc 100644 --- a/drivers/ptp/ptp_clockmatrix.h +++ b/drivers/ptp/ptp_clockmatrix.h @@ -21,32 +21,6 @@ #define MAX_ABS_WRITE_PHASE_NANOSECONDS (107374182L) #define MAX_FFO_PPB (244000) -#define TOD_MASK_ADDR (0xFFA5) -#define DEFAULT_TOD_MASK (0x04) - -#define SET_U16_LSB(orig, val8) (orig = (0xff00 & (orig)) | (val8)) -#define SET_U16_MSB(orig, val8) (orig = (0x00ff & (orig)) | (val8 << 8)) - -#define TOD0_PTP_PLL_ADDR (0xFFA8) -#define TOD1_PTP_PLL_ADDR (0xFFA9) -#define TOD2_PTP_PLL_ADDR (0xFFAA) -#define TOD3_PTP_PLL_ADDR (0xFFAB) - -#define TOD0_OUT_ALIGN_MASK_ADDR (0xFFB0) -#define TOD1_OUT_ALIGN_MASK_ADDR (0xFFB2) -#define TOD2_OUT_ALIGN_MASK_ADDR (0xFFB4) -#define TOD3_OUT_ALIGN_MASK_ADDR (0xFFB6) - -#define DEFAULT_OUTPUT_MASK_PLL0 (0x003) -#define DEFAULT_OUTPUT_MASK_PLL1 (0x00c) -#define DEFAULT_OUTPUT_MASK_PLL2 (0x030) -#define DEFAULT_OUTPUT_MASK_PLL3 (0x0c0) - -#define DEFAULT_TOD0_PTP_PLL (0) -#define DEFAULT_TOD1_PTP_PLL (1) -#define DEFAULT_TOD2_PTP_PLL (2) -#define DEFAULT_TOD3_PTP_PLL (3) - #define PHASE_PULL_IN_THRESHOLD_NS_DEPRECATED (150000) #define PHASE_PULL_IN_THRESHOLD_NS (15000) #define TOD_WRITE_OVERHEAD_COUNT_MAX (2) @@ -121,11 +95,4 @@ struct idtcm { ktime_t start_time; }; -struct idtcm_fwrc { - u8 hiaddr; - u8 loaddr; - u8 value; - u8 reserved; -} __packed; - #endif /* PTP_IDTCLOCKMATRIX_H */ diff --git a/include/linux/mfd/idt8a340_reg.h b/include/linux/mfd/idt8a340_reg.h index 13b36f4858b3..5aeb0820f876 100644 --- a/include/linux/mfd/idt8a340_reg.h +++ b/include/linux/mfd/idt8a340_reg.h @@ -116,16 +116,41 @@ #define OTP_SCSR_CONFIG_SELECT 0x0022 #define STATUS 0x2010c03c -#define DPLL0_STATUS 0x0018 -#define DPLL1_STATUS 0x0019 -#define DPLL2_STATUS 0x001a -#define DPLL3_STATUS 0x001b -#define DPLL4_STATUS 0x001c -#define DPLL5_STATUS 0x001d -#define DPLL6_STATUS 0x001e -#define DPLL7_STATUS 0x001f +#define IN0_MON_STATUS 0x0008 +#define IN1_MON_STATUS 0x0009 +#define IN2_MON_STATUS 0x000a +#define IN3_MON_STATUS 0x000b +#define IN4_MON_STATUS 0x000c +#define IN5_MON_STATUS 0x000d +#define IN6_MON_STATUS 0x000e +#define IN7_MON_STATUS 0x000f +#define IN8_MON_STATUS 0x0010 +#define IN9_MON_STATUS 0x0011 +#define IN10_MON_STATUS 0x0012 +#define IN11_MON_STATUS 0x0013 +#define IN12_MON_STATUS 0x0014 +#define IN13_MON_STATUS 0x0015 +#define IN14_MON_STATUS 0x0016 +#define IN15_MON_STATUS 0x0017 +#define DPLL0_STATUS 0x0018 +#define DPLL1_STATUS 0x0019 +#define DPLL2_STATUS 0x001a +#define DPLL3_STATUS 0x001b +#define DPLL4_STATUS 0x001c +#define DPLL5_STATUS 0x001d +#define DPLL6_STATUS 0x001e +#define DPLL7_STATUS 0x001f #define DPLL_SYS_STATUS 0x0020 #define DPLL_SYS_APLL_STATUS 0x0021 +#define DPLL0_REF_STATUS 0x0022 +#define DPLL1_REF_STATUS 0x0023 +#define DPLL2_REF_STATUS 0x0024 +#define DPLL3_REF_STATUS 0x0025 +#define DPLL4_REF_STATUS 0x0026 +#define DPLL5_REF_STATUS 0x0027 +#define DPLL6_REF_STATUS 0x0028 +#define DPLL7_REF_STATUS 0x0029 +#define DPLL_SYS_REF_STATUS 0x002a #define DPLL0_FILTER_STATUS 0x0044 #define DPLL1_FILTER_STATUS 0x004c #define DPLL2_FILTER_STATUS 0x0054 @@ -192,6 +217,25 @@ #define DPLL_CTRL_REG_0 0x0002 #define DPLL_CTRL_REG_1 0x0003 #define DPLL_CTRL_REG_2 0x0004 +#define DPLL_REF_PRIORITY_0 0x000f +#define DPLL_REF_PRIORITY_1 0x0010 +#define DPLL_REF_PRIORITY_2 0x0011 +#define DPLL_REF_PRIORITY_3 0x0012 +#define DPLL_REF_PRIORITY_4 0x0013 +#define DPLL_REF_PRIORITY_5 0x0014 +#define DPLL_REF_PRIORITY_6 0x0015 +#define DPLL_REF_PRIORITY_7 0x0016 +#define DPLL_REF_PRIORITY_8 0x0017 +#define DPLL_REF_PRIORITY_9 0x0018 +#define DPLL_REF_PRIORITY_10 0x0019 +#define DPLL_REF_PRIORITY_11 0x001a +#define DPLL_REF_PRIORITY_12 0x001b +#define DPLL_REF_PRIORITY_13 0x001c +#define DPLL_REF_PRIORITY_14 0x001d +#define DPLL_REF_PRIORITY_15 0x001e +#define DPLL_REF_PRIORITY_16 0x001f +#define DPLL_REF_PRIORITY_17 0x0020 +#define DPLL_REF_PRIORITY_18 0x0021 #define DPLL_MAX_FREQ_OFFSET 0x0025 #define DPLL_WF_TIMER 0x002c #define DPLL_WP_TIMER 0x002e @@ -450,6 +494,10 @@ #define OUTPUT_TDC_1 0x2010cd08 #define OUTPUT_TDC_2 0x2010cd10 #define OUTPUT_TDC_3 0x2010cd18 + +#define OUTPUT_TDC_CTRL_4 0x0006 +#define OUTPUT_TDC_CTRL_4_V520 0x0007 + #define INPUT_TDC 0x2010cd20 #define SCRATCH 0x2010cf50 @@ -668,6 +716,28 @@ #define DPLL_STATE_MASK (0xf) #define DPLL_STATE_SHIFT (0x0) +/* Bit definitions for the DPLL0_REF_STAT register */ +#define DPLL_REF_STATUS_MASK (0x1f) + +/* Bit definitions for the DPLL register */ +#define DPLL_REF_PRIORITY_ENABLE_SHIFT (0) +#define DPLL_REF_PRIORITY_REF_SHIFT (1) +#define DPLL_REF_PRIORITY_GROUP_NUMBER_SHIFT (6) + +/* Bit definitions for the IN0_MON_STATUS register */ +#define IN_MON_STATUS_LOS_SHIFT (0) +#define IN_MON_STATUS_NO_ACT_SHIFT (1) +#define IN_MON_STATUS_FFO_LIMIT_SHIFT (2) + +#define DEFAULT_PRIORITY_GROUP (0) +#define MAX_PRIORITY_GROUP (3) + +#define MAX_REF_PRIORITIES (19) + +#define MAX_ELECTRICAL_REFERENCES (16) + +#define NO_REFERENCE (0x1f) + /* * Return register address based on passed in firmware version */ @@ -778,4 +848,39 @@ enum scsr_tod_write_type_sel { SCSR_TOD_WR_TYPE_SEL_DELTA_MINUS = 2, SCSR_TOD_WR_TYPE_SEL_MAX = SCSR_TOD_WR_TYPE_SEL_DELTA_MINUS, }; + +/* firmware interface */ +struct idtcm_fwrc { + u8 hiaddr; + u8 loaddr; + u8 value; + u8 reserved; +} __packed; + +#define SET_U16_LSB(orig, val8) (orig = (0xff00 & (orig)) | (val8)) +#define SET_U16_MSB(orig, val8) (orig = (0x00ff & (orig)) | (val8 << 8)) + +#define TOD_MASK_ADDR (0xFFA5) +#define DEFAULT_TOD_MASK (0x04) + +#define TOD0_PTP_PLL_ADDR (0xFFA8) +#define TOD1_PTP_PLL_ADDR (0xFFA9) +#define TOD2_PTP_PLL_ADDR (0xFFAA) +#define TOD3_PTP_PLL_ADDR (0xFFAB) + +#define TOD0_OUT_ALIGN_MASK_ADDR (0xFFB0) +#define TOD1_OUT_ALIGN_MASK_ADDR (0xFFB2) +#define TOD2_OUT_ALIGN_MASK_ADDR (0xFFB4) +#define TOD3_OUT_ALIGN_MASK_ADDR (0xFFB6) + +#define DEFAULT_OUTPUT_MASK_PLL0 (0x003) +#define DEFAULT_OUTPUT_MASK_PLL1 (0x00c) +#define DEFAULT_OUTPUT_MASK_PLL2 (0x030) +#define DEFAULT_OUTPUT_MASK_PLL3 (0x0c0) + +#define DEFAULT_TOD0_PTP_PLL (0) +#define DEFAULT_TOD1_PTP_PLL (1) +#define DEFAULT_TOD2_PTP_PLL (2) +#define DEFAULT_TOD3_PTP_PLL (3) + #endif