You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
96 lines
2.7 KiB
96 lines
2.7 KiB
From baeacaa7b9930badc074eaad3700b075ed9d622f Mon Sep 17 00:00:00 2001 |
|
From: Jean Delvare <jdelvare@suse.de> |
|
Date: Tue, 25 Jul 2017 11:21:27 +0200 |
|
Subject: [PATCH 05/10] biosdecode: Clean up the PIR table output |
|
|
|
* Remove entry numbers. |
|
* Use "Device" instead of "ID". |
|
* Put repeated code in a function. |
|
* Don't display unconnected links. |
|
* Shorten "slot number" to just "slot". |
|
|
|
--- |
|
biosdecode.c | 42 ++++++++++++++++++------------------------ |
|
1 file changed, 18 insertions(+), 24 deletions(-) |
|
|
|
diff --git a/biosdecode.c b/biosdecode.c |
|
index 8293e61..b37e510 100644 |
|
--- a/biosdecode.c |
|
+++ b/biosdecode.c |
|
@@ -355,7 +355,7 @@ static void pir_slot_number(u8 code) |
|
if (code == 0) |
|
printf(" on-board"); |
|
else |
|
- printf(" slot number %u", code); |
|
+ printf(" slot %u", code); |
|
} |
|
|
|
static size_t pir_length(const u8 *p) |
|
@@ -363,6 +363,16 @@ static size_t pir_length(const u8 *p) |
|
return WORD(p + 6); |
|
} |
|
|
|
+static void pir_link_bitmap(char letter, const u8 *p) |
|
+{ |
|
+ if (p[0] == 0) /* Not connected */ |
|
+ return; |
|
+ |
|
+ printf("\t\tINT%c#: Link 0x%02x, IRQ Bitmap", letter, p[0]); |
|
+ pir_irqs(WORD(p + 1)); |
|
+ printf("\n"); |
|
+} |
|
+ |
|
static int pir_decode(const u8 *p, size_t len) |
|
{ |
|
int i; |
|
@@ -372,7 +382,7 @@ static int pir_decode(const u8 *p, size_t len) |
|
|
|
printf("PCI Interrupt Routing %u.%u present.\n", |
|
p[5], p[4]); |
|
- printf("\tRouter ID: %02x:%02x.%1x\n", |
|
+ printf("\tRouter Device: %02x:%02x.%1x\n", |
|
p[8], p[9]>>3, p[9] & 0x07); |
|
printf("\tExclusive IRQs:"); |
|
pir_irqs(WORD(p + 10)); |
|
@@ -386,32 +396,16 @@ static int pir_decode(const u8 *p, size_t len) |
|
|
|
for (i = 1; i <= (WORD(p + 6) - 32) / 16; i++) |
|
{ |
|
- printf("\tSlot Entry %u: ID %02x:%02x,", |
|
- i, p[(i + 1) * 16], p[(i + 1) * 16 + 1] >> 3); |
|
+ printf("\tDevice: %02x:%02x,", |
|
+ p[(i + 1) * 16], p[(i + 1) * 16 + 1] >> 3); |
|
pir_slot_number(p[(i + 1) * 16 + 14]); |
|
printf("\n"); |
|
if (opt.pir == PIR_FULL) |
|
{ |
|
- printf("\t\tLink Value for INTA#: %u\n", |
|
- p[(i + 1) * 16 + 2]); |
|
- printf("\t\tIRQ Bitmap for INTA#:"); |
|
- pir_irqs(WORD(p + (i + 1) * 16 + 3)); |
|
- printf("\n"); |
|
- printf("\t\tLink Value for INTB#: %u\n", |
|
- p[(i + 1) * 16 + 5]); |
|
- printf("\t\tIRQ Bitmap for INTB#:"); |
|
- pir_irqs(WORD(p + (i + 1) * 16 + 6)); |
|
- printf("\n"); |
|
- printf("\t\tLink Value for INTC#: %u\n", |
|
- p[(i + 1) * 16 + 8]); |
|
- printf("\t\tIRQ Bitmap for INTC#:"); |
|
- pir_irqs(WORD(p + (i + 1) * 16 + 9)); |
|
- printf("\n"); |
|
- printf("\t\tLink Value for INTD#: %u\n", |
|
- p[(i + 1) * 16 + 11]); |
|
- printf("\t\tIRQ Bitmap for INTD#:"); |
|
- pir_irqs(WORD(p + (i + 1) * 16 + 12)); |
|
- printf("\n"); |
|
+ pir_link_bitmap('A', p + (i + 1) * 16 + 2); |
|
+ pir_link_bitmap('B', p + (i + 1) * 16 + 5); |
|
+ pir_link_bitmap('C', p + (i + 1) * 16 + 8); |
|
+ pir_link_bitmap('D', p + (i + 1) * 16 + 11); |
|
} |
|
} |
|
|
|
-- |
|
2.9.5 |
|
|
|
|