Skip to content

Commit

Permalink
[MIPS] TXx9: Cleanups for 64-bit support
Browse files Browse the repository at this point in the history
* Unify (and fix) mem_tx4938.c and mem_tx4927.c
* Simplify prom_init
* Kill volatiles and unused definitions for tx4927.h and tx4938.h

Signed-off-by: Atsushi Nemoto <anemo@mba.ocn.ne.jp>
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
  • Loading branch information
Atsushi Nemoto authored and Ralf Baechle committed Jul 20, 2008
1 parent b5d5acc commit 255033a
Show file tree
Hide file tree
Showing 8 changed files with 86 additions and 442 deletions.
2 changes: 1 addition & 1 deletion arch/mips/txx9/generic/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
obj-y += setup.o
obj-$(CONFIG_PCI) += pci.o
obj-$(CONFIG_SOC_TX4927) += mem_tx4927.o irq_tx4927.o
obj-$(CONFIG_SOC_TX4938) += mem_tx4938.o irq_tx4938.o
obj-$(CONFIG_SOC_TX4938) += mem_tx4927.o irq_tx4938.o
obj-$(CONFIG_TOSHIBA_FPCIB0) += smsc_fdc37m81x.o
obj-$(CONFIG_KGDB) += dbgio.o

Expand Down
94 changes: 15 additions & 79 deletions arch/mips/txx9/generic/mem_tx4927.c
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* linux/arch/mips/tx4927/common/tx4927_prom.c
* linux/arch/mips/txx9/generic/mem_tx4927.c
*
* common tx4927 memory interface
*
Expand Down Expand Up @@ -32,8 +32,9 @@
#include <linux/init.h>
#include <linux/types.h>
#include <linux/io.h>
#include <asm/txx9/tx4927.h>

static unsigned int __init tx4927_process_sdccr(unsigned long addr)
static unsigned int __init tx4927_process_sdccr(u64 __iomem *addr)
{
u64 val;
unsigned int sdccr_ce;
Expand All @@ -45,97 +46,32 @@ static unsigned int __init tx4927_process_sdccr(unsigned long addr)
unsigned int rs = 0;
unsigned int cs = 0;
unsigned int mw = 0;
unsigned int msize = 0;

val = __raw_readq((void __iomem *)addr);
val = __raw_readq(addr);

/* MVMCP -- need #defs for these bits masks */
sdccr_ce = ((val & (1 << 10)) >> 10);
sdccr_bs = ((val & (1 << 8)) >> 8);
sdccr_rs = ((val & (3 << 5)) >> 5);
sdccr_cs = ((val & (3 << 2)) >> 2);
sdccr_cs = ((val & (7 << 2)) >> 2);
sdccr_mw = ((val & (1 << 0)) >> 0);

if (sdccr_ce) {
switch (sdccr_bs) {
case 0:{
bs = 2;
break;
}
case 1:{
bs = 4;
break;
}
}
switch (sdccr_rs) {
case 0:{
rs = 2048;
break;
}
case 1:{
rs = 4096;
break;
}
case 2:{
rs = 8192;
break;
}
case 3:{
rs = 0;
break;
}
}
switch (sdccr_cs) {
case 0:{
cs = 256;
break;
}
case 1:{
cs = 512;
break;
}
case 2:{
cs = 1024;
break;
}
case 3:{
cs = 2048;
break;
}
}
switch (sdccr_mw) {
case 0:{
mw = 8;
break;
} /* 8 bytes = 64 bits */
case 1:{
mw = 4;
break;
} /* 4 bytes = 32 bits */
}
bs = 2 << sdccr_bs;
rs = 2048 << sdccr_rs;
cs = 256 << sdccr_cs;
mw = 8 >> sdccr_mw;
}

/* bytes per chip MB per chip num chips */
msize = (((rs * cs * mw) / (1024 * 1024)) * bs);

return (msize);
return rs * cs * mw * bs;
}


unsigned int __init tx4927_get_mem_size(void)
{
unsigned int c0;
unsigned int c1;
unsigned int c2;
unsigned int c3;
unsigned int total;

/* MVMCP -- need #defs for these registers */
c0 = tx4927_process_sdccr(0xff1f8000);
c1 = tx4927_process_sdccr(0xff1f8008);
c2 = tx4927_process_sdccr(0xff1f8010);
c3 = tx4927_process_sdccr(0xff1f8018);
total = c0 + c1 + c2 + c3;
unsigned int total = 0;
int i;

return (total);
for (i = 0; i < ARRAY_SIZE(tx4927_sdramcptr->cr); i++)
total += tx4927_process_sdccr(&tx4927_sdramcptr->cr[i]);
return total;
}
124 changes: 0 additions & 124 deletions arch/mips/txx9/generic/mem_tx4938.c

This file was deleted.

6 changes: 1 addition & 5 deletions arch/mips/txx9/rbtx4927/prom.c
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,6 @@

void __init rbtx4927_prom_init(void)
{
extern int tx4927_get_mem_size(void);
int msize;

prom_init_cmdline();
msize = tx4927_get_mem_size();
add_memory_region(0, msize << 20, BOOT_MEM_RAM);
add_memory_region(0, tx4927_get_mem_size(), BOOT_MEM_RAM);
}
6 changes: 1 addition & 5 deletions arch/mips/txx9/rbtx4938/prom.c
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,8 @@

void __init rbtx4938_prom_init(void)
{
extern int tx4938_get_mem_size(void);
int msize;
#ifndef CONFIG_TX4938_NAND_BOOT
prom_init_cmdline();
#endif

msize = tx4938_get_mem_size();
add_memory_region(0, msize << 20, BOOT_MEM_RAM);
add_memory_region(0, tx4938_get_mem_size(), BOOT_MEM_RAM);
}
11 changes: 6 additions & 5 deletions arch/mips/txx9/rbtx4938/setup.c
Original file line number Diff line number Diff line change
Expand Up @@ -310,28 +310,29 @@ void __init tx4938_board_setup(void)

printk(KERN_INFO "%s SDRAMC --", txx9_pcode_str);
for (i = 0; i < 4; i++) {
unsigned long long cr = tx4938_sdramcptr->cr[i];
u64 cr = TX4938_SDRAMC_CR(i);
unsigned long ram_base, ram_size;
if (!((unsigned long)cr & 0x00000400))
continue; /* disabled */
ram_base = (unsigned long)(cr >> 49) << 21;
ram_size = ((unsigned long)(cr >> 33) + 1) << 21;
if (ram_base >= 0x20000000)
continue; /* high memory (ignore) */
printk(" CR%d:%016Lx", i, cr);
printk(KERN_CONT " CR%d:%016llx", i, cr);
tx4938_sdram_resource[i].name = "SDRAM";
tx4938_sdram_resource[i].start = ram_base;
tx4938_sdram_resource[i].end = ram_base + ram_size - 1;
tx4938_sdram_resource[i].flags = IORESOURCE_MEM;
request_resource(&iomem_resource, &tx4938_sdram_resource[i]);
}
printk(" TR:%09Lx\n", tx4938_sdramcptr->tr);
printk(KERN_CONT " TR:%09llx\n", ____raw_readq(&tx4938_sdramcptr->tr));

/* SRAM */
if (tx4938_sramcptr->cr & 1) {
if (____raw_readq(&tx4938_sramcptr->cr) & 1) {
unsigned int size = 0x800;
unsigned long base =
(tx4938_sramcptr->cr >> (39-11)) & ~(size - 1);
(____raw_readq(&tx4938_sramcptr->cr) >> (39-11))
& ~(size - 1);
tx4938_sram_resource.name = "SRAM";
tx4938_sram_resource.start = base;
tx4938_sram_resource.end = base + size - 1;
Expand Down
Loading

0 comments on commit 255033a

Please sign in to comment.