Commit 3833d0ab authored by Alex Elder's avatar Alex Elder Committed by David S. Miller
Browse files

net: ipa: disable misc clock gating for IPA v3.1

For IPA v3.1, a workaround is needed to disable gating on a MISC
clock.  I have no further explanation, but this is what the
downstream code (msm-4.4) does.

This was suggested in a patch from AngeloGioacchino Del Regno.

Link: https://lore.kernel.org/netdev/20210211175015.200772-2-angelogioacchino.delregno@somainline.org


Signed-off-by: default avatarAlex Elder <elder@linaro.org>
Acked-by: AngeloGioacchino Del Regno
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent c31d7349
Loading
Loading
Loading
Loading
+9 −5
Original line number Diff line number Diff line
@@ -400,16 +400,20 @@ static void ipa_hardware_config(struct ipa *ipa, const struct ipa_data *data)

	/* Implement some hardware workarounds */
	if (version >= IPA_VERSION_4_0 && version < IPA_VERSION_4_5) {
		/* Enable open global clocks (not needed for IPA v4.5) */
		val = GLOBAL_FMASK;
		val |= GLOBAL_2X_CLK_FMASK;
		iowrite32(val, ipa->reg_virt + IPA_REG_CLKON_CFG_OFFSET);

		/* Disable PA mask to allow HOLB drop */
		val = ioread32(ipa->reg_virt + IPA_REG_TX_CFG_OFFSET);
		val &= ~PA_MASK_EN_FMASK;
		iowrite32(val, ipa->reg_virt + IPA_REG_TX_CFG_OFFSET);

		/* Enable open global clocks in the CLKON configuration */
		val = GLOBAL_FMASK | GLOBAL_2X_CLK_FMASK;
	} else if (version == IPA_VERSION_3_1) {
		val = MISC_FMASK;	/* Disable MISC clock gating */
	} else {
		val = 0;		/* No CLKON configuration needed */
	}
	if (val)
		iowrite32(val, ipa->reg_virt + IPA_REG_CLKON_CFG_OFFSET);

	ipa_hardware_config_comp(ipa);