| 108 | } |
| 109 | |
| 110 | static void dump_regs(const struct superio_registers_ldn *reg_table_ldn, |
| 111 | uint16_t port, uint8_t ldn_sel) |
| 112 | { |
| 113 | int k; |
| 114 | uint8_t reg_dumped[256] = {0}; |
| 115 | const int16_t *idx, *def; |
| 116 | |
| 117 | // The LDN selector will never be listed as register in the reg_table_ldn, |
| 118 | // yet it should not be displayed as "unknown register" in the dump. |
| 119 | reg_dumped[ldn_sel] = 1; |
| 120 | |
| 121 | if (reg_table_ldn->ldn != NOLDN) { |
| 122 | printf("LDN 0x%02x", reg_table_ldn->ldn); |
| 123 | if (reg_table_ldn->name != NULL) |
| 124 | printf(" (%s)", reg_table_ldn->name); |
| 125 | regwrite(port, ldn_sel, reg_table_ldn->ldn); |
| 126 | } else { |
| 127 | if (reg_table_ldn->name == NULL) |
| 128 | printf("Register dump:"); |
| 129 | else |
| 130 | printf("(%s)", reg_table_ldn->name); |
| 131 | } |
| 132 | |
| 133 | set_extra_selector(port, ®_table_ldn->esel); |
| 134 | |
| 135 | idx = reg_table_ldn->idx; |
| 136 | def = reg_table_ldn->def; |
| 137 | |
| 138 | if (alternate_dump) { |
| 139 | int skip_def = 0; |
| 140 | int val; |
| 141 | |
| 142 | printf("\nidx def val\n"); |
| 143 | |
| 144 | for (k = 0; idx[k] != EOT; k++) { |
| 145 | if (skip_def || def[k] == EOT) { |
| 146 | skip_def = 1; |
| 147 | printf("\n"); |
| 148 | continue; |
| 149 | } |
| 150 | |
| 151 | printf("0x%02x: ", idx[k]); |
| 152 | reg_dumped[idx[k]] = 1; |
| 153 | val = regval(port, idx[k]); |
| 154 | |
| 155 | if (def[k] == NANA) |
| 156 | printf("(NA) 0x%02x\n", val); |
| 157 | else if (def[k] == RSVD) |
| 158 | printf("(RR) 0x%02x\n", val); |
| 159 | else if (def[k] == MISC) |
| 160 | printf("(MM) 0x%02x\n", val); |
| 161 | else { |
| 162 | if (def[k] == val) |
| 163 | printf("0x%02x 0x%02x\n", def[k], val); |
| 164 | else |
| 165 | printf("0x%02x [0x%02x]\n", def[k], val); |
| 166 | } |
| 167 | } |
no test coverage detected