1*4882a593Smuzhiyun /* 2*4882a593Smuzhiyun * Defines for the TJSYS JMR-TX3927 3*4882a593Smuzhiyun * 4*4882a593Smuzhiyun * This file is subject to the terms and conditions of the GNU General Public 5*4882a593Smuzhiyun * License. See the file "COPYING" in the main directory of this archive 6*4882a593Smuzhiyun * for more details. 7*4882a593Smuzhiyun * 8*4882a593Smuzhiyun * Copyright (C) 2000-2001 Toshiba Corporation 9*4882a593Smuzhiyun */ 10*4882a593Smuzhiyun #ifndef __ASM_TXX9_JMR3927_H 11*4882a593Smuzhiyun #define __ASM_TXX9_JMR3927_H 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun #include <asm/txx9/tx3927.h> 14*4882a593Smuzhiyun #include <asm/addrspace.h> 15*4882a593Smuzhiyun #include <asm/txx9irq.h> 16*4882a593Smuzhiyun 17*4882a593Smuzhiyun /* CS */ 18*4882a593Smuzhiyun #define JMR3927_ROMCE0 0x1fc00000 /* 4M */ 19*4882a593Smuzhiyun #define JMR3927_ROMCE1 0x1e000000 /* 4M */ 20*4882a593Smuzhiyun #define JMR3927_ROMCE2 0x14000000 /* 16M */ 21*4882a593Smuzhiyun #define JMR3927_ROMCE3 0x10000000 /* 64M */ 22*4882a593Smuzhiyun #define JMR3927_ROMCE5 0x1d000000 /* 4M */ 23*4882a593Smuzhiyun #define JMR3927_SDCS0 0x00000000 /* 32M */ 24*4882a593Smuzhiyun #define JMR3927_SDCS1 0x02000000 /* 32M */ 25*4882a593Smuzhiyun /* PCI Direct Mappings */ 26*4882a593Smuzhiyun 27*4882a593Smuzhiyun #define JMR3927_PCIMEM 0x08000000 28*4882a593Smuzhiyun #define JMR3927_PCIMEM_SIZE 0x08000000 /* 128M */ 29*4882a593Smuzhiyun #define JMR3927_PCIIO 0x15000000 30*4882a593Smuzhiyun #define JMR3927_PCIIO_SIZE 0x01000000 /* 16M */ 31*4882a593Smuzhiyun 32*4882a593Smuzhiyun #define JMR3927_SDRAM_SIZE 0x02000000 /* 32M */ 33*4882a593Smuzhiyun #define JMR3927_PORT_BASE KSEG1 34*4882a593Smuzhiyun 35*4882a593Smuzhiyun /* Address map (virtual address) */ 36*4882a593Smuzhiyun #define JMR3927_ROM0_BASE (KSEG1 + JMR3927_ROMCE0) 37*4882a593Smuzhiyun #define JMR3927_ROM1_BASE (KSEG1 + JMR3927_ROMCE1) 38*4882a593Smuzhiyun #define JMR3927_IOC_BASE (KSEG1 + JMR3927_ROMCE2) 39*4882a593Smuzhiyun #define JMR3927_PCIMEM_BASE (KSEG1 + JMR3927_PCIMEM) 40*4882a593Smuzhiyun #define JMR3927_PCIIO_BASE (KSEG1 + JMR3927_PCIIO) 41*4882a593Smuzhiyun 42*4882a593Smuzhiyun #define JMR3927_IOC_REV_ADDR (JMR3927_IOC_BASE + 0x00000000) 43*4882a593Smuzhiyun #define JMR3927_IOC_NVRAMB_ADDR (JMR3927_IOC_BASE + 0x00010000) 44*4882a593Smuzhiyun #define JMR3927_IOC_LED_ADDR (JMR3927_IOC_BASE + 0x00020000) 45*4882a593Smuzhiyun #define JMR3927_IOC_DIPSW_ADDR (JMR3927_IOC_BASE + 0x00030000) 46*4882a593Smuzhiyun #define JMR3927_IOC_BREV_ADDR (JMR3927_IOC_BASE + 0x00040000) 47*4882a593Smuzhiyun #define JMR3927_IOC_DTR_ADDR (JMR3927_IOC_BASE + 0x00050000) 48*4882a593Smuzhiyun #define JMR3927_IOC_INTS1_ADDR (JMR3927_IOC_BASE + 0x00080000) 49*4882a593Smuzhiyun #define JMR3927_IOC_INTS2_ADDR (JMR3927_IOC_BASE + 0x00090000) 50*4882a593Smuzhiyun #define JMR3927_IOC_INTM_ADDR (JMR3927_IOC_BASE + 0x000a0000) 51*4882a593Smuzhiyun #define JMR3927_IOC_INTP_ADDR (JMR3927_IOC_BASE + 0x000b0000) 52*4882a593Smuzhiyun #define JMR3927_IOC_RESET_ADDR (JMR3927_IOC_BASE + 0x000f0000) 53*4882a593Smuzhiyun 54*4882a593Smuzhiyun /* Flash ROM */ 55*4882a593Smuzhiyun #define JMR3927_FLASH_BASE (JMR3927_ROM0_BASE) 56*4882a593Smuzhiyun #define JMR3927_FLASH_SIZE 0x00400000 57*4882a593Smuzhiyun 58*4882a593Smuzhiyun /* bits for IOC_REV/IOC_BREV (high byte) */ 59*4882a593Smuzhiyun #define JMR3927_IDT_MASK 0xfc 60*4882a593Smuzhiyun #define JMR3927_REV_MASK 0x03 61*4882a593Smuzhiyun #define JMR3927_IOC_IDT 0xe0 62*4882a593Smuzhiyun 63*4882a593Smuzhiyun /* bits for IOC_INTS1/IOC_INTS2/IOC_INTM/IOC_INTP (high byte) */ 64*4882a593Smuzhiyun #define JMR3927_IOC_INTB_PCIA 0 65*4882a593Smuzhiyun #define JMR3927_IOC_INTB_PCIB 1 66*4882a593Smuzhiyun #define JMR3927_IOC_INTB_PCIC 2 67*4882a593Smuzhiyun #define JMR3927_IOC_INTB_PCID 3 68*4882a593Smuzhiyun #define JMR3927_IOC_INTB_MODEM 4 69*4882a593Smuzhiyun #define JMR3927_IOC_INTB_INT6 5 70*4882a593Smuzhiyun #define JMR3927_IOC_INTB_INT7 6 71*4882a593Smuzhiyun #define JMR3927_IOC_INTB_SOFT 7 72*4882a593Smuzhiyun #define JMR3927_IOC_INTF_PCIA (1 << JMR3927_IOC_INTF_PCIA) 73*4882a593Smuzhiyun #define JMR3927_IOC_INTF_PCIB (1 << JMR3927_IOC_INTB_PCIB) 74*4882a593Smuzhiyun #define JMR3927_IOC_INTF_PCIC (1 << JMR3927_IOC_INTB_PCIC) 75*4882a593Smuzhiyun #define JMR3927_IOC_INTF_PCID (1 << JMR3927_IOC_INTB_PCID) 76*4882a593Smuzhiyun #define JMR3927_IOC_INTF_MODEM (1 << JMR3927_IOC_INTB_MODEM) 77*4882a593Smuzhiyun #define JMR3927_IOC_INTF_INT6 (1 << JMR3927_IOC_INTB_INT6) 78*4882a593Smuzhiyun #define JMR3927_IOC_INTF_INT7 (1 << JMR3927_IOC_INTB_INT7) 79*4882a593Smuzhiyun #define JMR3927_IOC_INTF_SOFT (1 << JMR3927_IOC_INTB_SOFT) 80*4882a593Smuzhiyun 81*4882a593Smuzhiyun /* bits for IOC_RESET (high byte) */ 82*4882a593Smuzhiyun #define JMR3927_IOC_RESET_CPU 1 83*4882a593Smuzhiyun #define JMR3927_IOC_RESET_PCI 2 84*4882a593Smuzhiyun 85*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 86*4882a593Smuzhiyun #define jmr3927_ioc_reg_out(d, a) ((*(volatile unsigned char *)(a)) = (d)) 87*4882a593Smuzhiyun #define jmr3927_ioc_reg_in(a) (*(volatile unsigned char *)(a)) 88*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 89*4882a593Smuzhiyun #define jmr3927_ioc_reg_out(d, a) ((*(volatile unsigned char *)((a)^1)) = (d)) 90*4882a593Smuzhiyun #define jmr3927_ioc_reg_in(a) (*(volatile unsigned char *)((a)^1)) 91*4882a593Smuzhiyun #else 92*4882a593Smuzhiyun #error "No Endian" 93*4882a593Smuzhiyun #endif 94*4882a593Smuzhiyun 95*4882a593Smuzhiyun /* LED macro */ 96*4882a593Smuzhiyun #define jmr3927_led_set(n/*0-16*/) jmr3927_ioc_reg_out(~(n), JMR3927_IOC_LED_ADDR) 97*4882a593Smuzhiyun 98*4882a593Smuzhiyun #define jmr3927_led_and_set(n/*0-16*/) jmr3927_ioc_reg_out((~(n)) & jmr3927_ioc_reg_in(JMR3927_IOC_LED_ADDR), JMR3927_IOC_LED_ADDR) 99*4882a593Smuzhiyun 100*4882a593Smuzhiyun /* DIPSW4 macro */ 101*4882a593Smuzhiyun #define jmr3927_dipsw1() (gpio_get_value(11) == 0) 102*4882a593Smuzhiyun #define jmr3927_dipsw2() (gpio_get_value(10) == 0) 103*4882a593Smuzhiyun #define jmr3927_dipsw3() ((jmr3927_ioc_reg_in(JMR3927_IOC_DIPSW_ADDR) & 2) == 0) 104*4882a593Smuzhiyun #define jmr3927_dipsw4() ((jmr3927_ioc_reg_in(JMR3927_IOC_DIPSW_ADDR) & 1) == 0) 105*4882a593Smuzhiyun 106*4882a593Smuzhiyun /* 107*4882a593Smuzhiyun * IRQ mappings 108*4882a593Smuzhiyun */ 109*4882a593Smuzhiyun 110*4882a593Smuzhiyun /* These are the virtual IRQ numbers, we divide all IRQ's into 111*4882a593Smuzhiyun * 'spaces', the 'space' determines where and how to enable/disable 112*4882a593Smuzhiyun * that particular IRQ on an JMR machine. Add new 'spaces' as new 113*4882a593Smuzhiyun * IRQ hardware is supported. 114*4882a593Smuzhiyun */ 115*4882a593Smuzhiyun #define JMR3927_NR_IRQ_IRC 16 /* On-Chip IRC */ 116*4882a593Smuzhiyun #define JMR3927_NR_IRQ_IOC 8 /* PCI/MODEM/INT[6:7] */ 117*4882a593Smuzhiyun 118*4882a593Smuzhiyun #define JMR3927_IRQ_IRC TXX9_IRQ_BASE 119*4882a593Smuzhiyun #define JMR3927_IRQ_IOC (JMR3927_IRQ_IRC + JMR3927_NR_IRQ_IRC) 120*4882a593Smuzhiyun #define JMR3927_IRQ_END (JMR3927_IRQ_IOC + JMR3927_NR_IRQ_IOC) 121*4882a593Smuzhiyun 122*4882a593Smuzhiyun #define JMR3927_IRQ_IRC_INT0 (JMR3927_IRQ_IRC + TX3927_IR_INT0) 123*4882a593Smuzhiyun #define JMR3927_IRQ_IRC_INT1 (JMR3927_IRQ_IRC + TX3927_IR_INT1) 124*4882a593Smuzhiyun #define JMR3927_IRQ_IRC_INT2 (JMR3927_IRQ_IRC + TX3927_IR_INT2) 125*4882a593Smuzhiyun #define JMR3927_IRQ_IRC_INT3 (JMR3927_IRQ_IRC + TX3927_IR_INT3) 126*4882a593Smuzhiyun #define JMR3927_IRQ_IRC_INT4 (JMR3927_IRQ_IRC + TX3927_IR_INT4) 127*4882a593Smuzhiyun #define JMR3927_IRQ_IRC_INT5 (JMR3927_IRQ_IRC + TX3927_IR_INT5) 128*4882a593Smuzhiyun #define JMR3927_IRQ_IRC_SIO0 (JMR3927_IRQ_IRC + TX3927_IR_SIO0) 129*4882a593Smuzhiyun #define JMR3927_IRQ_IRC_SIO1 (JMR3927_IRQ_IRC + TX3927_IR_SIO1) 130*4882a593Smuzhiyun #define JMR3927_IRQ_IRC_SIO(ch) (JMR3927_IRQ_IRC + TX3927_IR_SIO(ch)) 131*4882a593Smuzhiyun #define JMR3927_IRQ_IRC_DMA (JMR3927_IRQ_IRC + TX3927_IR_DMA) 132*4882a593Smuzhiyun #define JMR3927_IRQ_IRC_PIO (JMR3927_IRQ_IRC + TX3927_IR_PIO) 133*4882a593Smuzhiyun #define JMR3927_IRQ_IRC_PCI (JMR3927_IRQ_IRC + TX3927_IR_PCI) 134*4882a593Smuzhiyun #define JMR3927_IRQ_IRC_TMR(ch) (JMR3927_IRQ_IRC + TX3927_IR_TMR(ch)) 135*4882a593Smuzhiyun #define JMR3927_IRQ_IOC_PCIA (JMR3927_IRQ_IOC + JMR3927_IOC_INTB_PCIA) 136*4882a593Smuzhiyun #define JMR3927_IRQ_IOC_PCIB (JMR3927_IRQ_IOC + JMR3927_IOC_INTB_PCIB) 137*4882a593Smuzhiyun #define JMR3927_IRQ_IOC_PCIC (JMR3927_IRQ_IOC + JMR3927_IOC_INTB_PCIC) 138*4882a593Smuzhiyun #define JMR3927_IRQ_IOC_PCID (JMR3927_IRQ_IOC + JMR3927_IOC_INTB_PCID) 139*4882a593Smuzhiyun #define JMR3927_IRQ_IOC_MODEM (JMR3927_IRQ_IOC + JMR3927_IOC_INTB_MODEM) 140*4882a593Smuzhiyun #define JMR3927_IRQ_IOC_INT6 (JMR3927_IRQ_IOC + JMR3927_IOC_INTB_INT6) 141*4882a593Smuzhiyun #define JMR3927_IRQ_IOC_INT7 (JMR3927_IRQ_IOC + JMR3927_IOC_INTB_INT7) 142*4882a593Smuzhiyun #define JMR3927_IRQ_IOC_SOFT (JMR3927_IRQ_IOC + JMR3927_IOC_INTB_SOFT) 143*4882a593Smuzhiyun 144*4882a593Smuzhiyun /* IOC (PCI, MODEM) */ 145*4882a593Smuzhiyun #define JMR3927_IRQ_IOCINT JMR3927_IRQ_IRC_INT1 146*4882a593Smuzhiyun /* TC35815 100M Ether (JMR-TX3912:JPW4:2-3 Short) */ 147*4882a593Smuzhiyun #define JMR3927_IRQ_ETHER0 JMR3927_IRQ_IRC_INT3 148*4882a593Smuzhiyun 149*4882a593Smuzhiyun /* Clocks */ 150*4882a593Smuzhiyun #define JMR3927_CORECLK 132710400 /* 132.7MHz */ 151*4882a593Smuzhiyun 152*4882a593Smuzhiyun /* 153*4882a593Smuzhiyun * TX3927 Pin Configuration: 154*4882a593Smuzhiyun * 155*4882a593Smuzhiyun * PCFG bits Avail Dead 156*4882a593Smuzhiyun * SELSIO[1:0]:11 RXD[1:0], TXD[1:0] PIO[6:3] 157*4882a593Smuzhiyun * SELSIOC[0]:1 CTS[0], RTS[0] INT[5:4] 158*4882a593Smuzhiyun * SELSIOC[1]:0,SELDSF:0, GSDAO[0],GPCST[3] CTS[1], RTS[1],DSF, 159*4882a593Smuzhiyun * GDBGE* PIO[2:1] 160*4882a593Smuzhiyun * SELDMA[2]:1 DMAREQ[2],DMAACK[2] PIO[13:12] 161*4882a593Smuzhiyun * SELTMR[2:0]:000 TIMER[1:0] 162*4882a593Smuzhiyun * SELCS:0,SELDMA[1]:0 PIO[11;10] SDCS_CE[7:6], 163*4882a593Smuzhiyun * DMAREQ[1],DMAACK[1] 164*4882a593Smuzhiyun * SELDMA[0]:1 DMAREQ[0],DMAACK[0] PIO[9:8] 165*4882a593Smuzhiyun * SELDMA[3]:1 DMAREQ[3],DMAACK[3] PIO[15:14] 166*4882a593Smuzhiyun * SELDONE:1 DMADONE PIO[7] 167*4882a593Smuzhiyun * 168*4882a593Smuzhiyun * Usable pins are: 169*4882a593Smuzhiyun * RXD[1;0],TXD[1:0],CTS[0],RTS[0], 170*4882a593Smuzhiyun * DMAREQ[0,2,3],DMAACK[0,2,3],DMADONE,PIO[0,10,11] 171*4882a593Smuzhiyun * INT[3:0] 172*4882a593Smuzhiyun */ 173*4882a593Smuzhiyun 174*4882a593Smuzhiyun void jmr3927_prom_init(void); 175*4882a593Smuzhiyun void jmr3927_irq_setup(void); 176*4882a593Smuzhiyun struct pci_dev; 177*4882a593Smuzhiyun int jmr3927_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin); 178*4882a593Smuzhiyun 179*4882a593Smuzhiyun #endif /* __ASM_TXX9_JMR3927_H */ 180