linkb_to_host
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@1895 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
This commit is contained in:
parent
3f5ef301a7
commit
e324731152
|
@ -241,27 +241,32 @@ static int ht_setup_chain(device_t udev, uint8_t upos)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* get ht direction */
|
|
||||||
offs = ( (pci_read_config16(dev, pos + PCI_CAP_FLAGS) >> 10) & 1) ? PCI_HT_SLAVE1_OFFS : PCI_HT_SLAVE0_OFFS;
|
|
||||||
|
|
||||||
/* Setup the Hypertransport link */
|
|
||||||
reset_needed |= ht_optimize_link(udev, upos, uoffs, dev, pos, offs);
|
|
||||||
|
|
||||||
/* Update the Unitid of the current device */
|
/* Update the Unitid of the current device */
|
||||||
flags = pci_read_config16(dev, pos + PCI_CAP_FLAGS);
|
flags = pci_read_config16(dev, pos + PCI_CAP_FLAGS);
|
||||||
flags &= ~0x1f; /* mask out the bse Unit ID */
|
flags &= ~0x1f; /* mask out the bse Unit ID */
|
||||||
flags |= next_unitid & 0x1f;
|
flags |= next_unitid & 0x1f;
|
||||||
pci_write_config16(dev, pos + PCI_CAP_FLAGS, flags);
|
pci_write_config16(dev, pos + PCI_CAP_FLAGS, flags);
|
||||||
|
|
||||||
/* Remeber the location of the last device */
|
dev = PCI_DEV(0, next_unitid, 0);
|
||||||
udev = PCI_DEV(0, next_unitid, 0);
|
|
||||||
upos = pos;
|
|
||||||
uoffs = (offs != PCI_HT_SLAVE0_OFFS) ? PCI_HT_SLAVE0_OFFS : PCI_HT_SLAVE1_OFFS;
|
|
||||||
|
|
||||||
/* Compute the number of unitids consumed */
|
/* Compute the number of unitids consumed */
|
||||||
count = (flags >> 5) & 0x1f;
|
count = (flags >> 5) & 0x1f;
|
||||||
next_unitid += count;
|
next_unitid += count;
|
||||||
|
|
||||||
|
/* get ht direction */
|
||||||
|
flags = pci_read_config16(dev, pos + PCI_CAP_FLAGS); // double read ??
|
||||||
|
|
||||||
|
offs = ((flags>>10) & 1) ? PCI_HT_SLAVE1_OFFS : PCI_HT_SLAVE0_OFFS;
|
||||||
|
|
||||||
|
/* Setup the Hypertransport link */
|
||||||
|
reset_needed |= ht_optimize_link(udev, upos, uoffs, dev, pos, offs);
|
||||||
|
|
||||||
|
/* Remeber the location of the last device */
|
||||||
|
udev = dev;
|
||||||
|
upos = pos;
|
||||||
|
uoffs = (offs != PCI_HT_SLAVE0_OFFS) ? PCI_HT_SLAVE0_OFFS : PCI_HT_SLAVE1_OFFS;
|
||||||
|
|
||||||
|
|
||||||
} while((last_unitid != next_unitid) && (next_unitid <= 0x1f));
|
} while((last_unitid != next_unitid) && (next_unitid <= 0x1f));
|
||||||
return reset_needed;
|
return reset_needed;
|
||||||
}
|
}
|
||||||
|
@ -298,27 +303,31 @@ static int ht_setup_chainx(device_t udev, uint8_t upos, uint8_t bus)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* get ht direction */
|
|
||||||
offs = ((pci_read_config16(dev, pos + PCI_CAP_FLAGS)>>10) & 1) ? PCI_HT_SLAVE1_OFFS : PCI_HT_SLAVE0_OFFS;
|
|
||||||
|
|
||||||
/* Setup the Hypertransport link */
|
|
||||||
reset_needed |= ht_optimize_link(udev, upos, uoffs, dev, pos, offs);
|
|
||||||
|
|
||||||
/* Update the Unitid of the current device */
|
/* Update the Unitid of the current device */
|
||||||
flags = pci_read_config16(dev, pos + PCI_CAP_FLAGS);
|
flags = pci_read_config16(dev, pos + PCI_CAP_FLAGS);
|
||||||
flags &= ~0x1f; /* mask out the bse Unit ID */
|
flags &= ~0x1f; /* mask out the bse Unit ID */
|
||||||
flags |= next_unitid & 0x1f;
|
flags |= next_unitid & 0x1f;
|
||||||
pci_write_config16(dev, pos + PCI_CAP_FLAGS, flags);
|
pci_write_config16(dev, pos + PCI_CAP_FLAGS, flags);
|
||||||
|
|
||||||
/* Remeber the location of the last device */
|
dev = PCI_DEV(bus, next_unitid, 0);
|
||||||
udev = PCI_DEV(bus, next_unitid, 0);
|
|
||||||
upos = pos;
|
|
||||||
uoffs = ( offs != PCI_HT_SLAVE0_OFFS ) ? PCI_HT_SLAVE0_OFFS : PCI_HT_SLAVE1_OFFS;
|
|
||||||
|
|
||||||
/* Compute the number of unitids consumed */
|
/* Compute the number of unitids consumed */
|
||||||
count = (flags >> 5) & 0x1f;
|
count = (flags >> 5) & 0x1f;
|
||||||
next_unitid += count;
|
next_unitid += count;
|
||||||
|
|
||||||
|
/* get ht direction */
|
||||||
|
flags = pci_read_config16(dev, pos + PCI_CAP_FLAGS); // double read ??
|
||||||
|
|
||||||
|
offs = ((flags>>10) & 1) ? PCI_HT_SLAVE1_OFFS : PCI_HT_SLAVE0_OFFS;
|
||||||
|
|
||||||
|
/* Setup the Hypertransport link */
|
||||||
|
reset_needed |= ht_optimize_link(udev, upos, uoffs, dev, pos, offs);
|
||||||
|
|
||||||
|
/* Remeber the location of the last device */
|
||||||
|
udev = dev;
|
||||||
|
upos = pos;
|
||||||
|
uoffs = ( offs != PCI_HT_SLAVE0_OFFS ) ? PCI_HT_SLAVE0_OFFS : PCI_HT_SLAVE1_OFFS;
|
||||||
|
|
||||||
} while((last_unitid != next_unitid) && (next_unitid <= 0x1f));
|
} while((last_unitid != next_unitid) && (next_unitid <= 0x1f));
|
||||||
return reset_needed;
|
return reset_needed;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue