Commit f724bf77 authored by Olof Johansson's avatar Olof Johansson

[POWERPC] pasemi: Minor iommu cleanup

Clean up the pwrficient iommu code a bit. It was using u32 *-based offsets
for registers, which can be a bit confusing when comparing to the manual.

Generated binaries from the code is unchanged from before.
Signed-off-by: default avatarOlof Johansson <olof@lixom.net>
parent 6e62040c
/* /*
* Copyright (C) 2005-2007, PA Semi, Inc * Copyright (C) 2005-2008, PA Semi, Inc
* *
* Maintained by: Olof Johansson <olof@lixom.net> * Maintained by: Olof Johansson <olof@lixom.net>
* *
...@@ -27,7 +27,6 @@ ...@@ -27,7 +27,6 @@
#include <asm/abs_addr.h> #include <asm/abs_addr.h>
#include <asm/firmware.h> #include <asm/firmware.h>
#define IOBMAP_PAGE_SHIFT 12 #define IOBMAP_PAGE_SHIFT 12
#define IOBMAP_PAGE_SIZE (1 << IOBMAP_PAGE_SHIFT) #define IOBMAP_PAGE_SIZE (1 << IOBMAP_PAGE_SHIFT)
#define IOBMAP_PAGE_MASK (IOBMAP_PAGE_SIZE - 1) #define IOBMAP_PAGE_MASK (IOBMAP_PAGE_SIZE - 1)
...@@ -35,13 +34,13 @@ ...@@ -35,13 +34,13 @@
#define IOB_BASE 0xe0000000 #define IOB_BASE 0xe0000000
#define IOB_SIZE 0x3000 #define IOB_SIZE 0x3000
/* Configuration registers */ /* Configuration registers */
#define IOBCAP_REG 0x10 #define IOBCAP_REG 0x40
#define IOBCOM_REG 0x40 #define IOBCOM_REG 0x100
/* Enable IOB address translation */ /* Enable IOB address translation */
#define IOBCOM_ATEN 0x00000100 #define IOBCOM_ATEN 0x00000100
/* Address decode configuration register */ /* Address decode configuration register */
#define IOB_AD_REG 0x53 #define IOB_AD_REG 0x14c
/* IOBCOM_AD_REG fields */ /* IOBCOM_AD_REG fields */
#define IOB_AD_VGPRT 0x00000e00 #define IOB_AD_VGPRT 0x00000e00
#define IOB_AD_VGAEN 0x00000100 #define IOB_AD_VGAEN 0x00000100
...@@ -56,13 +55,13 @@ ...@@ -56,13 +55,13 @@
#define IOB_AD_TRNG_2G 0x00000001 #define IOB_AD_TRNG_2G 0x00000001
#define IOB_AD_TRNG_128G 0x00000003 #define IOB_AD_TRNG_128G 0x00000003
#define IOB_TABLEBASE_REG 0x55 #define IOB_TABLEBASE_REG 0x154
/* Base of the 64 4-byte L1 registers */ /* Base of the 64 4-byte L1 registers */
#define IOB_XLT_L1_REGBASE 0xac0 #define IOB_XLT_L1_REGBASE 0x2b00
/* Register to invalidate TLB entries */ /* Register to invalidate TLB entries */
#define IOB_AT_INVAL_TLB_REG 0xb40 #define IOB_AT_INVAL_TLB_REG 0x2d00
/* The top two bits of the level 1 entry contains valid and type flags */ /* The top two bits of the level 1 entry contains valid and type flags */
#define IOBMAP_L1E_V 0x40000000 #define IOBMAP_L1E_V 0x40000000
...@@ -76,7 +75,7 @@ ...@@ -76,7 +75,7 @@
#define IOBMAP_L2E_V 0x80000000 #define IOBMAP_L2E_V 0x80000000
#define IOBMAP_L2E_V_CACHED 0xc0000000 #define IOBMAP_L2E_V_CACHED 0xc0000000
static u32 __iomem *iob; static void __iomem *iob;
static u32 iob_l1_emptyval; static u32 iob_l1_emptyval;
static u32 iob_l2_emptyval; static u32 iob_l2_emptyval;
static u32 *iob_l2_base; static u32 *iob_l2_base;
...@@ -219,7 +218,7 @@ int __init iob_init(struct device_node *dn) ...@@ -219,7 +218,7 @@ int __init iob_init(struct device_node *dn)
for (i = 0; i < 64; i++) { for (i = 0; i < 64; i++) {
/* Each L1 covers 32MB, i.e. 8K entries = 32K of ram */ /* Each L1 covers 32MB, i.e. 8K entries = 32K of ram */
regword = IOBMAP_L1E_V | (__pa(iob_l2_base + i*0x2000) >> 12); regword = IOBMAP_L1E_V | (__pa(iob_l2_base + i*0x2000) >> 12);
out_le32(iob+IOB_XLT_L1_REGBASE+i, regword); out_le32(iob+IOB_XLT_L1_REGBASE+i*4, regword);
} }
/* set 2GB translation window, based at 0 */ /* set 2GB translation window, based at 0 */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment