| | 96 | |
| | 97 | |
| | 98 | /** |
| | 99 | * BOOL AMD_CB_ManualBUIDSwapList(u8 Node, u8 Link, u8 **List) |
| | 100 | * Description: |
| | 101 | * This routine is called every time a non-coherent chain is processed. |
| | 102 | * BUID assignment may be controlled explicitly on a non-coherent chain. Provide a |
| | 103 | * swap list. The first part of the list controls the BUID assignment and the |
| | 104 | * second part of the list provides the device to device linking. Device orientation |
| | 105 | * can be detected automatically, or explicitly. See documentation for more details. |
| | 106 | * |
| | 107 | * Automatic non-coherent init assigns BUIDs starting at 1 and incrementing sequentially |
| | 108 | * based on each device's unit count. |
| | 109 | * |
| | 110 | * Parameters: |
| | 111 | * @param[in] u8 node = The node on which this chain is located |
| | 112 | * @param[in] u8 link = The link on the host for this chain |
| | 113 | * @param[out] u8** list = supply a pointer to a list |
| | 114 | * @param[out] BOOL result = true to use a manual list |
| | 115 | * false to initialize the link automatically |
| | 116 | */ |
| | 117 | BOOL AMD_CB_ManualBUIDSwapList (u8 node, u16 link, u8 **List) |
| | 118 | { |
| | 119 | u8 swaplist[] = { 0xFF, HT_CHAIN_UNITID_BASE, HT_CHAIN_END_UNITID_BASE, 0xFF }; |
| | 120 | /* If the BUID was adjusted in early_ht we need to do the manual override */ |
| | 121 | if ((HT_CHAIN_UNITID_BASE != 0) && (HT_CHAIN_END_UNITID_BASE != 0)) { |
| | 122 | printk_debug("AMD_CB_ManualBUIDSwapList()\n"); |
| | 123 | if ((node == 0) && (link == 0)) { /* BSP SB link */ |
| | 124 | *List = swaplist; |
| | 125 | return 1; |
| | 126 | } |
| | 127 | } |
| | 128 | |
| | 129 | return 0; |
| | 130 | } |
| | 131 | |