|
@@ -28,18 +28,6 @@
|
|
|
#include "otp.h"
|
|
|
#include "srom.h"
|
|
|
|
|
|
-#define SROM_OFFSET(sih) ((sih->ccrev > 31) ? \
|
|
|
- (((sih->cccaps & CC_CAP_SROM) == 0) ? NULL : \
|
|
|
- ((u8 *)curmap + PCI_16KB0_CCREGS_OFFSET + CC_SROM_OTP)) : \
|
|
|
- ((u8 *)curmap + PCI_BAR0_SPROM_OFFSET))
|
|
|
-
|
|
|
-#if defined(BCMDBG)
|
|
|
-/* 500 ms after write enable/disable toggle */
|
|
|
-#define WRITE_ENABLE_DELAY 500
|
|
|
-/* 20 ms between each word write */
|
|
|
-#define WRITE_WORD_DELAY 20
|
|
|
-#endif
|
|
|
-
|
|
|
/*
|
|
|
* SROM CRC8 polynomial value:
|
|
|
*
|
|
@@ -792,6 +780,16 @@ static const struct brcms_sromvar perpath_pci_sromvars[] = {
|
|
|
|
|
|
static u8 srom_crc8_table[CRC8_TABLE_SIZE];
|
|
|
|
|
|
+static u16 *srom_window_address(struct si_pub *sih, u8 *curmap)
|
|
|
+{
|
|
|
+ if (sih->ccrev < 32)
|
|
|
+ return (u16 *)(curmap + PCI_BAR0_SPROM_OFFSET);
|
|
|
+ if (sih->cccaps & CC_CAP_SROM)
|
|
|
+ return (u16 *)(curmap + PCI_16KB0_CCREGS_OFFSET + CC_SROM_OTP);
|
|
|
+
|
|
|
+ return NULL;
|
|
|
+}
|
|
|
+
|
|
|
/* Parse SROM and create name=value pairs. 'srom' points to
|
|
|
* the SROM word array. 'off' specifies the offset of the
|
|
|
* first word 'srom' points to, which should be either 0 or
|
|
@@ -1147,7 +1145,7 @@ static int initvars_srom_pci(struct si_pub *sih, void *curmap, char **vars,
|
|
|
if (!srom)
|
|
|
return -ENOMEM;
|
|
|
|
|
|
- sromwindow = (u16 *) SROM_OFFSET(sih);
|
|
|
+ sromwindow = srom_window_address(sih, curmap);
|
|
|
|
|
|
crc8_populate_lsb(srom_crc8_table, SROM_CRC8_POLY);
|
|
|
if (ai_is_sprom_available(sih)) {
|