Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c052a22e authored by Grant Likely's avatar Grant Likely
Browse files

[POWERPC] bestcomm: Restrict bus prefetch bugfix to original mpc5200 silicon.



Only the MPC5200 needs this bug fix.  MPC5200B is okay.

Signed-off-by: default avatarGrant Likely <grant.likely@secretlab.ca>
parent 2fb59d62
Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
@@ -269,6 +269,7 @@ bcom_engine_init(void)
	int task;
	phys_addr_t tdt_pa, ctx_pa, var_pa, fdt_pa;
	unsigned int tdt_size, ctx_size, var_size, fdt_size;
	u16 regval;

	/* Allocate & clear SRAM zones for FDT, TDTs, contexts and vars/incs */
	tdt_size = BCOM_MAX_TASKS * sizeof(struct bcom_tdt);
@@ -319,9 +320,11 @@ bcom_engine_init(void)
	/* Init 'always' initiator */
	out_8(&bcom_eng->regs->ipr[BCOM_INITIATOR_ALWAYS], BCOM_IPR_ALWAYS);

	/* Disable COMM Bus Prefetch, apparently it's not reliable yet */
	/* FIXME: This should be done on 5200 and not 5200B ... */
	out_be16(&bcom_eng->regs->PtdCntrl, in_be16(&bcom_eng->regs->PtdCntrl) | 1);
	/* Disable COMM Bus Prefetch on the original 5200; it's broken */
	if ((mfspr(SPRN_SVR) & MPC5200_SVR_MASK) == MPC5200_SVR) {
		regval = in_be16(&bcom_eng->regs->PtdCntrl);
		out_be16(&bcom_eng->regs->PtdCntrl,  regval | 1);
	}

	/* Init lock */
	spin_lock_init(&bcom_eng->lock);
+5 −0
Original line number Diff line number Diff line
@@ -20,6 +20,11 @@

#include <linux/suspend.h>

/* Variants of the 5200(B) */
#define MPC5200_SVR		0x80110010
#define MPC5200_SVR_MASK	0xfffffff0
#define MPC5200B_SVR		0x80110020
#define MPC5200B_SVR_MASK	0xfffffff0

/* ======================================================================== */
/* Structures mapping of some unit register set                             */