diff options
author | Bob Liu <lliubbo@gmail.com> | 2012-05-16 06:03:47 -0400 |
---|---|---|
committer | Bob Liu <lliubbo@gmail.com> | 2012-05-21 02:54:16 -0400 |
commit | 7adede5b9b6c85c1218dd992e940719c2656c1a4 (patch) | |
tree | 99a2c8c08907064763b1a44e0d7e56b4c666ca07 | |
parent | 4f6b600fdc1771efbb01d7a66328ac714e898bcb (diff) |
blackfin: cplb: add support for bf60x
Bf60x support big CPLB pages, this commit enable it.
Signed-off-by: Bob Liu <lliubbo@gmail.com>
-rw-r--r-- | arch/blackfin/include/asm/cplb.h | 4 | ||||
-rw-r--r-- | arch/blackfin/include/asm/def_LPBlackfin.h | 4 | ||||
-rw-r--r-- | arch/blackfin/kernel/cplb-nompu/cplbinit.c | 4 | ||||
-rw-r--r-- | arch/blackfin/kernel/cplb-nompu/cplbmgr.c | 6 |
4 files changed, 16 insertions, 2 deletions
diff --git a/arch/blackfin/include/asm/cplb.h b/arch/blackfin/include/asm/cplb.h index fda96261ed62..5c37f620c4b3 100644 --- a/arch/blackfin/include/asm/cplb.h +++ b/arch/blackfin/include/asm/cplb.h | |||
@@ -62,6 +62,10 @@ | |||
62 | #define SIZE_4K 0x00001000 /* 4K */ | 62 | #define SIZE_4K 0x00001000 /* 4K */ |
63 | #define SIZE_1M 0x00100000 /* 1M */ | 63 | #define SIZE_1M 0x00100000 /* 1M */ |
64 | #define SIZE_4M 0x00400000 /* 4M */ | 64 | #define SIZE_4M 0x00400000 /* 4M */ |
65 | #define SIZE_16K 0x00004000 /* 16K */ | ||
66 | #define SIZE_64K 0x00010000 /* 64K */ | ||
67 | #define SIZE_16M 0x01000000 /* 16M */ | ||
68 | #define SIZE_64M 0x04000000 /* 64M */ | ||
65 | 69 | ||
66 | #define MAX_CPLBS 16 | 70 | #define MAX_CPLBS 16 |
67 | 71 | ||
diff --git a/arch/blackfin/include/asm/def_LPBlackfin.h b/arch/blackfin/include/asm/def_LPBlackfin.h index 823679011457..dfcc7e5fdfb3 100644 --- a/arch/blackfin/include/asm/def_LPBlackfin.h +++ b/arch/blackfin/include/asm/def_LPBlackfin.h | |||
@@ -622,6 +622,10 @@ do { \ | |||
622 | #define PAGE_SIZE_4KB 0x00010000 /* 4 KB page size */ | 622 | #define PAGE_SIZE_4KB 0x00010000 /* 4 KB page size */ |
623 | #define PAGE_SIZE_1MB 0x00020000 /* 1 MB page size */ | 623 | #define PAGE_SIZE_1MB 0x00020000 /* 1 MB page size */ |
624 | #define PAGE_SIZE_4MB 0x00030000 /* 4 MB page size */ | 624 | #define PAGE_SIZE_4MB 0x00030000 /* 4 MB page size */ |
625 | #define PAGE_SIZE_16KB 0x00040000 /* 16 KB page size */ | ||
626 | #define PAGE_SIZE_64KB 0x00050000 /* 64 KB page size */ | ||
627 | #define PAGE_SIZE_16MB 0x00060000 /* 16 MB page size */ | ||
628 | #define PAGE_SIZE_64MB 0x00070000 /* 64 MB page size */ | ||
625 | #define CPLB_L1SRAM 0x00000020 /* 0=SRAM mapped in L1, 0=SRAM not | 629 | #define CPLB_L1SRAM 0x00000020 /* 0=SRAM mapped in L1, 0=SRAM not |
626 | * mapped to L1 | 630 | * mapped to L1 |
627 | */ | 631 | */ |
diff --git a/arch/blackfin/kernel/cplb-nompu/cplbinit.c b/arch/blackfin/kernel/cplb-nompu/cplbinit.c index 886e00014d75..3e366dc2d6e1 100644 --- a/arch/blackfin/kernel/cplb-nompu/cplbinit.c +++ b/arch/blackfin/kernel/cplb-nompu/cplbinit.c | |||
@@ -139,7 +139,7 @@ void __init generate_cplb_tables_all(void) | |||
139 | dcplb_bounds[i_d].eaddr = BOOT_ROM_START; | 139 | dcplb_bounds[i_d].eaddr = BOOT_ROM_START; |
140 | dcplb_bounds[i_d++].data = 0; | 140 | dcplb_bounds[i_d++].data = 0; |
141 | /* BootROM -- largest one should be less than 1 meg. */ | 141 | /* BootROM -- largest one should be less than 1 meg. */ |
142 | dcplb_bounds[i_d].eaddr = BOOT_ROM_START + (1 * 1024 * 1024); | 142 | dcplb_bounds[i_d].eaddr = BOOT_ROM_START + BOOT_ROM_LENGTH; |
143 | dcplb_bounds[i_d++].data = SDRAM_DGENERIC; | 143 | dcplb_bounds[i_d++].data = SDRAM_DGENERIC; |
144 | if (L2_LENGTH) { | 144 | if (L2_LENGTH) { |
145 | /* Addressing hole up to L2 SRAM. */ | 145 | /* Addressing hole up to L2 SRAM. */ |
@@ -178,7 +178,7 @@ void __init generate_cplb_tables_all(void) | |||
178 | icplb_bounds[i_i].eaddr = BOOT_ROM_START; | 178 | icplb_bounds[i_i].eaddr = BOOT_ROM_START; |
179 | icplb_bounds[i_i++].data = 0; | 179 | icplb_bounds[i_i++].data = 0; |
180 | /* BootROM -- largest one should be less than 1 meg. */ | 180 | /* BootROM -- largest one should be less than 1 meg. */ |
181 | icplb_bounds[i_i].eaddr = BOOT_ROM_START + (1 * 1024 * 1024); | 181 | icplb_bounds[i_i].eaddr = BOOT_ROM_START + BOOT_ROM_LENGTH; |
182 | icplb_bounds[i_i++].data = SDRAM_IGENERIC; | 182 | icplb_bounds[i_i++].data = SDRAM_IGENERIC; |
183 | 183 | ||
184 | if (L2_LENGTH) { | 184 | if (L2_LENGTH) { |
diff --git a/arch/blackfin/kernel/cplb-nompu/cplbmgr.c b/arch/blackfin/kernel/cplb-nompu/cplbmgr.c index 5b88861d6183..e854f9066cbd 100644 --- a/arch/blackfin/kernel/cplb-nompu/cplbmgr.c +++ b/arch/blackfin/kernel/cplb-nompu/cplbmgr.c | |||
@@ -179,6 +179,12 @@ MGR_ATTR static int dcplb_miss(int cpu) | |||
179 | addr = addr1; | 179 | addr = addr1; |
180 | } | 180 | } |
181 | 181 | ||
182 | #ifdef CONFIG_BF60x | ||
183 | if ((addr >= ASYNC_BANK0_BASE) | ||
184 | && (addr < ASYNC_BANK3_BASE + ASYNC_BANK3_SIZE)) | ||
185 | d_data |= PAGE_SIZE_64MB; | ||
186 | #endif | ||
187 | |||
182 | /* Pick entry to evict */ | 188 | /* Pick entry to evict */ |
183 | idx = evict_one_dcplb(cpu); | 189 | idx = evict_one_dcplb(cpu); |
184 | 190 | ||