xmc4xxx: Add XMC4800 support

Tested with EES-AA chip revision on Relax EtherCAT Kit.

Change-Id: I457f24d242e0674d1f446c03a329efadff754d6a
Signed-off-by: Andreas Färber <afaerber@suse.de>
Reviewed-on: http://openocd.zylin.com/3132
Tested-by: jenkins
Reviewed-by: Jeff Ciesielski <jeffciesielski@gmail.com>
Reviewed-by: Paul Fertser <fercerpav@gmail.com>
This commit is contained in:
Andreas Färber 2015-11-29 02:01:29 +01:00 committed by Paul Fertser
parent e3a81e2e7b
commit 9693316463
1 changed files with 21 additions and 0 deletions

View File

@ -181,6 +181,7 @@
/* Flash controller configuration values */ /* Flash controller configuration values */
#define FLASH_ID_XMC4500 0xA2 #define FLASH_ID_XMC4500 0xA2
#define FLASH_ID_XMC4800 0x92
#define FLASH_ID_XMC4100_4200 0x9C #define FLASH_ID_XMC4100_4200 0x9C
#define FLASH_ID_XMC4400 0x9F #define FLASH_ID_XMC4400 0x9F
@ -251,6 +252,10 @@ static const unsigned int sector_capacity_12[12] = {
16, 16, 16, 16, 16, 16, 16, 16, 128, 256, 256, 256 16, 16, 16, 16, 16, 16, 16, 16, 128, 256, 256, 256
}; };
static const unsigned int sector_capacity_16[16] = {
16, 16, 16, 16, 16, 16, 16, 16, 128, 256, 256, 256, 256, 256, 256, 256
};
static int xmc4xxx_write_command_sequence(struct flash_bank *bank, static int xmc4xxx_write_command_sequence(struct flash_bank *bank,
struct xmc4xxx_command_seq *seq, struct xmc4xxx_command_seq *seq,
int seq_len) int seq_len)
@ -285,6 +290,9 @@ static int xmc4xxx_load_bank_layout(struct flash_bank *bank)
case 12: case 12:
capacity = sector_capacity_12; capacity = sector_capacity_12;
break; break;
case 16:
capacity = sector_capacity_16;
break;
default: default:
LOG_ERROR("Unexpected number of sectors, %d\n", LOG_ERROR("Unexpected number of sectors, %d\n",
bank->num_sectors); bank->num_sectors);
@ -373,6 +381,10 @@ static int xmc4xxx_probe(struct flash_bank *bank)
bank->num_sectors = 12; bank->num_sectors = 12;
LOG_DEBUG("XMC4xxx: XMC4500 detected."); LOG_DEBUG("XMC4xxx: XMC4500 detected.");
break; break;
case FLASH_ID_XMC4800:
bank->num_sectors = 16;
LOG_DEBUG("XMC4xxx: XMC4800 detected.");
break;
default: default:
LOG_ERROR("XMC4xxx: Unexpected flash ID. got %02" PRIx8, LOG_ERROR("XMC4xxx: Unexpected flash ID. got %02" PRIx8,
flash_id); flash_id);
@ -971,6 +983,15 @@ static int xmc4xxx_get_info_command(struct flash_bank *bank, char *buf, int buf_
break; break;
} }
break; break;
case 0x800:
dev_str = "XMC4800";
switch (rev_id) {
case 0x1:
rev_str = "EES-AA";
break;
}
break;
default: default:
snprintf(buf, buf_size, snprintf(buf, buf_size,