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.
97 lines
2.7 KiB
97 lines
2.7 KiB
6 years ago
|
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
|
||
|
|