linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Rasmus Villemoes <linux@rasmusvillemoes.dk>
To: Qiang Zhao <qiang.zhao@nxp.com>, Li Yang <leoyang.li@nxp.com>,
	Christophe Leroy <christophe.leroy@c-s.fr>
Cc: linuxppc-dev@lists.ozlabs.org,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, Scott Wood <oss@buserror.net>,
	Timur Tabi <timur@kernel.org>,
	Rasmus Villemoes <linux@rasmusvillemoes.dk>
Subject: [PATCH v6 07/49] soc: fsl: qe: qe.c: guard use of pvr_version_is() with CONFIG_PPC32
Date: Thu, 28 Nov 2019 15:55:12 +0100	[thread overview]
Message-ID: <20191128145554.1297-8-linux@rasmusvillemoes.dk> (raw)
In-Reply-To: <20191128145554.1297-1-linux@rasmusvillemoes.dk>

Commit e5c5c8d23fef (soc/fsl/qe: only apply QE_General4 workaround on
affected SoCs) introduced use of pvr_version_is(), saying

    The QE_General4 workaround is only valid for the MPC832x and MPC836x
    SoCs. The other SoCs that embed a QUICC engine are not affected by this
    hardware bug and thus can use the computed divisors (this was
    successfully tested on the T1040).

I'm reading the above as saying that the errata does not apply to the
ARM-based SOCs with QUICC engine. In any case, use of pvr_version_is()
must be guarded by CONFIG_PPC32 before we can remove the PPC32
dependency from CONFIG_QUICC_ENGINE, so introduce qe_general4_errata()
to keep the necessary #ifdeffery localized to a trivial helper.

Reviewed-by: Timur Tabi <timur@kernel.org>
Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
---
 drivers/soc/fsl/qe/qe.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/drivers/soc/fsl/qe/qe.c b/drivers/soc/fsl/qe/qe.c
index 85737e6f5b62..1d8aa62c7ddf 100644
--- a/drivers/soc/fsl/qe/qe.c
+++ b/drivers/soc/fsl/qe/qe.c
@@ -197,6 +197,14 @@ EXPORT_SYMBOL(qe_get_brg_clk);
 #define PVR_VER_836x	0x8083
 #define PVR_VER_832x	0x8084
 
+static bool qe_general4_errata(void)
+{
+#ifdef CONFIG_PPC32
+	return pvr_version_is(PVR_VER_836x) || pvr_version_is(PVR_VER_832x);
+#endif
+	return false;
+}
+
 /* Program the BRG to the given sampling rate and multiplier
  *
  * @brg: the BRG, QE_BRG1 - QE_BRG16
@@ -223,7 +231,7 @@ int qe_setbrg(enum qe_clock brg, unsigned int rate, unsigned int multiplier)
 	/* Errata QE_General4, which affects some MPC832x and MPC836x SOCs, says
 	   that the BRG divisor must be even if you're not using divide-by-16
 	   mode. */
-	if (pvr_version_is(PVR_VER_836x) || pvr_version_is(PVR_VER_832x))
+	if (qe_general4_errata())
 		if (!div16 && (divisor & 1) && (divisor > 3))
 			divisor++;
 
-- 
2.23.0


  parent reply	other threads:[~2019-11-28 14:57 UTC|newest]

Thread overview: 59+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-11-28 14:55 [PATCH v6 00/49] QUICC Engine support on ARM, ARM64, PPC64 Rasmus Villemoes
2019-11-28 14:55 ` [PATCH v6 01/49] soc: fsl: qe: remove space-before-tab Rasmus Villemoes
2019-11-28 14:55 ` [PATCH v6 02/49] soc: fsl: qe: drop volatile qualifier of struct qe_ic::regs Rasmus Villemoes
2019-11-28 14:55 ` [PATCH v6 03/49] soc: fsl: qe: rename qe_(clr/set/clrset)bit* helpers Rasmus Villemoes
2019-11-28 14:55 ` [PATCH v6 04/49] soc: fsl: qe: introduce qe_io{read,write}* wrappers Rasmus Villemoes
2021-01-19 17:33   ` Christophe Leroy
2021-01-19 17:46     ` Li Yang
2019-11-28 14:55 ` [PATCH v6 05/49] soc: fsl: qe: avoid ppc-specific io accessors Rasmus Villemoes
2019-11-28 14:55 ` [PATCH v6 06/49] soc: fsl: qe: replace spin_event_timeout by readx_poll_timeout_atomic Rasmus Villemoes
2019-11-28 14:55 ` Rasmus Villemoes [this message]
2019-11-28 14:55 ` [PATCH v6 08/49] soc: fsl: qe: drop unneeded #includes Rasmus Villemoes
2019-11-28 14:55 ` [PATCH v6 09/49] soc: fsl: qe: drop assign-only high_active in qe_ic_init Rasmus Villemoes
2019-11-28 14:55 ` [PATCH v6 10/49] soc: fsl: qe: remove pointless sysfs registration in qe_ic.c Rasmus Villemoes
2019-11-28 14:55 ` [PATCH v6 11/49] soc: fsl: qe: use qe_ic_cascade_{low,high}_mpic also on 83xx Rasmus Villemoes
2019-11-28 14:55 ` [PATCH v6 12/49] soc: fsl: qe: move calls of qe_ic_init out of arch/powerpc/ Rasmus Villemoes
2019-11-28 14:55 ` [PATCH v6 13/49] powerpc/83xx: remove mpc83xx_ipic_and_qe_init_IRQ Rasmus Villemoes
2019-11-28 14:55 ` [PATCH v6 14/49] powerpc/85xx: remove mostly pointless mpc85xx_qe_init() Rasmus Villemoes
2019-11-28 14:55 ` [PATCH v6 15/49] soc: fsl: qe: move qe_ic_cascade_* functions to qe_ic.c Rasmus Villemoes
2019-11-28 14:55 ` [PATCH v6 16/49] soc: fsl: qe: rename qe_ic_cascade_low_mpic -> qe_ic_cascade_low Rasmus Villemoes
2019-11-28 14:55 ` [PATCH v6 17/49] soc: fsl: qe: remove unused qe_ic_set_* functions Rasmus Villemoes
2019-11-28 14:55 ` [PATCH v6 18/49] soc: fsl: qe: don't use NO_IRQ in qe_ic.c Rasmus Villemoes
2019-11-28 14:55 ` [PATCH v6 19/49] soc: fsl: qe: make qe_ic_get_{low,high}_irq static Rasmus Villemoes
2019-11-28 14:55 ` [PATCH v6 20/49] soc: fsl: qe: simplify qe_ic_init() Rasmus Villemoes
2019-11-28 14:55 ` [PATCH v6 21/49] soc: fsl: qe: merge qe_ic.h headers into qe_ic.c Rasmus Villemoes
2019-11-28 14:55 ` [PATCH v6 22/49] soc: fsl: qe: qe.c: use of_property_read_* helpers Rasmus Villemoes
2019-11-28 14:55 ` [PATCH v6 23/49] soc: fsl: qe: qe_io.c: don't open-code of_parse_phandle() Rasmus Villemoes
2019-11-28 14:55 ` [PATCH v6 24/49] soc: fsl: qe: qe_io.c: access device tree property using be32_to_cpu Rasmus Villemoes
2019-11-28 14:55 ` [PATCH v6 25/49] soc: fsl: qe: qe_io.c: use of_property_read_u32() in par_io_init() Rasmus Villemoes
2019-11-28 14:55 ` [PATCH v6 26/49] soc: fsl: move cpm.h from powerpc/include/asm to include/soc/fsl Rasmus Villemoes
2019-11-28 14:55 ` [PATCH v6 27/49] soc/fsl/qe/qe.h: update include path for cpm.h Rasmus Villemoes
2019-11-28 14:55 ` [PATCH v6 28/49] serial: ucc_uart: explicitly include soc/fsl/cpm.h Rasmus Villemoes
2019-11-28 14:55 ` [PATCH v6 29/49] serial: ucc_uart: replace ppc-specific IO accessors Rasmus Villemoes
2019-11-28 14:55 ` [PATCH v6 30/49] serial: ucc_uart: factor out soft_uart initialization Rasmus Villemoes
2019-11-28 14:55 ` [PATCH v6 31/49] serial: ucc_uart: stub out soft_uart_init for !CONFIG_PPC32 Rasmus Villemoes
2019-11-28 14:55 ` [PATCH v6 32/49] serial: ucc_uart: use of_property_read_u32() in ucc_uart_probe() Rasmus Villemoes
2019-11-28 14:55 ` [PATCH v6 33/49] serial: ucc_uart: limit brg-frequency workaround to PPC32 Rasmus Villemoes
2019-11-28 14:55 ` [PATCH v6 34/49] serial: ucc_uart: access __be32 field using be32_to_cpu Rasmus Villemoes
2019-11-28 14:55 ` [PATCH v6 35/49] soc: fsl: qe: change return type of cpm_muram_alloc() to s32 Rasmus Villemoes
2019-11-28 14:55 ` [PATCH v6 36/49] soc: fsl: qe: make cpm_muram_free() return void Rasmus Villemoes
2019-11-28 14:55 ` [PATCH v6 37/49] soc: fsl: qe: make cpm_muram_free() ignore a negative offset Rasmus Villemoes
2019-11-28 14:55 ` [PATCH v6 38/49] soc: fsl: qe: drop broken lazy call of cpm_muram_init() Rasmus Villemoes
2019-11-28 14:55 ` [PATCH v6 39/49] soc: fsl: qe: refactor cpm_muram_alloc_common to prevent BUG on error path Rasmus Villemoes
2019-11-28 14:55 ` [PATCH v6 40/49] soc: fsl: qe: avoid IS_ERR_VALUE in ucc_slow.c Rasmus Villemoes
2019-11-28 14:55 ` [PATCH v6 41/49] soc: fsl: qe: drop use of IS_ERR_VALUE in qe_sdma_init() Rasmus Villemoes
2019-11-28 14:55 ` [PATCH v6 42/49] soc: fsl: qe: drop pointless check " Rasmus Villemoes
2019-11-28 14:55 ` [PATCH v6 43/49] soc: fsl: qe: avoid IS_ERR_VALUE in ucc_fast.c Rasmus Villemoes
2019-11-28 14:55 ` [PATCH v6 44/49] net/wan/fsl_ucc_hdlc: avoid use of IS_ERR_VALUE() Rasmus Villemoes
2019-12-02 22:51   ` Leo Li
2019-12-02 23:09     ` David Miller
2019-11-28 14:55 ` [PATCH v6 45/49] net/wan/fsl_ucc_hdlc: fix reading of __be16 registers Rasmus Villemoes
2019-11-28 14:55 ` [PATCH v6 46/49] net/wan/fsl_ucc_hdlc: reject muram offsets above 64K Rasmus Villemoes
2019-11-28 14:55 ` [PATCH v6 47/49] net: ethernet: freescale: make UCC_GETH explicitly depend on PPC32 Rasmus Villemoes
2019-11-28 14:55 ` [PATCH v6 48/49] soc: fsl: qe: remove unused #include of asm/irq.h from ucc.c Rasmus Villemoes
2019-11-28 14:55 ` [PATCH v6 49/49] soc: fsl: qe: remove PPC32 dependency from CONFIG_QUICC_ENGINE Rasmus Villemoes
2019-12-01 16:10 ` [PATCH v6 00/49] QUICC Engine support on ARM, ARM64, PPC64 Timur Tabi
2019-12-02  8:12   ` Rasmus Villemoes
2019-12-02 22:56     ` Li Yang
2019-12-02 23:09       ` David Miller
2019-12-09 20:18 ` Li Yang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20191128145554.1297-8-linux@rasmusvillemoes.dk \
    --to=linux@rasmusvillemoes.dk \
    --cc=christophe.leroy@c-s.fr \
    --cc=leoyang.li@nxp.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=oss@buserror.net \
    --cc=qiang.zhao@nxp.com \
    --cc=timur@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).