aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-orion5x/ts78xx-setup.c
diff options
context:
space:
mode:
authorAlexander Clouter <alex@digriz.org.uk>2011-03-05 11:49:36 +0000
committerNicolas Pitre <nico@fluxnic.net>2011-03-05 14:31:53 -0500
commitb3882330843650b751817712db57b9a7061e7879 (patch)
treef214ee378dabf403c59ebeec0650da1118b386f5 /arch/arm/mach-orion5x/ts78xx-setup.c
parentf9b1184e12e5ff8129b04837dffddb5a3c390473 (diff)
downloadkernel_samsung_smdk4412-b3882330843650b751817712db57b9a7061e7879.zip
kernel_samsung_smdk4412-b3882330843650b751817712db57b9a7061e7879.tar.gz
kernel_samsung_smdk4412-b3882330843650b751817712db57b9a7061e7879.tar.bz2
ARM: orion5x: use safer FPGA ID 'default' for TS-78xx
Originally the FPGA ID checking switch statement left disabled all the TS implemented FPGA devices if the ID was unknown to it. Michael Spang created a fix in f9b1184e that changed the default to enable the devices in the event TS silently release more revisions into the wild, this unfortunately breaks custom FPGA bitstreams. This patch amends the switch statement so that the TS devices are only enabled if on the revision number is unknown (whilst the magic matches). Changelog: v2: neater implementation and some cosmetic changes v1: initial release <20110305112937.GA22117@chipmunk> Signed-off-by: Alexander Clouter <alex@digriz.org.uk> Signed-off-by: Nicolas Pitre <nico@fluxnic.net>
Diffstat (limited to 'arch/arm/mach-orion5x/ts78xx-setup.c')
-rw-r--r--arch/arm/mach-orion5x/ts78xx-setup.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/arch/arm/mach-orion5x/ts78xx-setup.c b/arch/arm/mach-orion5x/ts78xx-setup.c
index 1cac714..3f2e1cd 100644
--- a/arch/arm/mach-orion5x/ts78xx-setup.c
+++ b/arch/arm/mach-orion5x/ts78xx-setup.c
@@ -399,11 +399,20 @@ static void ts78xx_fpga_supports(void)
ts78xx_fpga.supports.ts_rng.present = 1;
break;
default:
- printk(KERN_WARNING "Unrecognized TS-78XX FPGA ID 0x%02x",
- ts78xx_fpga.id);
- ts78xx_fpga.supports.ts_rtc.present = 1;
- ts78xx_fpga.supports.ts_nand.present = 1;
- ts78xx_fpga.supports.ts_rng.present = 1;
+ /* enable devices if magic matches */
+ switch ((ts78xx_fpga.id >> 8) & 0xffffff) {
+ case TS7800_FPGA_MAGIC:
+ printk(KERN_WARNING "TS-7800 FPGA: unrecognized revision 0x%.2x\n",
+ ts78xx_fpga.id & 0xff);
+ ts78xx_fpga.supports.ts_rtc.present = 1;
+ ts78xx_fpga.supports.ts_nand.present = 1;
+ ts78xx_fpga.supports.ts_rng.present = 1;
+ break;
+ default:
+ ts78xx_fpga.supports.ts_rtc.present = 0;
+ ts78xx_fpga.supports.ts_nand.present = 0;
+ ts78xx_fpga.supports.ts_rng.present = 0;
+ }
}
}