Skip to content

Commit

Permalink
ARM: orion5x: use safer FPGA ID 'default' for TS-78xx
Browse files Browse the repository at this point in the history
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 f9b1184 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>
  • Loading branch information
Alexander Clouter authored and Nicolas Pitre committed Mar 5, 2011
1 parent f9b1184 commit b388233
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 14 deletions.
19 changes: 10 additions & 9 deletions arch/arm/mach-orion5x/ts78xx-fpga.h
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
#define TS7800_FPGA_MAGIC 0x00b480
#define FPGAID(_magic, _rev) ((_magic << 8) + _rev)

/*
Expand All @@ -6,15 +7,15 @@
*/
enum fpga_ids {
/* Technologic Systems */
TS7800_REV_1 = FPGAID(0x00b480, 0x01),
TS7800_REV_2 = FPGAID(0x00b480, 0x02),
TS7800_REV_3 = FPGAID(0x00b480, 0x03),
TS7800_REV_4 = FPGAID(0x00b480, 0x04),
TS7800_REV_5 = FPGAID(0x00b480, 0x05),
TS7800_REV_6 = FPGAID(0x00b480, 0x06),
TS7800_REV_7 = FPGAID(0x00b480, 0x07),
TS7800_REV_8 = FPGAID(0x00b480, 0x08),
TS7800_REV_9 = FPGAID(0x00b480, 0x09),
TS7800_REV_1 = FPGAID(TS7800_FPGA_MAGIC, 0x01),
TS7800_REV_2 = FPGAID(TS7800_FPGA_MAGIC, 0x02),
TS7800_REV_3 = FPGAID(TS7800_FPGA_MAGIC, 0x03),
TS7800_REV_4 = FPGAID(TS7800_FPGA_MAGIC, 0x04),
TS7800_REV_5 = FPGAID(TS7800_FPGA_MAGIC, 0x05),
TS7800_REV_6 = FPGAID(TS7800_FPGA_MAGIC, 0x06),
TS7800_REV_7 = FPGAID(TS7800_FPGA_MAGIC, 0x07),
TS7800_REV_8 = FPGAID(TS7800_FPGA_MAGIC, 0x08),
TS7800_REV_9 = FPGAID(TS7800_FPGA_MAGIC, 0x09),

/* Unaffordable & Expensive */
UAE_DUMMY = FPGAID(0xffffff, 0x01),
Expand Down
19 changes: 14 additions & 5 deletions arch/arm/mach-orion5x/ts78xx-setup.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
}
}

Expand Down

0 comments on commit b388233

Please sign in to comment.