Patchwork [1/4,V2] powerpc/85xx: Add support for 85xx cpu type detection

login
register
mail settings
Submitter Haijun.Zhang
Date July 10, 2013, 7:39 a.m.
Message ID <1373441941-32650-1-git-send-email-Haijun.Zhang@freescale.com>
Download mbox | patch
Permalink /patch/257981/
State Superseded
Headers show

Comments

Haijun.Zhang - July 10, 2013, 7:39 a.m.
Add this file to help detect cpu type in runtime.
These macros will be more favorable for driver
to apply errata and workaround to specified cpu type.

Signed-off-by: Haijun Zhang <Haijun.Zhang@freescale.com>
Signed-off-by: Zhao Chenhui <chenhui.zhao@freescale.com>
---
changes v2:
	- Remove inline function
	- Ignore E bit of SOC
	- Add Macro to get current soc version

 arch/powerpc/include/asm/mpc85xx.h | 53 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 53 insertions(+)
 create mode 100644 arch/powerpc/include/asm/mpc85xx.h
David Laight - July 11, 2013, 8:43 a.m.
> > +#define IS_SVR_REV(svr, maj, min) \
> > +	((SVR_MAJ(svr) == (maj)) && (SVR_MIN(svr) == (min)))
> 
> I don't think IS_SVR_REV is needed.  Callers can just do "if
> (SVR_REV(svr) == 0x30)" or whatever, especially since we're relying on
> them to do this for greater/less than comparisons.

Not only that, I'd guess that 'maj' and 'min' are likely to be
constants - so you'd want to combine them and compare against 'svr'
rather than have two conditionals.

	David
Scott Wood - July 11, 2013, 2:15 p.m.
On 07/11/2013 03:43:35 AM, David Laight wrote:
> > > +#define IS_SVR_REV(svr, maj, min) \
> > > +	((SVR_MAJ(svr) == (maj)) && (SVR_MIN(svr) == (min)))
> >
> > I don't think IS_SVR_REV is needed.  Callers can just do "if
> > (SVR_REV(svr) == 0x30)" or whatever, especially since we're relying  
> on
> > them to do this for greater/less than comparisons.
> 
> Not only that, I'd guess that 'maj' and 'min' are likely to be
> constants - so you'd want to combine them and compare against 'svr'
> rather than have two conditionals.

Yes, that's what I meant -- 0x30 would represent revision 3.0.

-Scott

Patch

diff --git a/arch/powerpc/include/asm/mpc85xx.h b/arch/powerpc/include/asm/mpc85xx.h
new file mode 100644
index 0000000..20af5e8
--- /dev/null
+++ b/arch/powerpc/include/asm/mpc85xx.h
@@ -0,0 +1,53 @@ 
+/*
+ * MPC85xx cpu type detection
+ *
+ * Copyright 2011-2012 Freescale Semiconductor, Inc.
+ *
+ * This is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ */
+
+#ifndef __ASM_PPC_MPC85XX_H
+#define __ASM_PPC_MPC85XX_H
+
+#define SVR_REV(svr)	((svr) & 0xFF)		/* SOC design resision */
+#define SVR_MAJ(svr)	(((svr) >>  4) & 0xF)	/* Major revision field*/
+#define SVR_MIN(svr)	(((svr) >>  0) & 0xF)	/* Minor revision field*/
+
+/* Some parts define SVR[0:23] as the SOC version */
+#define SVR_SOC_VER(svr) (((svr) >> 8) & 0xFFF7FF)	/* SOC Version fields */
+
+/* Get current SOC Version */
+#define GET_SVR()	(mfspr(SPRN_SVR))
+
+#define IS_SVR_REV(svr, maj, min) \
+	((SVR_MAJ(svr) == (maj)) && (SVR_MIN(svr) == (min)))
+
+#define SVR_8533	0x803400
+#define SVR_8535	0x803701
+#define SVR_8536	0x803700
+#define SVR_8540	0x803000
+#define SVR_8541	0x807200
+#define SVR_8543	0x803200
+#define SVR_8544	0x803401
+#define SVR_8545	0x803102
+#define SVR_8547	0x803101
+#define SVR_8548	0x803100
+#define SVR_8555	0x807100
+#define SVR_8560	0x807000
+#define SVR_8567	0x807501
+#define SVR_8568	0x807500
+#define SVR_8569	0x808000
+#define SVR_8572	0x80E000
+#define SVR_P1010	0x80f900
+#define SVR_P2041	0x821001
+#define SVR_P3041	0x821103
+#define SVR_P5010	0x822100
+#define SVR_P5020	0x822000
+#define SVR_P5040	0x820400
+#define SVR_T4240	0x824800
+#define SVR_B4860	0x868800
+
+#endif