diff options
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/infiniband/hw/ipath/ipath_eeprom.c | 7 | ||||
| -rw-r--r-- | drivers/infiniband/hw/ipath/ipath_ht400.c | 21 | ||||
| -rw-r--r-- | drivers/infiniband/hw/ipath/ipath_init_chip.c | 1 | ||||
| -rw-r--r-- | drivers/infiniband/hw/ipath/ipath_kernel.h | 2 | ||||
| -rw-r--r-- | drivers/infiniband/hw/ipath/ipath_pe800.c | 2 |
5 files changed, 25 insertions, 8 deletions
diff --git a/drivers/infiniband/hw/ipath/ipath_eeprom.c b/drivers/infiniband/hw/ipath/ipath_eeprom.c index f11a900e8cd7..a2f1ceafcca9 100644 --- a/drivers/infiniband/hw/ipath/ipath_eeprom.c +++ b/drivers/infiniband/hw/ipath/ipath_eeprom.c | |||
| @@ -505,11 +505,10 @@ static u8 flash_csum(struct ipath_flash *ifp, int adjust) | |||
| 505 | * ipath_get_guid - get the GUID from the i2c device | 505 | * ipath_get_guid - get the GUID from the i2c device |
| 506 | * @dd: the infinipath device | 506 | * @dd: the infinipath device |
| 507 | * | 507 | * |
| 508 | * When we add the multi-chip support, we will probably have to add | 508 | * We have the capability to use the ipath_nguid field, and get |
| 509 | * the ability to use the number of guids field, and get the guid from | 509 | * the guid from the first chip's flash, to use for all of them. |
| 510 | * the first chip's flash, to use for all of them. | ||
| 511 | */ | 510 | */ |
| 512 | void ipath_get_guid(struct ipath_devdata *dd) | 511 | void ipath_get_eeprom_info(struct ipath_devdata *dd) |
| 513 | { | 512 | { |
| 514 | void *buf; | 513 | void *buf; |
| 515 | struct ipath_flash *ifp; | 514 | struct ipath_flash *ifp; |
diff --git a/drivers/infiniband/hw/ipath/ipath_ht400.c b/drivers/infiniband/hw/ipath/ipath_ht400.c index 4652435998f3..fac0a2b74de2 100644 --- a/drivers/infiniband/hw/ipath/ipath_ht400.c +++ b/drivers/infiniband/hw/ipath/ipath_ht400.c | |||
| @@ -607,7 +607,12 @@ static int ipath_ht_boardname(struct ipath_devdata *dd, char *name, | |||
| 607 | case 4: /* Ponderosa is one of the bringup boards */ | 607 | case 4: /* Ponderosa is one of the bringup boards */ |
| 608 | n = "Ponderosa"; | 608 | n = "Ponderosa"; |
| 609 | break; | 609 | break; |
| 610 | case 5: /* HT-460 original production board */ | 610 | case 5: |
| 611 | /* | ||
| 612 | * HT-460 original production board; two production levels, with | ||
| 613 | * different serial number ranges. See ipath_ht_early_init() for | ||
| 614 | * case where we enable IPATH_GPIO_INTR for later serial # range. | ||
| 615 | */ | ||
| 611 | n = "InfiniPath_HT-460"; | 616 | n = "InfiniPath_HT-460"; |
| 612 | break; | 617 | break; |
| 613 | case 6: | 618 | case 6: |
| @@ -642,7 +647,7 @@ static int ipath_ht_boardname(struct ipath_devdata *dd, char *name, | |||
| 642 | if (n) | 647 | if (n) |
| 643 | snprintf(name, namelen, "%s", n); | 648 | snprintf(name, namelen, "%s", n); |
| 644 | 649 | ||
| 645 | if (dd->ipath_majrev != 3 || dd->ipath_minrev != 2) { | 650 | if (dd->ipath_majrev != 3 || (dd->ipath_minrev < 2 || dd->ipath_minrev > 3)) { |
| 646 | /* | 651 | /* |
| 647 | * This version of the driver only supports the HT-400 | 652 | * This version of the driver only supports the HT-400 |
| 648 | * Rev 3.2 | 653 | * Rev 3.2 |
| @@ -1520,6 +1525,18 @@ static int ipath_ht_early_init(struct ipath_devdata *dd) | |||
| 1520 | */ | 1525 | */ |
| 1521 | ipath_write_kreg(dd, dd->ipath_kregs->kr_sendctrl, | 1526 | ipath_write_kreg(dd, dd->ipath_kregs->kr_sendctrl, |
| 1522 | INFINIPATH_S_ABORT); | 1527 | INFINIPATH_S_ABORT); |
| 1528 | |||
| 1529 | ipath_get_eeprom_info(dd); | ||
| 1530 | if(dd->ipath_boardrev == 5 && dd->ipath_serial[0] == '1' && | ||
| 1531 | dd->ipath_serial[1] == '2' && dd->ipath_serial[2] == '8') { | ||
| 1532 | /* | ||
| 1533 | * Later production HT-460 has same changes as HT-465, so | ||
| 1534 | * can use GPIO interrupts. They have serial #'s starting | ||
| 1535 | * with 128, rather than 112. | ||
| 1536 | */ | ||
| 1537 | dd->ipath_flags |= IPATH_GPIO_INTR; | ||
| 1538 | dd->ipath_flags &= ~IPATH_POLL_RX_INTR; | ||
| 1539 | } | ||
| 1523 | return 0; | 1540 | return 0; |
| 1524 | } | 1541 | } |
| 1525 | 1542 | ||
diff --git a/drivers/infiniband/hw/ipath/ipath_init_chip.c b/drivers/infiniband/hw/ipath/ipath_init_chip.c index 16f640e1c16e..dc83250d26a6 100644 --- a/drivers/infiniband/hw/ipath/ipath_init_chip.c +++ b/drivers/infiniband/hw/ipath/ipath_init_chip.c | |||
| @@ -879,7 +879,6 @@ int ipath_init_chip(struct ipath_devdata *dd, int reinit) | |||
| 879 | 879 | ||
| 880 | done: | 880 | done: |
| 881 | if (!ret) { | 881 | if (!ret) { |
| 882 | ipath_get_guid(dd); | ||
| 883 | *dd->ipath_statusp |= IPATH_STATUS_CHIP_PRESENT; | 882 | *dd->ipath_statusp |= IPATH_STATUS_CHIP_PRESENT; |
| 884 | if (!dd->ipath_f_intrsetup(dd)) { | 883 | if (!dd->ipath_f_intrsetup(dd)) { |
| 885 | /* now we can enable all interrupts from the chip */ | 884 | /* now we can enable all interrupts from the chip */ |
diff --git a/drivers/infiniband/hw/ipath/ipath_kernel.h b/drivers/infiniband/hw/ipath/ipath_kernel.h index e6507f8115bc..5d92d57b6f54 100644 --- a/drivers/infiniband/hw/ipath/ipath_kernel.h +++ b/drivers/infiniband/hw/ipath/ipath_kernel.h | |||
| @@ -650,7 +650,7 @@ u32 __iomem *ipath_getpiobuf(struct ipath_devdata *, u32 *); | |||
| 650 | void ipath_init_pe800_funcs(struct ipath_devdata *); | 650 | void ipath_init_pe800_funcs(struct ipath_devdata *); |
| 651 | /* init HT-400-specific func */ | 651 | /* init HT-400-specific func */ |
| 652 | void ipath_init_ht400_funcs(struct ipath_devdata *); | 652 | void ipath_init_ht400_funcs(struct ipath_devdata *); |
| 653 | void ipath_get_guid(struct ipath_devdata *); | 653 | void ipath_get_eeprom_info(struct ipath_devdata *); |
| 654 | u64 ipath_snap_cntr(struct ipath_devdata *, ipath_creg); | 654 | u64 ipath_snap_cntr(struct ipath_devdata *, ipath_creg); |
| 655 | 655 | ||
| 656 | /* | 656 | /* |
diff --git a/drivers/infiniband/hw/ipath/ipath_pe800.c b/drivers/infiniband/hw/ipath/ipath_pe800.c index 6318067ab5ec..02e8c75b24f6 100644 --- a/drivers/infiniband/hw/ipath/ipath_pe800.c +++ b/drivers/infiniband/hw/ipath/ipath_pe800.c | |||
| @@ -1180,6 +1180,8 @@ static int ipath_pe_early_init(struct ipath_devdata *dd) | |||
| 1180 | */ | 1180 | */ |
| 1181 | dd->ipath_rhdrhead_intr_off = 1ULL<<32; | 1181 | dd->ipath_rhdrhead_intr_off = 1ULL<<32; |
| 1182 | 1182 | ||
| 1183 | ipath_get_eeprom_info(dd); | ||
| 1184 | |||
| 1183 | return 0; | 1185 | return 0; |
| 1184 | } | 1186 | } |
| 1185 | 1187 | ||
