ppc: Fix macio ESCC legacy mapping
PATCH 1/1 ppc: Fix macio ESCC legacy mapping
The current mapping, while correct for the base ports (which is all the driver uses these days), is wrong for the extended registers.
I suspect the bugs come from incorrect tables in the CHRP IO Ref document, I have verified the new values here match Apple's MacTech.pdf.
Note: Nothing that I know of actually uses these registers so it's not a huge deal, but this patch has the added advantage of adding comments to document what the registers are.
---
hw/misc/macio/macio.c +10 -16
@@ -89,22 +89,16 @@ static void macio_escc_legacy_setup(MacIOState *macio_state)MemoryRegion *bar = &macio_state->bar;int i;static const int maps[] = { -0x00 ,0x00 , -0x02 ,0x20 , -0x04 ,0x10 , -0x06 ,0x30 , -0x08 ,0x40 , -0x0A ,0x50 , -0x60 ,0x60 , -0x70 ,0x70 , -0x80 ,0x70 , -0x90 ,0x80 , -0xA0 ,0x90 , -0xB0 ,0xA0 , -0xC0 ,0xB0 , -0xD0 ,0xC0 , -0xE0 ,0xD0 , -0xF0 ,0xE0 , +0x00 ,0x00 ,/* Command B */ +0x02 ,0x20 ,/* Command A */ +0x04 ,0x10 ,/* Data B */ +0x06 ,0x30 ,/* Data A */ +0x08 ,0x40 ,/* Enhancement B */ +0x0A ,0x50 ,/* Enhancement A */ +0x80 ,0x80 ,/* Recovery count */ +0x90 ,0x90 ,/* Start A */ +0xa0 ,0xa0 ,/* Start B */ +0xb0 ,0xb0 ,/* Detect AB */ };memory_region_init (escc_legacy,OBJECT (macio_state),"escc-legacy" ,256 );
David Gibson
AppliedQuoted 11 lines · Benjamin Herrenschmidt
The current mapping, while correct for the base ports (which is all the driver uses these days), is wrong for the extended registers.
I suspect the bugs come from incorrect tables in the CHRP IO Ref document, I have verified the new values here match Apple's MacTech.pdf.
Note: Nothing that I know of actually uses these registers so it's not a huge deal, but this patch has the added advantage of adding comments to document what the registers are.
Signed-off-by Benjamin Herrenschmidt <[email protected]>
Applied to ppc-for-2.8, thanks.
Quoted 40 lines
---
hw/misc/macio/macio.c +10
-16@@ -89,22 +89,16 @@ static void macio_escc_legacy_setup(MacIOState *macio_state)MemoryRegion *bar = &macio_state->bar;int i;static const int maps[] = { -0x00 ,0x00 , -0x02 ,0x20 , -0x04 ,0x10 , -0x06 ,0x30 , -0x08 ,0x40 , -0x0A ,0x50 , -0x60 ,0x60 , -0x70 ,0x70 , -0x80 ,0x70 , -0x90 ,0x80 , -0xA0 ,0x90 , -0xB0 ,0xA0 , -0xC0 ,0xB0 , -0xD0 ,0xC0 , -0xE0 ,0xD0 , -0xF0 ,0xE0 , +0x00 ,0x00 ,/* Command B */ +0x02 ,0x20 ,/* Command A */ +0x04 ,0x10 ,/* Data B */ +0x06 ,0x30 ,/* Data A */ +0x08 ,0x40 ,/* Enhancement B */ +0x0A ,0x50 ,/* Enhancement A */ +0x80 ,0x80 ,/* Recovery count */ +0x90 ,0x90 ,/* Start A */ +0xa0 ,0xa0 ,/* Start B */ +0xb0 ,0xb0 ,/* Detect AB */ };memory_region_init (escc_legacy,OBJECT (macio_state),"escc-legacy" ,256 );
Signature · 4 lines
David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson