linux/arch/arm/mach-orion5x/ts78xx-fpga.h
Alexander Clouter b388233084 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>
2011-03-05 14:31:53 -05:00

41 lines
1 KiB
C

#define TS7800_FPGA_MAGIC 0x00b480
#define FPGAID(_magic, _rev) ((_magic << 8) + _rev)
/*
* get yer id's from http://ts78xx.digriz.org.uk/
* do *not* make up your own or 'borrow' any!
*/
enum fpga_ids {
/* Technologic Systems */
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),
};
struct fpga_device {
unsigned present:1;
unsigned init:1;
};
struct fpga_devices {
/* Technologic Systems */
struct fpga_device ts_rtc;
struct fpga_device ts_nand;
struct fpga_device ts_rng;
};
struct ts78xx_fpga_data {
unsigned int id;
int state;
struct fpga_devices supports;
};