aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/tc/zs.c
diff options
context:
space:
mode:
authorMaciej W. Rozycki <macro@linux-mips.org>2005-07-01 12:10:40 -0400
committerRalf Baechle <ralf@linux-mips.org>2005-10-29 14:31:35 -0400
commita5fc9c0bbee8b91025993a49a9176a88380aef3c (patch)
treee68ee45e852028ddde712abb18531777dba6e468 /drivers/tc/zs.c
parent7d7ee221213609319401d1b9d6dc4bf22ab928ea (diff)
Use physical addresses at the interface level, letting drivers remap
them as appropriate. Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Diffstat (limited to 'drivers/tc/zs.c')
-rw-r--r--drivers/tc/zs.c20
1 files changed, 6 insertions, 14 deletions
diff --git a/drivers/tc/zs.c b/drivers/tc/zs.c
index 0e302ae5924c..c52af73a251b 100644
--- a/drivers/tc/zs.c
+++ b/drivers/tc/zs.c
@@ -65,14 +65,14 @@
65#include <asm/system.h> 65#include <asm/system.h>
66#include <asm/uaccess.h> 66#include <asm/uaccess.h>
67#include <asm/bootinfo.h> 67#include <asm/bootinfo.h>
68#include <asm/dec/serial.h>
69 68
70#ifdef CONFIG_MACH_DECSTATION
71#include <asm/dec/interrupts.h> 69#include <asm/dec/interrupts.h>
70#include <asm/dec/ioasic_addrs.h>
72#include <asm/dec/machtype.h> 71#include <asm/dec/machtype.h>
72#include <asm/dec/serial.h>
73#include <asm/dec/system.h>
73#include <asm/dec/tc.h> 74#include <asm/dec/tc.h>
74#include <asm/dec/ioasic_addrs.h> 75
75#endif
76#ifdef CONFIG_KGDB 76#ifdef CONFIG_KGDB
77#include <asm/kgdb.h> 77#include <asm/kgdb.h>
78#endif 78#endif
@@ -1616,30 +1616,22 @@ static void __init probe_sccs(void)
1616 return; 1616 return;
1617 } 1617 }
1618 1618
1619 /*
1620 * When serial console is activated, tc_init has not been called yet
1621 * and system_base is undefined. Unfortunately we have to hardcode
1622 * system_base for this case :-(. HK
1623 */
1624 switch(mips_machtype) { 1619 switch(mips_machtype) {
1625#ifdef CONFIG_MACH_DECSTATION 1620#ifdef CONFIG_MACH_DECSTATION
1626 case MACH_DS5000_2X0: 1621 case MACH_DS5000_2X0:
1627 case MACH_DS5900: 1622 case MACH_DS5900:
1628 system_base = CKSEG1ADDR(0x1f800000);
1629 n_chips = 2; 1623 n_chips = 2;
1630 zs_parms = &ds_parms; 1624 zs_parms = &ds_parms;
1631 zs_parms->irq0 = dec_interrupt[DEC_IRQ_SCC0]; 1625 zs_parms->irq0 = dec_interrupt[DEC_IRQ_SCC0];
1632 zs_parms->irq1 = dec_interrupt[DEC_IRQ_SCC1]; 1626 zs_parms->irq1 = dec_interrupt[DEC_IRQ_SCC1];
1633 break; 1627 break;
1634 case MACH_DS5000_1XX: 1628 case MACH_DS5000_1XX:
1635 system_base = CKSEG1ADDR(0x1c000000);
1636 n_chips = 2; 1629 n_chips = 2;
1637 zs_parms = &ds_parms; 1630 zs_parms = &ds_parms;
1638 zs_parms->irq0 = dec_interrupt[DEC_IRQ_SCC0]; 1631 zs_parms->irq0 = dec_interrupt[DEC_IRQ_SCC0];
1639 zs_parms->irq1 = dec_interrupt[DEC_IRQ_SCC1]; 1632 zs_parms->irq1 = dec_interrupt[DEC_IRQ_SCC1];
1640 break; 1633 break;
1641 case MACH_DS5000_XX: 1634 case MACH_DS5000_XX:
1642 system_base = CKSEG1ADDR(0x1c000000);
1643 n_chips = 1; 1635 n_chips = 1;
1644 zs_parms = &ds_parms; 1636 zs_parms = &ds_parms;
1645 zs_parms->irq0 = dec_interrupt[DEC_IRQ_SCC0]; 1637 zs_parms->irq0 = dec_interrupt[DEC_IRQ_SCC0];
@@ -1661,10 +1653,10 @@ static void __init probe_sccs(void)
1661 * The sccs reside on the high byte of the 16 bit IOBUS 1653 * The sccs reside on the high byte of the 16 bit IOBUS
1662 */ 1654 */
1663 zs_channels[n_channels].control = 1655 zs_channels[n_channels].control =
1664 (volatile unsigned char *)system_base + 1656 (volatile void *)CKSEG1ADDR(dec_kn_slot_base +
1665 (0 == chip ? zs_parms->scc0 : zs_parms->scc1) + 1657 (0 == chip ? zs_parms->scc0 : zs_parms->scc1) +
1666 (0 == channel ? zs_parms->channel_a_offset : 1658 (0 == channel ? zs_parms->channel_a_offset :
1667 zs_parms->channel_b_offset); 1659 zs_parms->channel_b_offset));
1668 zs_channels[n_channels].data = 1660 zs_channels[n_channels].data =
1669 zs_channels[n_channels].control + 4; 1661 zs_channels[n_channels].control + 4;
1670 1662