Luc Verhaegen has uploaded this change for review. ( https://review.coreboot.org/29094
Change subject: ati: add evergreen family ......................................................................
ati: add evergreen family
Change-Id: Id195810c8e7338f399db4198077eb256c3c4a136 Signed-off-by: Luc Verhaegen libv@skynet.be --- M ati_spi.c 1 file changed, 57 insertions(+), 1 deletion(-)
git pull ssh://review.coreboot.org:29418/flashrom refs/changes/94/29094/1
diff --git a/ati_spi.c b/ati_spi.c index 56246eb..98b780a 100644 --- a/ati_spi.c +++ b/ati_spi.c @@ -33,6 +33,7 @@
#define ATI_SPI_TYPE_R600 1 #define ATI_SPI_TYPE_RV730 2 +#define ATI_SPI_TYPE_EVERGREEN 3 int type;
int (*save) (struct flashrom_pci_device *device); @@ -201,7 +202,8 @@ mmio_mask(R600_MEDIUM_VID_LOWER_GPIO_CNTL, 0, 0x0400); mmio_mask(R600_LOW_VID_LOWER_GPIO_CNTL, 0, 0x0400);
- mmio_mask(R600_LOWER_GPIO_ENABLE, 0x0400, 0x0400); + if (private->type != ATI_SPI_TYPE_EVERGREEN) + mmio_mask(R600_LOWER_GPIO_ENABLE, 0x0400, 0x0400);
programmer_delay(1000);
@@ -352,7 +354,61 @@ .master = &r600_spi_master, };
+/* + * Used by Cypress, Juniper, Redwood and Cedar. + */ +static const struct ati_spi_pci_private evergreen_spi_pci_private = { + .io_bar = 2, + .type = ATI_SPI_TYPE_EVERGREEN, + .save = r600_spi_save, + .restore = r600_spi_restore, + .enable = r600_spi_enable, + .master = &r600_spi_master, +}; + const struct flashrom_pci_match ati_spi_pci_devices[] = { + {0x1002, 0x6880, NT, &evergreen_spi_pci_private}, + {0x1002, 0x6888, NT, &evergreen_spi_pci_private}, + {0x1002, 0x6889, NT, &evergreen_spi_pci_private}, + {0x1002, 0x688A, NT, &evergreen_spi_pci_private}, + {0x1002, 0x688C, NT, &evergreen_spi_pci_private}, + {0x1002, 0x688D, NT, &evergreen_spi_pci_private}, + {0x1002, 0x6898, NT, &evergreen_spi_pci_private}, + {0x1002, 0x6899, NT, &evergreen_spi_pci_private}, + {0x1002, 0x689B, NT, &evergreen_spi_pci_private}, + {0x1002, 0x689C, NT, &evergreen_spi_pci_private}, + {0x1002, 0x689D, NT, &evergreen_spi_pci_private}, + {0x1002, 0x689E, NT, &evergreen_spi_pci_private}, + {0x1002, 0x68A0, NT, &evergreen_spi_pci_private}, + {0x1002, 0x68A1, NT, &evergreen_spi_pci_private}, + {0x1002, 0x68A8, NT, &evergreen_spi_pci_private}, + {0x1002, 0x68A9, NT, &evergreen_spi_pci_private}, + {0x1002, 0x68B8, NT, &evergreen_spi_pci_private}, + {0x1002, 0x68B9, NT, &evergreen_spi_pci_private}, + {0x1002, 0x68BA, NT, &evergreen_spi_pci_private}, + {0x1002, 0x68BE, NT, &evergreen_spi_pci_private}, + {0x1002, 0x68BF, NT, &evergreen_spi_pci_private}, + {0x1002, 0x68C0, NT, &evergreen_spi_pci_private}, + {0x1002, 0x68C1, NT, &evergreen_spi_pci_private}, + {0x1002, 0x68C7, NT, &evergreen_spi_pci_private}, + {0x1002, 0x68C8, NT, &evergreen_spi_pci_private}, + {0x1002, 0x68C9, NT, &evergreen_spi_pci_private}, + {0x1002, 0x68D8, NT, &evergreen_spi_pci_private}, + {0x1002, 0x68D9, NT, &evergreen_spi_pci_private}, + {0x1002, 0x68DA, NT, &evergreen_spi_pci_private}, + {0x1002, 0x68DE, NT, &evergreen_spi_pci_private}, + {0x1002, 0x68E0, NT, &evergreen_spi_pci_private}, + {0x1002, 0x68E1, NT, &evergreen_spi_pci_private}, + {0x1002, 0x68E4, NT, &evergreen_spi_pci_private}, + {0x1002, 0x68E5, NT, &evergreen_spi_pci_private}, + {0x1002, 0x68E8, NT, &evergreen_spi_pci_private}, + {0x1002, 0x68E9, NT, &evergreen_spi_pci_private}, + {0x1002, 0x68F1, NT, &evergreen_spi_pci_private}, + {0x1002, 0x68F2, NT, &evergreen_spi_pci_private}, + {0x1002, 0x68F8, NT, &evergreen_spi_pci_private}, + {0x1002, 0x68F9, NT, &evergreen_spi_pci_private}, + {0x1002, 0x68FA, NT, &evergreen_spi_pci_private}, + {0x1002, 0x68FE, NT, &evergreen_spi_pci_private}, {0x1002, 0x9400, NT, &r600_spi_pci_private}, {0x1002, 0x9401, NT, &r600_spi_pci_private}, {0x1002, 0x9402, NT, &r600_spi_pci_private},